lucene - 如何为 PhraseQuery 搜索设置 Lucene 标准分析器?

标签 lucene

我从 Lucene 上的各种教程中得到的印象是,如果我执行以下操作:

IndexWriter writer = new IndexWriter(indexPath, new StandardAnalyzer(Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.LIMITED);

Document doc = new Document();
Field title = new Field("title", titlefield, Field.Store.YES, Field.Index.ANALYZED);
doc.add(title);
writer.addDocument(doc);
writer.optimize();
writer.close();

IndexReader ireader = IndexReader.open(indexPath);
IndexSearcher indexsearcher = new IndexSearcher(ireader);

Term term1 = new Term("title", "one");
Term term2 = new Term("title", "two");
PhraseQuery query = new PhraseQuery();
query.add(term1);
query.add(term2);
query.setSlop(2);

Lucene 应该返回包含“一”和“二”两个字之内的标题字段的所有查询。但我没有得到任何结果,因为我没有使用 StandardAnalyzer 进行搜索。那么如何在 Lucene 中进行邻近搜索呢?以下 queryParser 是否允许邻近搜索(使用波浪号?)
QueryParser queryParser = new QueryParser("title",new StandardAnalyzer());
Query query = queryParser.parse("test");

最佳答案

是的,当您使用 QueryParser 解析查询时,您将能够进行邻近搜索。

通常,始终建议使用相同的分析器进行索引和搜索。

BR,

克里斯

关于lucene - 如何为 PhraseQuery 搜索设置 Lucene 标准分析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5699062/

相关文章:

java - 使用空格分析器搜索关键字

java - Lucene 字段不可搜索

java - 如何使用 Hibernate Lucene 搜索对挪威语字符(Æ、Ø 和 Å)进行不区分大小写的排序?

java - 在 Java EE 服务器中存储企业应用程序的状态(例如用于 lucene 索引)

java - 使用 Lucene 将整个数据库索引到单个文档中

php - 如何使用 IN 查询在 solr join 中执行多个条件?

java - 当库使用 gradle 使用 SPI 时,如何正确输出 META-INF?

java - 使用 Lucene 和 Java 标记化、删除停用词

solr - 从 DocsAndPositionsEnum 检索所有术语位置

lucene - 如何使用Lucene库提取n-gram?