0

製品カタログで適切に機能するクエリがあります。現在、私のクエリは multi_match であいまいさを利用していますが、同じクエリ (あいまいさなし) が結​​果を返さなかった場合は、検索であいまいオプションを利用することをお勧めします。これはクエリ内で実行できますか? (Rails 5 を使用)

これが私の現在のクエリです:

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

                 filter:{
                   bool:{
                     must:filters
                   }
                 }

             }
           },
           field_value_factor:{
              field: "popularity",
              modifier: "log1p",
              factor: 0.5

           },
           boost_mode: "sum"
         }
       }).page(page).per(25)
4

1 に答える 1

0

私がよく行うのは、2つの一致句を持つブールクエリを使用することです.1つはファジーなしで、スコアを2倍または3倍に高めます.ファジーマッチを使用すると、ファジーでもスコアが低くなります。リストの最後になります。

この gistで同様のことを示しました。

基本的に次のようなことを行います:

DELETE user
POST user/doc
{
  "name": "David"
}
GET user/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": {
              "query": "david",
              "boost": 3.0
            }
          }
        },
        {
          "match": {
            "name": {
              "query": "david",
              "fuzziness": 2
            }
          }
        }
      ]
    }
  }
}
GET user/_search
{
  "query": {
    "bool": {
      "should": [
        {
          "match": {
            "name": {
              "query": "dovad",
              "boost": 3.0
            }
          }
        },
        {
          "match": {
            "name": {
              "query": "dovad",
              "fuzziness": 2
            }
          }
        }
      ]
    }
  }
}
于 2017-10-02T15:11:11.060 に答える