【发布时间】:2017-05-29 18:12:09
【问题描述】:
我使用的是 Lucene 6.0.0,我猜我的问题可以通过 FuzzuQuery 解决,前提是 Lucene 支持 editDistance > 2。
我使用的是普通的 Java Lucene API(也不是 SOLR 或 ElasticSearch)。
假设非标记化的索引文本字段是 - This is Ram's House 并且当我使用 Ram 或 ram 搜索时,我应该得到 This is Ram's House 作为匹配项,因为从某种意义上说,三个连续字符匹配 - 这是一种具有两个以上编辑距离的模糊匹配要求。
使用My name is Ram and my brother's name is Shyam 搜索也应该给我This is Ram's House 作为匹配项。
最长公共子串中的最小字符数可能有限制,目前我们应该可以限制为三个。
根据我们的分析,有一个业务问题可以通过这种方式解决。
Lucene 可以吗?
是否可以使用任何其他工具 - 例如 SOLR、ElasticSearch 等?
【问题讨论】:
-
您的两个示例都应该可以在不使用 FuzzyQueries 的情况下进行典型分析。你遇到了什么问题?
-
什么意思?我正在使用
StandardAnalyzer,而不是在索引时标记文本字段。我没有与FuzzyQuery、WildCardQuery、TermQuery或PhraseQuery匹配,所以我不确定索引端需要更改什么以及搜索端使用哪种查询。 -
对,当然不是,它没有被标记化。那么...为什么不标记该字段?
-
因为我正在寻找可能分布在多个单词中的 N 个连续字符,例如当我为
This is Ram's House搜索sram时,即使s是is的一部分,我也应该得到匹配。我将用我尝试过的一些代码来更新我的问题。我想,如果我进行标记,每个单词都会有不同的术语。 -
另外,我的索引数据可能全是数字(没有任何字母),没有任何空格。
标签: java elasticsearch solr lucene