【问题标题】:Phrase match on part of query using solr使用 solr 对部分查询进行短语匹配
【发布时间】:2014-02-17 19:52:08
【问题描述】:

我有以下情况:

对于查询“A B”,我们有完全匹配并且结果得分正确。但是当查询看起来像“A B C”时,结果是错误的,因为 Solr 没有看到“A B”的完全匹配。请帮我以正确的方式配置 Solr,让他在“A B”上找到“短语”匹配。

附:以下查询按预期工作:

A B field:C
"A B" C

【问题讨论】:

    标签: solr


    【解决方案1】:

    不确定我是否理解正确,但听起来您需要生成shinglesNGrams。简而言之,带状疱疹是通过对句子中的单词进行分组来创建的,而边缘 NGram 的工作原理是通过从单词的开头或结尾获取字符来生成单词片段。

    来自 Solr 维基:

    • Ngrams:尼日利亚 => "ni", "nig", "nige", "niger", "nigeri", "nigeria", "nigeria", "nigerian"
    • Shingles:例如,句子“please split this sentence into shingles”可能被标记为 shingles “please divide”,
      “把这个”、“这个句子”、“句子分成”和“分成”
      带状疱疹”。

    由于您希望对部分查询进行匹配,因此您需要将相关过滤器包含到查询分析器中。

    【讨论】:

    • 如果我错了,请纠正我。但这将是一个很大的变化,因为 Shringles 不仅应该添加到查询时间,还应该添加到索引时间。而且,据我所知,这是在 Solr/edismax 中与 OOB 并行的方法,可以对短语进行搜索...
    • 在我看来,您只需要将查询组合在一起并应用位置过滤器,以便“A B C”变为 stackoverflow.com/questions/4882481/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多