5

Chúng tôi đang sử dụng Tìm kiếm Đàn hồi để tìm kiếm thông qua hàng triệu thẻ. Người dùng của chúng tôi có thể bao gồm toán tử boolean (+, -, "xy", AND, OR, dấu ngoặc vuông). Nếu không có lần truy cập nào được trả về, chúng tôi sẽ quay trở lại đề xuất chính tả được cung cấp bởi ES và tìm kiếm lại. Đó là truy vấn của chúng tôi:Cách bật tính năng mờ cho các truy vấn cụm từ trong Tìm kiếm Đàn hồi

$ curl -XGET 'http://127.0.0.1:9200/my_index/my_type/_search' -d ' 
{ 
    "query" : { 
     "query_string" : { 
      "query" : "some test query +bools -included", 
      "default_operator" : "AND" 
     } 
    }, 
    "suggest" : { 
     "text" : "some test query +bools -included", 
     "simple_phrase" : { 
      "phrase" : { 
       "field" : "my_tags_field", 
       "size" : 1 
      } 
     } 
    } 
} 

Thay vì chỉ cung cấp dự phòng cho đề xuất chính tả, chúng tôi muốn bật kết hợp mờ. Ví dụ: nếu người dùng tìm kiếm "stackoverfolw", ES sẽ trả lại kết quả phù hợp cho "stackoverflow".

Câu hỏi bổ sung: Phương pháp thực hiện tốt hơn cho "sửa lỗi" lỗi chính tả là gì? Hiện tại, chúng tôi phải thực hiện hai yêu cầu tiếp theo, trước tiên với cụm từ tìm kiếm ban đầu, sau đó với cụm từ được đề xuất bởi ES.

Trả lời

4

query_string không hỗ trợ một số mờ nhưng chỉ khi sử dụng toán tử ~, mà tôi nghĩ không phải là hệ thống của bạn. Tôi sẽ thêm một số fuzzy query rồi đặt nó vào hoặc bằng query_string hiện có. Ví dụ, bạn có thể sử dụng một bool query và thêm truy vấn mờ như là một mệnh đề nên, giữ query_string ban đầu như là một mệnh đề phải.

Đối với câu hỏi bổ sung của bạn về cách sửa lỗi chính tả: Tôi sẽ sử dụng truy vấn mờ để tự động sửa chúng và hai yêu cầu tiếp theo nếu bạn muốn người dùng chọn sửa đúng từ danh sách (ví dụ: Ý của bạn), nhưng cách tiếp cận của bạn âm thanh tốt quá.

+0

Cảm ơn - điều đó khẳng định suy nghĩ của tôi. Dù sao đi chăng nữa, chúng tôi vẫn bám theo những gì chúng tôi đã có. Nó có vẻ là một cách tiếp cận nhanh hơn nhiều. Liên quan đến "truy vấn mờ", tài liệu ElasticSearch thậm chí còn đề cập đến cảnh báo về việc không thể mở rộng tốt. –