0

我有一个搜索字段,用户可以根据三个字段搜索产品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 显示的顺序错误。

我正在使用StandardTokenizerFactoryTokenizer 对空格进行标记,以及去除字符。它真的适合我的要求还是更好用KeywordTokenizerFactory

我也搜索过DISMAXEDISMAX。如果与接近度和提升值一起使用,它真的会影响结果吗?

让我们再举一个例子,我有一个带有 productCFN 的产品X0406295L,我开始搜索,X04但它在顶部显示了错误的产品。

productCFN - 176-504 productUpnName - CASE 176-504 ATLANTIS SCREW TRAY FA

我很惊讶为什么它正在搜索上述产品,即使该产品没有任何品牌并且 UPN 名称也不包含X04单词。它是否真的基于数字进行标记,因为04存在。我对 solr 搜索完全感到困惑。

请帮我。

4

1 回答 1

0

您的问题是使用字符串与文本。默认情况下,不会对字符串字段进行标记。

您应该在 Text 上进行搜索,并且应该使用 String 进行 Facets 等。

于 2015-05-27T23:53:36.267 回答