【问题标题】:How to set Lucene standard analyzer for PhraseQuery search?如何为 PhraseQuery 搜索设置 Lucene 标准分析器?
【发布时间】:2011-08-07 15:07:04
【问题描述】:

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 应该返回所有对包含“one”和“two”的标题字段的查询,这些查询在 2 个单词内。但我没有得到任何结果,因为我没有使用 StandardAnalyzer 进行搜索。那么如何在 Lucene 中进行邻近搜索呢?以下 queryParser 是否允许邻近搜索(使用波浪号?)

QueryParser queryParser = new QueryParser("title",new StandardAnalyzer());
Query query = queryParser.parse("test");

【问题讨论】:

    标签: lucene


    【解决方案1】:

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

    一般来说,始终建议使用相同的分析器进行索引和搜索。

    BR,

    克里斯

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-19
      相关资源
      最近更新 更多