検索結果に特殊なルーネン文字が含まれているlucene.netでフルテキスト検索を実行する際に問題が発生しました。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の特殊文字です。
誰かがこの問題を解決するのに役立つかもしれません。事前 で
おかげマーティン
4年後の質問です。標準アナライザは句読点を削除するので、検索の際には、句読点も削除されます。これにより、強調表示され、単語の最後/最初の句読点を無視します。 WhitespaceAnalyzerを使用して検索結果を制限したいとは思わない。強調表示されていない単語の最後の句読点を克服する方法に関するアイデアはありますか? – JenonD
@JenonD私はあなたを助けることができないと思っています。私はあなたが好きなら、新しい質問を投稿し、これを参照することをお勧めします。 – smerchek