我正在尝试使用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}是搜索单词/术语。
有一个字段的内容没有复合词标记过滤器,有一个字段的内容有复合词标记筛选器。在没有复合词标记过滤器的领域中,Boost的点击量超过了在有复合词标记的领域中的点击量(我只是假设我们在这里谈论的是一个类别,但在你的情况下,它对任何提及吸尘器的文本都是一样的(:
qf=category_without_compounds^5 category_with_compounds
在没有展开的复合词的情况下,将为字段中的任何命中赋予5倍的权重。您还可以提供更大的准确点击率(例如,搜索查询和类别或标题完全匹配(。
您可以在架构/集合配置中定义copyField
指令,以自动将相同的内容复制到两个字段中。