如何在lucene中为空格分隔的名称创建模糊搜索?

时间:2014-07-31 14:46:37

标签: java lucene

我想构建一个lucene索引,其中每个文档值将有4-5个单词。

然后我想对它进行某种模糊搜索。但首先,我只想尝试匹配一个简单的2字mest短语。但它不起作用。以下示例有什么问题?

Directory index = new RAMDirectory();
StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_4_9);
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_4_9, analyzer);
IndexWriter w = new IndexWriter(index, config);
Document doc = new Document();
doc.add(new TextField("name", "TEST ASD", Field.Store.YES));
w.addDocument(doc);
w.close();

FuzzyQuery q = new FuzzyQuery(new Term("name", "test asd"));
IndexSearcher searcher = new IndexSearcher(DirectoryReader.open(index));
TopScoreDocCollector collector = TopScoreDocCollector.create(1, true); //only get the top scored doc
searcher.search(q, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
assertTrue(hits.length > 0); //FAILS

1 个答案:

答案 0 :(得分:1)

如果你想在exach两个术语上匹配 - 你可以使用TextField,但是使用KeywordAnalyzer(http://lucene.apache.org/core/4_9_0/analyzers-common/org/apache/lucene/analysis/core/KeywordAnalyzer.html)(它也会保存确切的数据并且不会对它进行标记化)