Java/Lucene 在多个字段中搜索子字符串

标签 java search lucene

我正在使用 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);

最佳答案

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

如果要在查询中使用,请使用PhraseQuery。另请参阅http://lucene.apache.org/core/old_versioned_docs/versions/3_1_0/api/core/org/apache/lucene/search/PhraseQuery.html

关于Java/Lucene 在多个字段中搜索子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13933241/

相关文章:

Delphi 搜索编辑组件

solr - 不能在 Solr 中使用 ICUTokenizerFactory

java - 如何从sharedPreference文件中获取键和值

java - MyBatis - 使用自定义对象调用存储过程

java - Groovy/Java 可以隐式转换为子类(或具有自定义隐式转换)吗?

javascript - 输入 "?"后如何将搜索词重定向到新页面?

php - 搜索整个表? PHP MySQL

java - OpenJPA:必须在 ConnectionDriverName 属性中指定 JDBC 驱动程序或数据源类名称

java - java中比较字符串的索引

search - ElasticSearch - 更新或新索引?