2

私はLucence V3.1とJava 1.6を使用しています。

複数フィールドのフレーズ検索を可能にするコード (java と lucene を使用) を作成しようとしています。ただし、フレーズがフィールドの値と完全に一致することは望ましくありません。私が望むのは、フレーズが実際にフィールド内の値の部分文字列であるかどうかを確認することです。私は次のことを試しましたが、まだ運がありません:

IndexReader reader = IndexReader.Open("<lucene dir>");
Searcher searcher = new IndexSearcher(reader);

BooleanQuery booleanQuery = new BooleanQuery();
Query query1 = new TermQuery(new Term("<field-name>", "<text>"));
booleanQuery.add(query1, BooleanClause.Occur.SHOULD);
Hits hits = searcher.Search(booleanQuery);
4

2 に答える 2

2

引用符を使用するだけですか?「これは部分文字列です」のように。これは確かにルセンで動作しますQueryParser

で使用する場合は、 をQuery使用しPhraseQueryます。http://lucene.apache.org/core/old_versioned_docs/versions/3_1_0/api/core/org/apache/lucene/search/PhraseQuery.htmlも参照してください。

于 2012-12-18T12:53:02.933 に答える
1

インデックス作成中にどのアナライザーを使用しましたか??

標準アナライザーを使用していれば、このような問題に直面することはありません...

PS: インデックス作成と検索の両方に常に同じアナライザーを使用する

于 2012-12-19T07:28:46.897 に答える