Tôi muốn kết quả tìm kiếm của tôi theo thứ tự theo điểm số, mà họ đang làm, nhưng điểm số đang được tính toán không đúng. Điều này có nghĩa là, không nhất thiết phải không đúng cách, nhưng khác với dự kiến và tôi không chắc chắn lý do. Mục tiêu của tôi là xóa mọi thứ đang thay đổi điểm số.Solr: fieldNorm khác nhau cho mỗi tài liệu, không có tài liệu tăng
Nếu tôi thực hiện tìm kiếm khớp với hai đối tượng (nơi ObjectA được dự kiến có điểm số cao hơn ObjectB), thì ObjectB sẽ được trả về trước.
Ví dụ: truy vấn của tôi là một cụm từ duy nhất: "táo".
ObjectA của tiêu đề: "táo là quả táo" (2/3 về) Mô tả
ObjectA của: "Có những quả táo trong những quả táo-táo và bây giờ những quả táo đã đi tất cả táo trên tất cả các quả táo" (6/18 terms)
Tiêu đề của ObjectB: "quả táo là tuyệt vời" (1/3 cụm từ)
Mô tả của ObjectB: "Có những quả táo trong phòng táo và bây giờ những quả táo đã bị hỏng trên tất cả các quả táo!" (4/18 terms)
Trường tiêu đề không có tăng (hoặc đúng hơn là tăng 1) và trường mô tả có mức tăng 0,8. Tôi đã không chỉ định một tài liệu được tăng thông qua solrconfig.xml hoặc thông qua truy vấn mà tôi đang đi qua. Nếu có một cách khác để chỉ định tăng tài liệu, có khả năng tôi thiếu một tài liệu.
Sau khi phân tích explain
bản in, có vẻ như ObjectA là tính đúng một điểm số cao hơn so với ObjectB, giống như tôi muốn, trừ một khác biệt: Tiêu đề fieldNorm ObjectB luôn cao hơn ObjectA của.
Dưới đây là bản in explain
. Chỉ cần để bạn biết: lĩnh vực tiêu đề là mditem5_tns
và lĩnh vực mô tả là mditem7_tns
:
ObjectB:
1.3327172 = (MATCH) sum of:
1.0352166 = (MATCH) max plus 0.1 times others of:
0.9766194 = (MATCH) weight(mditem5_tns:appl in 0), product of:
0.53929156 = queryWeight(mditem5_tns:appl), product of:
1.8109303 = idf(docFreq=3, maxDocs=9)
0.2977981 = queryNorm
1.8109303 = (MATCH) fieldWeight(mditem5_tns:appl in 0), product of:
1.0 = tf(termFreq(mditem5_tns:appl)=1)
1.8109303 = idf(docFreq=3, maxDocs=9)
1.0 = fieldNorm(field=mditem5_tns, doc=0)
0.58597165 = (MATCH) weight(mditem7_tns:appl^0.8 in 0), product of:
0.43143326 = queryWeight(mditem7_tns:appl^0.8), product of:
0.8 = boost
1.8109303 = idf(docFreq=3, maxDocs=9)
0.2977981 = queryNorm
1.3581977 = (MATCH) fieldWeight(mditem7_tns:appl in 0), product of:
2.0 = tf(termFreq(mditem7_tns:appl)=4)
1.8109303 = idf(docFreq=3, maxDocs=9)
0.375 = fieldNorm(field=mditem7_tns, doc=0)
0.2975006 = (MATCH) FunctionQuery(1000.0/(1.0*float(top(rord(lastmodified)))+1000.0)), product of:
0.999001 = 1000.0/(1.0*float(1)+1000.0)
1.0 = boost
0.2977981 = queryNorm
ObjectA:
1.2324848 = (MATCH) sum of:
0.93498427 = (MATCH) max plus 0.1 times others of:
0.8632177 = (MATCH) weight(mditem5_tns:appl in 0), product of:
0.53929156 = queryWeight(mditem5_tns:appl), product of:
1.8109303 = idf(docFreq=3, maxDocs=9)
0.2977981 = queryNorm
1.6006513 = (MATCH) fieldWeight(mditem5_tns:appl in 0), product of:
1.4142135 = tf(termFreq(mditem5_tns:appl)=2)
1.8109303 = idf(docFreq=3, maxDocs=9)
0.625 = fieldNorm(field=mditem5_tns, doc=0)
0.7176658 = (MATCH) weight(mditem7_tns:appl^0.8 in 0), product of:
0.43143326 = queryWeight(mditem7_tns:appl^0.8), product of:
0.8 = boost
1.8109303 = idf(docFreq=3, maxDocs=9)
0.2977981 = queryNorm
1.6634457 = (MATCH) fieldWeight(mditem7_tns:appl in 0), product of:
2.4494898 = tf(termFreq(mditem7_tns:appl)=6)
1.8109303 = idf(docFreq=3, maxDocs=9)
0.375 = fieldNorm(field=mditem7_tns, doc=0)
0.2975006 = (MATCH) FunctionQuery(1000.0/(1.0*float(top(rord(lastmodified)))+1000.0)), product of:
0.999001 = 1000.0/(1.0*float(1)+1000.0)
1.0 = boost
0.2977981 = queryNorm
Bạn có thể xây dựng, hoặc có thể cung cấp một liên kết? Tại sao "stemmer" sẽ mở rộng lĩnh vực của tôi để một cái gì đó mà nó * không *? Điều đó có vẻ phản trực giác! :) – JMTyler
Trừ khi "appl" đầu tiên bạn viết được cho là "quả táo"? Chỉ cần nhìn vào gốc, điều đó sẽ có ý nghĩa, nếu "táo" đang được chia nhỏ thành dạng gốc của nó. Vì vậy, hãy cho tôi biết nếu tôi có quyền này - bạn đang nói rằng nếu tôi thay đổi tất cả các tham chiếu đến "quả táo" và chỉ tìm kiếm "quả táo", tôi sẽ nhận được kết quả theo thứ tự tôi muốn? – JMTyler
Tôi đã chỉnh sửa bài đăng của mình, vì vậy nó sẽ rõ ràng hơn bây giờ. Thân cây sử dụng "appl" dưới dạng root cho "apple" và "apple". Vì vậy, nếu bạn vô hiệu hóa xuất phát, bạn sẽ nhận được kết quả mong đợi. Bạn cũng có thể loại trừ các cụm từ không được bắt đầu bằng cách thêm chúng vào protwords.txt và thay đổi schema.xml –
Jem