2013-02-27 4 views
6

Tôi có một yêu cầu sử dụng thuật ngữ tìm kiếm như:thuật ngữ truy vấn tìm kiếm đàn hồi và ghi

{ 
"query": { 
    "bool": { 
    "should": [ 
     { 
     "terms": { 
      "subjects.id": [ 
      1, 
      2, 
      3 
      ], boost: 3 
     } 
     }, 
     { 
     "terms": { 
      "qualification_type.id": [ 
      3, 
      5 
      ], boost: 2 
     } 
     } 
    ] 
    } 
} 

tôi hoạt động khá tốt nhưng các thuộc tính điểm tốt hơn để các văn bản phù hợp với ba đối tượng hơn là các tài liệu phù hợp với chỉ có một chủ đề.

Câu hỏi của tôi là: có cách nào để buộc điểm số giống nhau không nếu có một hoặc nhiều trận đấu với đối tượng?

Cảm ơn trước!

+0

điều này có thể giúp ai đó, tôi tìm thấy nó sau này sau khi có cùng câu hỏi này http://www.elasticsearch.org/blog/understanding-query-then-fetch-vs-dfs-query- Sau đó, lấy/ –

Trả lời

9

Bạn có thể chuyển đổi các truy vấn cụm từ thành bộ lọc và đưa chúng vào constant score query. Ví dụ:

{ 
    "query": { 
     "bool": { 
      "should": [{ 
       "constant_score": { 
        "filter": { 
         "terms": { 
          "subjects.id": [1, 2, 3] 
         } 
        }, 
        boost: 3 
       } 
      }, { 
       "constant_score": { 
        "filter": { 
         "terms": { 
          "qualification_type.id": [3, 5] 
         } 
        }, 
        boost: 2 
       } 
      }] 
     } 
    } 
} 
+0

Vâng, tôi đã nghĩ về nó và thử nó. Nhưng sau đó tôi không thể thiết lập hai differents tăng phải không? Tôi chỉnh sửa ví dụ để cố gắng rõ ràng hơn về nó. – momo

+0

Bạn có thể quấn từng bộ lọc cụm từ vào truy vấn constant_score của riêng nó. Tôi đã thêm một ví dụ. – imotov

+0

Xin chào, cảm ơn rất nhiều, đó là một trợ giúp tuyệt vời! Tôi đã cố gắng để chơi với custom_score bằng cách làm công cụ tương tự nhưng không bao giờ có ý tưởng đó. Có thể bạn chỉ cho tôi tài liệu để tôi có thể tìm thấy một số ví dụ như thế? Tôi đã tìm kiếm khá nhiều và không tìm thấy thứ gì gần đó. – momo