2010-05-24 25 views
6

Tôi đang triển khai chức năng tìm kiếm toàn văn trên my rap website và tôi đang gặp một số vấn đề với tên rapper và tên bài hát.Tìm kiếm toàn văn cho tên rapper không bình thường với Solr

Ví dụ: ai đó có thể muốn tìm kiếm rapper "Cam'ron" bằng cách sử dụng truy vấn "camron" (bỏ qua dấu nháy đơn giữa). Tương tự như vậy, ai đó có thể tìm kiếm bài hát "3 Peat" bằng cách sử dụng truy vấn "3peat".

"The Notorious B.I.G." là một trường hợp kỳ lạ: "Notorious BIG" và "The Notorious B.I.G." cả hai công việc (tôi đoán bởi vì các solr.StandardFilterFactory loại bỏ các dấu chấm từ viết tắt?), nhưng "The Notorious B.I.G" (tức là, trừ dấu chấm) không.

Lý tưởng nhất là tất cả các biến thể hợp lý của những tên này đều hoạt động. Tôi đoán câu trả lời có liên quan đến solr.WordDelimiterFilterFactory, nhưng tôi không chắc chắn.

Ngoài ra, tôi đang sử dụng Sunspot with Rails nếu có liên quan.

Trả lời

10

Có, bạn đã đúng. Bạn cần phải cấu hình WordDelimiterFilterFactory đúng cách. Hãy thử kích hoạt tất cả các thuộc tính và đừng quên bật thuộc tính preservOriginal, điều này cũng sẽ lưu các điều khoản ban đầu của bạn.

generateWordparts - sẽ tạo từ B.I.G. ngữ - B I G

generateNumberParts - sẽ làm cho từ 3Peat ngữ - 3 than bùn

catenateWords - sẽ làm cho từ B.I.G. ngữ - BIG

catenateNumbers - sẽ làm cho từ Rapper 802.11 ngữ - Rapper 80211

catenateAll - sẽ làm cho từ Rapper-802.11 hạn - Rapper80211

splitOnCaseCh ange - sẽ làm cho từ Gangsta ngữ - Gan Gs Tạ

preserveOriginal - sẽ tiết kiệm được cũng gốc hạn. Từ Rapper-802.11RuuLlZ sẽ thực hiện - Rapper-802.11RuuLlZ.

+2

Lời khuyên tuyệt vời, cảm ơn. Tôi thêm vào sau đây để 'schema.xml':' '. Điều này dường như giải quyết tất cả mọi thứ ngoại trừ trường hợp "B.I.G". Ý tưởng nào? –

+0

Có thể là do StandardTokenizer. Thay vào đó, tôi sẽ thay thế nó bằng WhitespaceTokenizer.Để phân tích, cách phân tích của bạn đang hoạt động, bạn có thể sử dụng "Phân tích" trong solr của mình, nếu bạn có giao diện web cho nó. Ở đó bạn có thể thấy, phân tích nào đang biến đổi văn bản của bạn, và kết quả của công việc đó là gì. – Yurish

Các vấn đề liên quan