我正在使用 Lucene 6.0.0,并且猜测我的问题可以通过 FuzzuQuery
解决,只要 editDistance > 2
在 Lucene 中得到支持。
我正在使用普通的 Java Lucene API(也不是 SOLR 或 ElasticSearch)。
假设归档的非标记化索引文本是 - This is Ram's House
,当我使用 Ram
或 ram
搜索时,我应该得到This is Ram's House
作为匹配,因为在某种意义上三个连续字符匹配 - 这是一种具有超过两个编辑距离的模糊匹配要求。
使用我的名字是 Ram,我兄弟的名字是 Shyam
进行搜索也应该会得到 This is Ram's House
作为匹配项。
最长公共(public)子字符串中的最小字符数可能有限制,目前我们应该可以将三个字符作为限制。
根据我们的分析,有一个业务问题可以通过这种方式解决。
Lucene 可以吗?
可以使用任何其他工具 - 例如 SOLR、ElasticSearch 等吗?
最佳答案
我可以通过在 lucene 中使用 N-Gram 索引技术来解决这个问题 - NGramTokenizer
我根据我的要求选择 minGram
和 maxGram
值,并且我已准备好索引的子字符串,我可以查询这些术语的索引。
它大大增加了生成和索引术语的数量,但解决了我的问题。
关于java - Lucene 搜索最长公共(public)子串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43734252/