【问题标题】:How to combine Prefix and Fuzzy Search in Solr 4.0如何在 Solr 4.0 中结合前缀和模糊搜索
【发布时间】:2014-01-21 12:44:20
【问题描述】:

模糊搜索的solr语法是:

q~n 其中 q 是查询词,n 是 Levenshtein 距离(例如 1-3)。

前缀搜索的语法是:

q* 其中 q 是查询词,* 表示通配符。

像 q~n* (甚至 n=1)这样的组合会产生副作用,即几乎所有内容都匹配 (出于某种原因,我仍然需要找出原因)。

像 q*~n (甚至 n=1)这样的组合会产生副作用,即查询会执行,因为它只是前缀搜索。

在我们的用例中,我们需要根据索引中存储的历史查询提供建议。当您输入拼写错误的术语时,该接缝也将成为谷歌所做的事情,这是一个很好的建议解决方案。 问题是,我们既可以提供以相同索引开头的建议,也可以提供一些具有定义的 Levenshtein 距离

现在,我知道 3 年前有人问过类似的question,其中的解决方案说它不可能用 solr 语法表达,整个案例没有任何特别意义,但在我看来这是有道理的并且组合将是解决实际问题的完美解决方案。

【问题讨论】:

    标签: solr lucene prefix solr4 fuzzy-search


    【解决方案1】:

    不是经过测试的解决方案,您是否考虑过使用它? 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>

    【讨论】:

    • 我确实做到了,很高兴你在这里也提到它,但尽管这是朝着正确方向迈出的一步,但这不是一个解决方案。
    【解决方案2】:

    我没有具体尝试过,但看起来你可以用ComplexPhraseQueryParser 做你想做的事。

    看起来 ComplexPhraseQueryParser 将与 4.8 一起分发,但现在您可以从 Solr 的 Jira 获取插件(zip 文件中有安装说明)。 https://issues.apache.org/jira/browse/SOLR-1604

    这里有一些使用距离的讨论。 http://lucene.472066.n3.nabble.com/ComplexPhraseQueryParser-and-wildcards-td2742244.html

    我希望您可以使用 ComplexPhraseQueryParser 进行类似"q*"~n 的查询。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-15
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多