1

全文検索で空白のある文章を検索したい。

例:Tom is a very good boy in class. 「非常に良い」というキーワードで検索したい。

インデックスの作成/検索に空白トークナイザーを使用しています。ただし、スペースで区切られているとキーワードが見つかりません。

コード:

 Query searchItemQuery = new WildcardQuery(new Term(string-field-name, searchkeyword.ToLower()));

分割してみましたが、うまくいきません。

この問題の解決策を提案してくれる人はいますか?

ありがとう、ビジェイ

4

1 に答える 1

2

トークン化された文字列を使用しているため、すべての単語は個別の用語です。複数の用語で構成されるフレーズを検索するには、WildcardQuery の代わりに PhraseQuery を使用する必要があります。このような:

PhraseQuery phraseQuery = new PhraseQuery();
phraseQuery.Add(new Term(string-field-name, "very"));
phraseQuery.Add(new Term(string-field-name, "good"));

また、ワイルドカード クエリを使用していることにも注意してください。フレーズ クエリのワイルドカードは少し複雑です。詳細については、この投稿を確認してください: Lucene - フレーズ内のワイルドカード

最後に、クエリを手動で作成する代わりに、QueryParser の使用を検討することをお勧めします。

于 2012-09-12T08:23:00.327 に答える