Solr DisMax查询等效

时间:2013-02-21 03:43:21

标签: solr dismax

我正在尝试在SOLR 3.5.0中设置提升处理程序,我需要在dismax格式中等效以下查询,该格式根据匹配类型在同一字段上定义不同的提升值(完全匹配获得200而通配符匹配获得100)。

q = name:(foo * ^ 100.0 OR foo ^ 200.0)

1 个答案:

答案 0 :(得分:0)

这是解决此问题的一种方法。

保留仅包含WhiteSpaceTokenizer的文本字段(可能还有LowerCaseFilter,具体取决于您的区分大小写需求)。使用此字段进行完全匹配。我们将此字段称为name_ws

不要在name_ws上使用通配符查询,而是在分析器链中使用带copy field的文本类型EdgeNGramTokenizer,这将输出令牌,如:

food -> f, fo, foo, food

我们将此字段称为name_edge

然后你可以发出这个dismax查询:

q=foo&defType=dismax&qf=name_ws^200+name_edge^100

(添加debugQuery=on以验证评分是否符合您的要求。)