2015-04-14 16 views
7

Làm cách nào để thêm sự mờ vào truy vấn multi_match? Vì vậy, nếu ai đó là để tìm kiếm 'basball' nó vẫn sẽ tìm thấy 'bóng chày' bài viết. Hiện tại, truy vấn của tôi trông giống như sau:Truy vấn multi_match ElasticSearch trên nhiều trường với Fuzziness

POST /newspaper/articles/_search 
{ 
    "query": { 
     "function_score": { 
      "query": { 
       "multi_match": { 
        "query": "baseball", 
        "type": "phrase", 
        "fields": [ 
         "subject^3", 
         "section^2.5", 
         "article^2", 
         "tags^1.5", 
         "notes^1" 
        ] 
       } 
      } 
     } 
    } 
} 

Một tùy chọn Tôi đang xem là làm điều gì đó như thế này, không biết đây có phải là lựa chọn tốt nhất hay không. Điều quan trọng là phải sắp xếp dựa trên điểm số:

"query" : { 
     "query_string" : { 
     "query" : "subject:basball^3 section:basball^2.5 article:basball^2", 
     "fuzzy_prefix_length" : 1 
     } 
    } 

Đề xuất?

Trả lời

18

Để thêm mờ đến một multiquery bạn cần thêm thuộc tính mờ như đã mô tả ở đây:

{ 
    "query": { 
     "function_score": { 
      "query": { 
       "multi_match": { 
        "query": "baseball", 
        "type": "phrase", 
        "fields": [ 
         "subject^3", 
         "section^2.5", 
         "article^2", 
         "tags^1.5", 
         "notes^1" 
        ], 
        "fuzziness" : "AUTO", 
        "prefix_length" : 2 

       } 
      } 
     } 
    } 
} 

Xin lưu ý rằng prefix_length giải thích trong doc như:

Số lượng ký tự ban đầu sẽ không bị "mờ". Điều này giúp giảm số lượng các thuật ngữ phải được kiểm tra. Mặc định là 0.

Để kiểm tra các giá trị có thể có của fuzziness, vui lòng truy cập ES docs.

+0

Điều này không hoạt động trong ES 6: 'Không cho phép sự mờ nhạt đối với loại [cụm từ]' – Alphaaa

Các vấn đề liên quan