Tôi muốn các truy vấn để trả về một số điểm được tính như sau:Cách tính điểm dựa trên số lượng các thuật ngữ truy vấn trong elasticsearch?
xảy ra mỗi thuật ngữ truy vấn trong tiêu đề + Mô tả/số thuật ngữ truy vấn
ví dụ
EbSearch.add [
new_job(id: 1, title: "Java Programmierer",
description: "Java Programmierer")
]
res = EbSearch.search("Java Programmierer").results.first.score.should == 4
tại thời điểm đó kết quả đầu ra 8, bởi vì nó thực hiện truy vấn cho mỗi thuật ngữ và tổng kết nó. Tôi chỉ có thể phân chia sau đó, nhưng tôi không có các thuật ngữ truy vấn được phân tích, vì vậy các hợp chất có thể làm hỏng điểm số.
Các truy vấn có cấu trúc như sau:
search = Tire.search index_name do
query do
dis_max do
query { string query, fields: ['title^3', 'description.with_synonyms^0.5'], use_dis_max: false, default_operator: "OR" }
query { string query, fields: ['title^3', 'description.without_synonyms'], use_dis_max: false, default_operator: "OR"}
end
end
end
Bất kỳ ý tưởng làm thế nào tôi có thể giải quyết vấn đề này được đánh giá rất nhiều.
EDIT
tôi nhận ra rằng tôi cung cấp không đủ ngữ cảnh.
Dưới đây là một số đoạn trích khác mà tôi đã làm việc. Tôi đã viết một SimilarityProvider tùy chỉnh để vô hiệu hóa idf và bình thường hóa. https://gist.github.com/outsmartin/6114175
Mã lốp hoàn chỉnh được tìm thấy tại đây https://gist.github.com/6114186. Đó là một chút phức tạp hơn sau đó ví dụ, nhưng nó phải là dễ hiểu.
Theo các hợp chất bạn có ý nghĩa như cụm từ tìm kiếm "tìm kiếm đàn hồi" có thể được mã hóa thành 2 mã thông báo? Bạn có muốn chia cái này cho 2 sau đó không? – ramseykhalaf
Ví dụ, nhưng như tôi có rất nhiều điều khoản của Đức, tôi phải chia "Javaprogrammierer" thành Java và Programmierer. Bởi vì truy vấn được thực hiện với tất cả các điều khoản, tôi muốn điểm số nằm trong khoảng từ 0 đến 4 trong ví dụ. – outsmartin
Tôi vẫn còn hơi bối rối ... Từ mô tả ở trên, tôi hiểu rằng tìm kiếm "Lập trình viên Java" phải có số điểm: (4: lần xuất hiện của mỗi cụm từ truy vấn trong tiêu đề + mô tả)/(2: số lượng cụm từ truy vấn) = 2. Nhưng bạn nói bạn muốn điểm số là 4. Tôi hơi bối rối. – ramseykhalaf