如何为短语查询搜索设置Lucene标准分析器?

如何为短语查询搜索设置Lucene标准分析器?,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, Fiel

我从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应该返回标题字段的所有查询,标题字段包含“一”和“二”,两个单词之间的距离不超过2个单词。但是我没有得到任何结果,因为我没有使用StandardAnalyzer进行搜索。那么如何在Lucene中进行近距离搜索呢?以下queryParser是否允许近距离搜索(使用tilde?)


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

通常,建议使用相同的分析仪进行索引和搜索

比尔

克里斯

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