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

只使用引号?就像“这是子字符串”。这肯定适用于 luceneQueryParser

如果要在 a 中Query使用 a 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 回答