Name
とDescription
フィールドのドキュメントを持つ。 Name
持つ多くの重量Description
検索をより自然にするには?
私はこのようなスコアが注文した文書を取得したい:
- 完全一致
- 部分一致
- ファジーマッチ
- ファジィ部分一致
- 近接用語スコアが高くなります。
私は私が望むものに似た何かを得るために、この手術をやっている:
public Task<DocumentSearchResult<T>> SearchWithFuzzyAsync<T>(string searchTerm, SearchParameters sp) where T: class
{
sp.SearchMode = SearchMode.All;
sp.QueryType = QueryType.Full;
searchTerm = Sanitize(searchTerm).Trim();
var keywordTrimmedFuzzy = searchTerm.Replace(" ", "~ ");
if (string.IsNullOrWhiteSpace(searchTerm))
{
return Task.FromResult(new DocumentSearchResult<T>());
}
var searchTerms = $"({searchTerm})
|| ({keywordTrimmedFuzzy}~)
|| ({keywordTrimmedFuzzy}*)^0.8";
return indexClient.Documents.SearchAsync<T>(searchTerms, sp);
は、私が何かをしないのですか私はいくつかのまともな結果を得るために事のこのタイプを構築する必要がありますか?
このアプローチで見られる問題は、コードを管理しない限り、ユーザーに検索エンジンを使用させることができないということです(使用するオプションや高度な構文など)。代わりにグラグラ検索文字列を作成する
sp.UseFuzzySearch = true;
sp.UsePartialMatch = true;
sp.ProximityTreshold = 4;
indexClient.Documents.SearchAsync<T>(term, sp);
:あなたのような何かを行うことができれば
は、それが簡単ではないでしょうか?私は何が欠けていますか?
私はスコアリングプロファイルを使用しています(言及するのを忘れました)。あなたの注釈が明確でないのは、ここで '({keywordTrimmedFuzzy} *)^ 0.8'を使用している'^0.8 'が結果に影響を及ぼしているかどうかです。 –
私は、この機能を要求していない簡単なテストの他に、紺碧の検索を使用している人を想像するのは難しいと思う。もしそれがなければ、タイトルが 'Bart'で、' Bar'や 'Bart *'を検索してもそのアイテムは返されません。私はなぜ最後のものがバグではなく設計によるのか分からない。 –
https://feedback.azure.com/forums/263029-azure-search/suggestions/11112582-support-prefix-matching-for-suggestions 13投票があり、同様の問題を指摘しています。 –