Solr模糊搜索奇案
我正在使用复杂短语查询实现solr模糊搜索。 但我正在分阶段处理一个weired案件:Solr模糊搜索奇案,solr,lucene,fuzzy-search,Solr,Lucene,Fuzzy Search,我正在使用复杂短语查询实现solr模糊搜索。 但我正在分阶段处理一个weired案件: q={!complexprase}名称:“woo~1 grou~2”return“wood group”。 q={!complexprase}名称:“woo~1 gro~2”不返回“木材组”。 虽然gro和团队之间的距离是2 正在搜索此查询: q={!complexprase}name:“Anderso~1 interest~2”返回“Anderson interest”。 利益和利益之间的距离和集团和集团是
q={!complexprase}名称:“woo~1 grou~2”
return“wood group”。
q={!complexprase}名称:“woo~1 gro~2”
不返回“木材组”。
虽然gro和团队之间的距离是2
正在搜索此查询:
q={!complexprase}name:“Anderso~1 interest~2”
返回“Anderson interest”。
利益和利益之间的距离和集团和集团是一样的
知道原因吗?我相信您在查询重写方面遇到了问题 在Lucene中,任何多术语查询(模糊查询、前缀查询等)都会被扩展为与其匹配的精确术语。但是,通过这种方式可以生成的术语数量是最大的,因此在重写查询时,它将尝试在该限制内选择最佳的术语。我怀疑
gro~2
的匹配项太多了
也许您会觉得奇怪,因为有这么多匹配项,所以无法将它们全部合并到查询中。看起来您正在尝试搜索以gro开头的单词,并且在末尾加上最多两个字母。会有多少人?但那不是你要找的。模糊查询基于levenshtein距离。该术语的匹配项包括:
——以g开头的三个字母的单词g\uuu
——三个字母的单词,中间有一个r\u r\u
——三个字母的单词,末尾有一个o\uuuo
——任何以gr开头的四个字母的单词gr\uu
- 等等
如果您确实只想匹配以“gro”开头的术语,请使用前缀查询:
“woo*gro*”
如果您想实际使用模糊查询进行搜索,包括上面看到的可能匹配项列表,您可以在您的数据库中放大maxbooleansclauses
1024
我相信您在查询重写方面遇到了问题
在Lucene中,任何多术语查询(模糊查询、前缀查询等)都会被扩展为与其匹配的精确术语。但是,通过这种方式可以生成的术语数量是最大的,因此在重写查询时,它将尝试在该限制内选择最佳的术语。我怀疑gro~2
的匹配项太多了
也许您会觉得奇怪,因为有这么多匹配项,所以无法将它们全部合并到查询中。看起来您正在尝试搜索以gro开头的单词,并且在末尾加上最多两个字母。会有多少人?但那不是你要找的。模糊查询基于levenshtein距离。该术语的匹配项包括:
——以g开头的三个字母的单词g\uuu
——三个字母的单词,中间有一个r\u r\u
——三个字母的单词,末尾有一个o\uuuo
——任何以gr开头的四个字母的单词gr\uu
- 等等
如果您确实只想匹配以“gro”开头的术语,请使用前缀查询:
“woo*gro*”
如果您想实际使用模糊查询进行搜索,包括上面看到的可能匹配项列表,您可以在您的数据库中放大maxbooleansclauses
1024
我相信您在查询重写方面遇到了问题
在Lucene中,任何多术语查询(模糊查询、前缀查询等)都会被扩展为与其匹配的精确术语。但是,通过这种方式可以生成的术语数量是最大的,因此在重写查询时,它将尝试在该限制内选择最佳的术语。我怀疑gro~2
的匹配项太多了
也许您会觉得奇怪,因为有这么多匹配项,所以无法将它们全部合并到查询中。看起来您正在尝试搜索以gro开头的单词,并且在末尾加上最多两个字母。会有多少人?但那不是你要找的。模糊查询基于levenshtein距离。该术语的匹配项包括:
——以g开头的三个字母的单词g\uuu
——三个字母的单词,中间有一个r\u r\u
——三个字母的单词,末尾有一个o\uuuo
——任何以gr开头的四个字母的单词gr\uu
- 等等
如果您确实只想匹配以“gro”开头的术语,请使用前缀查询:
“woo*gro*”
如果您想实际使用模糊查询进行搜索,包括上面看到的可能匹配项列表,您可以在您的数据库中放大maxbooleansclauses
1024
我相信您在查询重写方面遇到了问题
在Lucene中,任何多术语查询(模糊查询、前缀查询等)都会被扩展为与其匹配的精确术语。但是,通过这种方式可以生成的术语数量是最大的,因此在重写查询时,它将尝试在该限制内选择最佳的术语。我怀疑gro~2
的匹配项太多了
也许您会觉得奇怪,因为有这么多匹配项,所以无法将它们全部合并到查询中。看起来您正在尝试搜索单词beg
<query>
<maxBooleanClauses>1024</maxBooleanClauses>