2008-08-02 10 views
36

Trong Lucene nếu bạn có nhiều chỉ mục chỉ bao phủ một phân vùng. Tại sao tìm kiếm tương tự trên các chỉ mục khác nhau trả lại kết quả với các điểm số khác nhau? Kết quả từ các máy chủ khác nhau khớp chính xác.Kết quả Điểm Lucene

tức là nếu tôi đã tìm kiếm cho:

  • Tên - John Smith
  • DOB - 11/11/1934

Partition 0 sẽ trả về một số điểm là 0,345

Phân vùng 1 sẽ trả về điểm số là 0,337

Cả hai đối sánh chính xác trên tên và DOB.

Trả lời

18

scoring chứa Tần suất tài liệu nghịch đảo (IDF). Nếu thuật ngữ "John Smith" nằm trong một phân vùng, 0, 100 lần và trong phân vùng 1, một lần. Điểm số để tìm kiếm John Smith sẽ là tìm kiếm cao hơn trong phân vùng 1 vì thuật ngữ này khan hiếm hơn.

Để nhận được vòng này, bạn sẽ héo phải có chỉ mục của bạn được trên tất cả các phân vùng, hoặc bạn sẽ cần phải ghi đè IDF.

+1

Hoặc bạn có thể xây dựng một trình tìm kiếm nhiều người từ tất cả các chỉ mục. –

13

Bởi vì điểm số được xác định trên chỉ mục nếu tôi không hoàn toàn nhầm lẫn.

Nếu bạn có chỉ số khác nhau (hơn/ít hơn hoặc khác nhau dữ liệu đã được lập chỉ mục), điểm số sẽ khác nhau:

http://lucene.apache.org/core/3_6_0/scoring.html

(Cảnh báo: Chứa Math :-))

+2

liên kết được cập nhật: http://lucene.apache.org/java/2_4_0/scoring.html –

7

Bạn có thể cũng quan tâm đến đầu ra của explain() method và kết quả là Explanation object, sẽ cho bạn biết cách mọi thứ được ghi lại theo cách của chúng.