1

私は最近、職場の社内プロジェクトのために lucene.net をいじり始めました。lucene.net を使用して一種のオートコンプリートを作成しようとしています。私のインデックスには表示名が保存されており、James* などのワイルドカード検索を実行すると正常に動作します。

問題は、James Bon* などの単語の間にスペースが入る場合にあるようです。最初の単語を忘れて、Bon との一致を試み始めるようです。

私が何か間違っているかどうかはわかりませんが、いくつかの異なるアナライザーを使用してみましたが、うまくいきませんでした.

誰かが私を正しい軌道に乗せることができるアイデアを持っていますか?

2012/11/28

自分のプロジェクトをもう一度見てみると、MultiFieldQueryParser を使用して複数のフィールドを検索しようとしていることに気付きました。DefaultOperator を変更するという提案を試みましたが、うまくいきませんでした。

var analyzer = new StandardAnalyzer(Lucene.Net.Util.Version.LUCENE_30);
var mparser = new MultiFieldQueryParser(Lucene.Net.Util.Version.LUCENE_30, new string[] { "displayname", "company", "email" }, analyzer);
4

2 に答える 2

2

デフォルトでは、Lucene.net はOR検索ではなく、提供された用語で検索を実行しANDます。次のコードを使用して変更します。

parser.SetOperator(QueryParser.DEFAULT_OPERATOR_AND);
于 2012-11-27T22:03:54.870 に答える