我有一个搜索字段,用户可以根据三个字段搜索产品productCFN (String type)
:productBrand (String type)
和productUpnName (text type)
。我根据优先级给出提升值,以便结果以相同的顺序出现(最高提升值到最低提升值)。
但搜索行为未按预期工作(有时)。我已经给出了这样的提升值
productCFN 100 [我们根据为搜索字段提供的值自定义了提升值]
产品品牌20
产品名称 50
所以如果我在搜索,它应该首先搜索productCFN 然后productUpnName 然后productBrand 并且在相同的订单结果将显示在前端
我也检查了查询,似乎是正确的,但不知道为什么排序不起作用(我用“CC0”搜索)
q=(productUpnName_text_en_us:(CC0~^25.0+OR+cc0~^25.0+OR+cc0^100.0+OR+CC0^100.0+OR+CC0*^50.0+OR+cc0*^50.0))+OR+(productCFN_string:(cc0^200.0+OR+CC0*^100.0+OR+CC0^200.0+OR+cc0*^100.0))+OR+(productBrand_string_mv:(CC0^40.0+OR+cc0*^20.0+OR+cc0^40.0+OR+CC0*^20.0))
我的问题是为什么即使我给 productCFN 打了最高分,productCFN 以“CC0”开头的产品也没有排在首位。
我认为整个问题是由于接近而造成的,但我已经给出了最低分值,但有时 resule 显示的顺序错误。
我正在使用StandardTokenizerFactory
Tokenizer 对空格进行标记,以及去除字符。它真的适合我的要求还是更好用KeywordTokenizerFactory
?
我也搜索过DISMAX
和EDISMAX
。如果与接近度和提升值一起使用,它真的会影响结果吗?
让我们再举一个例子,我有一个带有 productCFN 的产品X0406295L
,我开始搜索,X04
但它在顶部显示了错误的产品。
productCFN - 176-504
productUpnName - CASE 176-504 ATLANTIS SCREW TRAY FA
我很惊讶为什么它正在搜索上述产品,即使该产品没有任何品牌并且 UPN 名称也不包含X04
单词。它是否真的基于数字进行标记,因为04
存在。我对 solr 搜索完全感到困惑。
请帮我。