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

标签 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

最佳答案

如果您想在两个词上进行匹配 - 您可以使用 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/

相关文章:

java - 多次写入输出流管道错误 - java

java - 为什么 Google Drive getExportLinks 返回 null?

c# - 实现接口(interface)的开销

java - 优化 Solr 搜索,获得精确匹配?

更像这样的 solr 获得分组结果

java - jProgressBar 带有用于数据库数据插入的线程

java - JPanels 出现在我创建的每个 GUI 上

sharepoint - 我可以在不使用 Lucene 连接器框架的情况下将 Solr 与 Sharepoint 集成吗

java - 如何使用字节数组作为 Lucene 索引字段?

elasticsearch - 空字段对Lucene索引有害吗?