私はウェブサイトのリストにインデックスを作成しており、URLはウェブサイトのプロパティの1つです(名前、場所は他のものです)。私はurl/sを使ってウェブサイトを検索したい。私はこのプロパティを分析したくないし、完全なURL(キーワード)を検索したいと思う。だから私のコードはこのように見えます。Index = trueの属性キーワードは検索で失敗します
[Keyword(index = true)]
public IEnumerable<string> Urls {get; set;}
インデックスが作成されるとマッピングは、以下の、 "のURL" のようになります。{ "タイプ": "キーワード"}しかし
を、私はURLを検索する場合、「WWWを言います.yahoo.com "の場合、結果は返されません。 2つの質問:
a)なぜドキュメントを返さないのですか?それは簡単なキーワード検索なので、一致を返す必要があります。
b)デフォルトのアナライザを使用してインデックスを作成するのと同じことをしていますか?私の意見では、分析しないキーワードの検索は「明示的」で、おそらくより高速です。
ありがとうございました。
PS:私の検索コードでは、Nest(v5.0.0.0)を次のように使用しています。
public SearchResult<Website> Search(string qry, int page, int pageSize)
{
var result = client.Search<Website>(x => x.Query(q => q.MultiMatch(mp => mp.Query(qry).Fields(f => f.Fields(f1 => f1.Name, f2 => f2.Urls, f3 => f3.Locations)))).Size(pageSize));
return new SearchResult<Website>
{
Results = result.Documents
};
}
あなたはどのように検索していますか、あなたがやっている検索リクエストを表示できますか?私は、クエリ入力の分析を実行するフルテキストクエリを使用していると思われる –
検索コードが追加されました。私はあなたが正しいと思います。私の検索コードが解決する低レベルのクエリはおそらくフルテキストを使用しています。しかし、あなたの確認を待つでしょう。どのような低レベルのクエリがESに送られたかを正確に見る方法はありますか?ありがとう。 – Redzon