solr - 如何在 Solr 4.0 中结合前缀搜索和模糊搜索

标签 solr lucene prefix solr4 fuzzy-search

模糊搜索的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/

相关文章:

Solr/Lucene 最好的文件系统

java - 使用 Lucene 使用时间戳进行地理空间搜索

mysql - 在 MySQL 中向具有特定前缀的表授予权限

namespaces - 什么是下一代门的命名空间前缀、源类型 URI、OSLC 中的链接属性?

string - 算法——基于重复因子的字符串匹配

elasticsearch - 单机性能上的多个碎片

solr - SOLR:按字段的字母顺序排列结果

Java、Lucene : Case insensitive search not working with WildCard query

java - Solr 网络管理错误 500

java - hibernate 搜索 : how to configure index for JPA entity dynamically?