検索結果に特殊な lucene 文字が含まれている lucene.net で全文検索を行う際に問題が発生しました。
Lucene ドキュメントに「content」という名前のフィールドがあります。このフィールドは次のように作成され、索引付けされたドキュメントのコンテンツが含まれます。
document.Add(new Field("content", fulltext, Field.Store.YES, Field.Index.ANALYZED));
インデックスの作成には、Standardanalyzer を使用しています。
インデックスのクエリには、次のコードを使用しています。
var queryParser = new QueryParser(Lucene.Net.Util.Version.LUCENE_29, "content", analayzer);
queryParser.SetAllowLeadingWildcard(true);
queryParser.SetMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE);
Query fullTextQuery = queryParser.Parse(queryString);
クエリは、IndexSearcher から結果を取得するために使用される BooleanQuery に追加されます。コードはクエリの 99% で正常に機能するため、残りのコードはそれほど重要ではないと思います。また、インデックスのクエリに StandardAnalyzer を使用しています。
ここに問題があります。ドキュメントの「コンテンツ」フィールドに、「-」で区切られたテキストが含まれていることがあります。
一部のテキスト 一部のテキスト セレクターレバー 一部のテキスト 一部のテキスト
「セレクターレバー」を使用して全文検索(正確なフレーズ)を行っているとき。クエリは次のようになります。
内容:「セレクターレバー」
ここでの問題は、上記のテキストを含むドキュメントも見つかることですが、2 つの単語が空白ではなく「-」で区切られているため、見つからないはずです。
アナライザーと、「-」が lucene の特殊文字であるという事実に関係があると思います。
誰かがこの問題を解決するのを手伝ってくれるかもしれません。
前もって感謝します マーティン