2011-04-18 41 views
4

我從各種教程在那裏上的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的應返回的所有查詢包含「一」和「二」中的標題字段彼此2個字。但是我沒有得到任何結果,因爲我沒有使用StandardAnalyzer進行搜索。那麼如何在Lucene中進行鄰近搜索呢?請問以下的QueryParser允許鄰近搜索(使用波浪ε)

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

回答

3

是,當您分析使用的QueryParser查詢,你將能夠做到接近搜索。

總的來說,總是建議使用相同的分析儀進行索引和搜索。

BR,

克里斯

相關問題