我正试图在SOLR 3.5.0中设置提升处理程序,我需要以下dismax格式的查询的等效项,该查询根据匹配类型在同一字段上定义不同的提升值(精确匹配为200,通配符匹配为100)。
q=名称:(foo*^100.0或foo^200.0)
这是解决这个问题的一种方法。
保留一个只包含WhiteSpaceTokenizer的文本字段(根据您的区分大小写需求,可能还有LowerCaseFilter)。使用此字段进行精确匹配。让我们把这个字段称为name_ws
。
与其在name_ws
上使用通配符查询,不如在分析器链中使用EdgeNGramTokenizer的文本类型复制字段,该字段将输出以下令牌:
food -> f, fo, foo, food
让我们把这个字段称为name_edge
。
然后你可以发出这个dismax查询:
q=foo&defType=dismax&qf=name_ws^200+name_edge^100
(添加debugQuery=on
以验证评分是否符合您的要求。)