簡體   English   中英

Elasticsearch字段值因子具有多重匹配?

[英]Elasticsearch field value factor with multi matching?

我正在用它來搜索我的服裝:

def self.search(query, purchasedlow, purchasedhigh)
__elasticsearch__.search(
{
  query: {
    function_score: {
      query: {
        bool: {
          filter: [
            {
              multi_match: {
                query: query,
                fields: ['name','description','material']
              }
            },
            {
              range: {
                purchased: { lte: purchasedhigh.to_i, gte: purchasedlow.to_i},
              },          
            }
          ]
        }
      }
    }
  }
}
)
end

但是我不知道如何添加以下代碼:

    field_value_factor: {
      field: "likes",
      factor: "100"
    }

我知道我應該將其放在函數分數之后,以便將計算出的分數乘以喜歡的數量即可得出最終分數,但是當我將代碼放在function_score之后時,出現以下錯誤:

[400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"[function_score] malformed query, expected [END_OBJECT] but found [FIELD_NAME]","line":1,"col":232}],"type":"parsing_exception","reason":"[function_score] malformed query, expected [END_OBJECT] but found [FIELD_NAME]","line":1,"col":232},"status":400}

我需要將字段值因子放在哪里才能使其正常工作?

我在以下查詢之一中使用了field_value_factor:

@products = Product.search(
 query:{
   function_score:{
     query:{
       bool:{
         must:{
           multi_match:{
             fields: ['brand^5', '_all'],
             query: "#{query}",
             fuzziness: "AUTO"
           }
         },

           filter:{
             bool:{
               must:[
                 {term: {"brand":"NordicTrack"}},
                 {term: {"product_type":"Treadmill"}}
               ]
             }
           }

       }
     },
     field_value_factor:{
        field: "popularity",
        modifier: "log1p"
     }
   }
 })

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM