如何设置Lucene标准分析器进行PhraseQuery搜索?

| 我对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 克里斯     

要回复问题请先登录注册