你好,stackOverflowers
我在Solr文档集合中有一个字段,名为names_txt --这是一个multiValue="true“字段。
此字段包含文档中关联人员的所有名称。
我希望既能做模糊搜索,又能同时限制各词之间的匹配项数。
查询
names_txt:("markus foss"~2)将返回所有文件,在那里您可以找到术语markus和foss,在它们之间有最多2个术语。
但是,当我以模糊的方式搜索,并且想要指定匹配之间的最大词条数时,我无法正确地理解语法。
查询:
names_txt:(markus~0.7 foss~0.7)这确实有效,但返回假正误,因为它将返回一个文档,其中一个值为"markus“,另一个值为"foss somethingElse”。
我想写的是:
(markus~0.7 foss~0.7)~2有谁能解决我的问题吗?
发布于 2015-04-30 08:51:33
由于在一个查询项中,Solr可以处理单词距离限制或模糊搜索约束,因此我们需要两个术语:
names_txt:("markus foss"~2) AND names_txt:(markus~0.7 foss~0.7)请注意,用浮点数量化模糊度是不可取的。在内部,lucene将float数字转换为0到2之间的int,所以我们应该使用这个整数(Damereau )从搜索词开始编辑距离。因此,我最后的建议是:
names_txt:("markus foss"~2) AND names_txt:(markus~1 foss~1)(对于那些感兴趣的人,可以在float的末尾找到不推荐的、有点古怪的函数,该函数将相似性int转换为编辑距离int。)
https://stackoverflow.com/questions/11972643
复制相似问题