Solr 中复合词的优先级

Priority for compounded words in Solr

我正在尝试使用 Solr 改进我的搜索结果。 目前我正在研究复合词,到目前为止我得到了复合词及其部分的结果,但问题是结果之间没有 prioity/weight。 我希望与原始复合词相关的结果比其部分具有更高的 weight/prioity。 有没有办法用 Solr 做到这一点?

作为示例,搜索词可能是“støvsuger”,目前我得到的“støvsuger”、“støv”和“suger”的结果相同。我想要的是“støvsuger”的权重高于“støv 和”suger。

这就是我目前正在做的事情:

<filter class="solr.DictionaryCompoundWordTokenFilterFactory" minSubwordSize="4" dictionary="lang/ordbog.txt" onlyLongestMatch="true" maxSubwordSize="15" minWordSize="7"/>

当前查询字符串如下所示:

{0}Portal1_{1}_{2}/select?defType=edismax
&fl=id,title,shortDescription,htmlContent,kbId,score
&mm={3}
&q={4}
&qf=_priorityKeywords^60 title^80 portalTitle^60 shortDescription^50 htmlContent^20
&pf=_priorityKeywords^60 title^100 portalTitle^60 shortDescription~10^50 htmlContent~10^20
&rows=500
&wt=json
&tie=0.1

您可以忽略 {0}、{1}、{2},{3} 是搜索词的数量,{4} 是搜索 word/term。

有一个字段没有复合词标记过滤器的内容,另一个字段复合词标记过滤器。在没有复合词标记过滤器的情况下提升字段中的命中率比在具有复合词标记过滤器的字段中的命中率更高(我假设我们在这里谈论的是一个类别,但它对于你的案例中任何提到真空吸尘器的文本都是一样的):

qf=category_without_compounds^5 category_with_compounds

.. 将为字段中没有扩展复合词的任何命中赋予 5 倍的权重。您还可以进一步提高精确匹配(例如,搜索查询与类别或标题完全匹配)。

您在架构/collection 配置中定义了一个 copyField 指令,以自动将相同的内容复制到两个字段中。