Live Search APIが正式版(1.0)になってからちょうど1年が経ったところみたいですね。現在はSOAPを通信に利用していますが、今後はRESTのWebサービスも登場してくるようです。
さて、Live Search APIでは検索だけではなく単語の修正候補も取得することができます。英語ではspelling suggestionsと表現されていますが、日本語にも対応しています。例えばLive Searchで「窓の森」と入力すると「窓の杜」が修正候補として表示されます。
この修正候補が表示されるかどうかはカルチャ情報が関係しています。Live SearchのURLのクエリにmkt=ja-jpが付いている場合に「foest」と検索しても修正候補は表示されませんが、mkt=en-usの場合は「forest」と修正候補が現れます。
修正候補をLive Search APIで取得する場合は、SourceRequestオブジェクトのSourceプロパティにSourceType.Spelling指定します。修正候補があった場合は、ResultオブジェクトのTitleプロパティに格納されて返ってきます。カルチャ情報は、SearchRequestオブジェクトのCultureInfoプロパティに指定します。
修正候補を表示するコードを1行で示します。候補がないと例外がスローされますが。
Console.WriteLine((New MSNSearchService).Search(New SearchRequest With {.AppID = "Your Application ID", .Query = "窓の森", .CultureInfo = "ja-JP", .Requests = New SourceRequest() {New SourceRequest With {.Source = SourceType.Spelling, .Count = 1, .ResultFields = ResultFieldMask.Title}}}).Responses(0).Results(0).Title)
オブジェクト初期化子すごい! という話題でした。