模糊搜索的solr语法是:
q~n,其中 q 是查询词,n 是编辑距离(例如 1-3)。
前缀搜索的语法是:
q* 其中 q 是查询词,* 表示通配符。
像 q~n* 这样组合两者(甚至 n=1)会产生副作用,即几乎所有内容都匹配 (出于某种原因,我仍然需要找出)。
像 q*~n 这样组合两者(甚至 n=1)会产生副作用,即查询执行时只会执行前缀搜索。
在我们的用例中,我们需要根据索引中存储的历史查询提供建议。当你输入拼写错误的术语时,谷歌也会做同样的事情,这是一个很好的建议解决方案。 问题是,我们可以提供以相同索引开头的建议,也可以提供一些定义为 Levenshtein Distance <= 3 的建议,这在长期来看是不切实际的。
现在,我知道有一个类似的question 3年前问过,解决方案说不可能用solr语法表达,整个案例没有任何特别的意义,但在我看来这是有道理的,组合起来将是解决实际问题的完美解决方案。
最佳答案
不是经过测试的解决方案,您是否考虑过使用它? q* OR q~1
例如name:S* OR name: S~1
,
更大的例子:name:Samson~3 OR name:Samson*
返回:<str name="name">Samsung SpinPoint P120 SP2514N - hard drive - 250 GB - ATA-133</str></doc>
关于solr - 如何在 Solr 4.0 中结合前缀搜索和模糊搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21258531/