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");