我想建立一个 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
最佳答案
如果您想在两个词上进行匹配 - 您可以使用 TextField,但使用 KeywordAnalyzer ( http://lucene.apache.org/core/4_9_0/analyzers-common/org/apache/lucene/analysis/core/KeywordAnalyzer.html )(它也会保存准确的数据并且不会对其进行标记化)
关于java - 如何在 lucene 中创建由空格分隔的名称的模糊搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25061970/