我正在使用Lucene 6.0.0,并猜测我的问题可以通过FuzzuQuery
来解决,前提是Lucene支持editDistance > 2
。
我使用的是普通的Java Lucene API(Nor 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等?
答案 0 :(得分:1)
我能够通过使用 - NGramTokenizer
在lucene中使用N-Gram索引技术来解决这个问题我选择minGram
&根据我的要求maxGram
值,我已准备好子字符串作为索引,我可以查询这些术语的索引。
它大大增加了生成和索引术语的数量,但解决了我的问题。