我正在使用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);
答案 0 :(得分:2)
只需使用报价?就像“这是子串”。这肯定适用于lucene QueryParser
如果要在Query
中使用PhraseQuery
。另请参阅http://lucene.apache.org/core/old_versioned_docs/versions/3_1_0/api/core/org/apache/lucene/search/PhraseQuery.html
答案 1 :(得分:1)
索引时使用的分析器??
如果您使用标准分析器,则不应该遇到这样的问题......
PS:始终使用相同的分析器进行索引和搜索