我有一个案例,我希望像这样匹配:
查询:abcd efgh ijkl mnop
在此之后,查询受到NGram标记器的影响,每个单词被分成2克标记。
例如)查询分为,
AB,BC,CD,EF,FG,GH,IJ,JK,KL,MN,没有,同
现在,在匹配时,我希望为单词中的标记自定义最小匹配。
我的意思是,默认情况下,当对应于单词的任何一个标记与索引文档匹配时,mm = 1,将返回该索引文档。如果我给mm = 2,那么任何2个单词中的任何一个标记都需要匹配要返回的索引文档。
但我想要的是:只有当任何'm'标记符合mm = num-num时才返回文档。
例如)我希望从至少3个单词中选择至少2个令牌,以便选择索引文档。
似乎Lucene的IndexSearcher做了这个核心部分。我是否需要更改代码或任何其他可以执行上述操作的配置?
提前致谢...
答案 0 :(得分:1)
这不完全是你所要求的,但我猜你的根本问题是“我怎样才能确保模糊搜索只返回与原始查询'接近'的东西?”
语法foo~.8
执行此操作 - 请参阅the docs。基本上,.8是编辑(Levenstein)距离除以单词长度的度量。
如果你想坚持计算必须匹配的对的想法,你可以做一些数学计算,确定最小的levenstein距离是什么。