2012-02-14 34 views
7

Trong cài đặt SOLR, khi tôi tìm kiếm một trường có cụm từ tìm kiếm nhiều từ, tôi muốn SOLR trả lại tài liệu có tất cả các từ trong tìm kiếm, nhưng chúng không cần phải theo thứ tự chính xác.Solr - Kết quả có chứa tất cả các điều khoản, theo thứ tự bất kỳ

Ví dụ: nếu tôi tìm kiếm tiêu đề Brown Chicken Brown Cow, tôi muốn tìm tất cả các tài liệu chứa tất cả các cụm từ Brown, Chicken and Cow, bất kể thứ tự trong trường tiêu đề. Vì vậy, ví dụ: tiêu đề "Gà và bò có phân màu nâu" phải khớp với truy vấn. AFAIK, đây là cách Google thực thi tìm kiếm.

tôi đã thử nghiệm với các định dạng truy vấn sau đây:

1. Title:Brown AND Title:Chicken 
2. Title:Brown AND Chicken 
3. Title:Brown+Chicken 

Tôi rất bối rối bởi các kết quả. Trong một số trường hợp, hai truy vấn đầu tiên trả lại cùng một tập hợp các kết quả chính xác. Trong các trường hợp khác, phiên bản đầu tiên sẽ trả lại nhiều kết quả và phiên bản thứ hai sẽ không trả về kết quả nào. Phiên bản thứ ba dường như đáp ứng nhu cầu của tôi, nhưng tôi bị nhầm lẫn bởi ý nghĩa khác nhau của các truy vấn.

Tất cả các thử nghiệm của tôi đã được chạy trên một trường kiểu text_en.

<field name="Title" multiValued="false" type="text_en" indexed="true" stored="true"/> 

Vậy, truy vấn SOLR tốt nhất/thiết lập cho loại tìm kiếm này là gì? Ngoài ra, có một cách dễ dàng để làm cho Solr.NET mất một người dùng nhập vào thuật ngữ tìm kiếm và chuyển đổi nó sang loại định dạng?

Ngoài ra, SOLR theo mặc định có cung cấp các tài liệu khớp với thứ tự của cụm từ tìm kiếm có điểm số liên quan cao hơn không? Nếu không, đòn bẩy thích hợp để kéo để điều đó xảy ra là gì?

Chỉnh sửa: Một số nhầm lẫn của tôi là do tìm kiếm không phải là trường mặc định so với trường mặc định. Biết được điều này, định dạng duy nhất hoạt động nhất quán là định dạng đầu tiên.

+0

Vui lòng [không thêm chữ ký hoặc khẩu hiệu vào bài đăng của bạn] (http://stackoverflow.com/faq#signatures). – meagar

Trả lời

6

Nếu tôi là bạn tôi sẽ cố gắng sử dụng:

Title:(Brown Chicken) 

Chân đế sẽ làm cho nó tương đương với truy vấn của bạn số 1. Báo giá sẽ buộc Solr tìm kiếm đối sánh chính xác, bao gồm cả không gian và thứ tự

+0

Hoàn hảo. Cảm ơn! – jmacinnes

+0

Bạn có chắc chắn rằng nó chỉ trả lại các kết quả có chứa tất cả các điều khoản? – vefthym

+0

Tôi chắc chắn (trường hợp chung), trừ khi toán tử bool mặc định của bạn là "OR" hoặc bạn sử dụng 'edimax' với' mm' – Fuxi

2

Vui lòng thử Title:"Brown Chicken" hoặc sử dụng trình phân tích cú pháp truy vấn Dismax để xử lý truy vấn của bạn.


Các wiki for lucene query parser nói (tôi nhấn mạnh):

.... Kể từ văn bản là lĩnh vực mặc định, chỉ số lĩnh vực không cần thiết.

Lưu ý: Các lĩnh vực chỉ có giá trị trong thời hạn mà nó trực tiếp đi trước, để truy vấn

tiêu đề: Do đó ngay

sẽ chỉ tìm "Thực hiện" trong lĩnh vực tiêu đề . Nó sẽ tìm thấy "nó" và "phải" trong trường mặc định (trong trường hợp này là trường văn bản).

Bạn chỉ có trường tiêu đề trong mô hình dữ liệu của mình?

hãy chạy debugQuery=on để giải thích câu hỏi của bạn để xem cách họ được ghi: nhìn thấy nó trong hành động https://stackoverflow.com/a/9262300/604511

+0

Không, có nhiều trường trong tài liệu của tôi. Tiêu đề là trường mặc định, do đó giải thích một số điều kỳ lạ mà tôi đã thấy. Sử dụng dấu ngoặc kép không hoạt động; nó thực thi lệnh giới hạn. Với thông tin này, có vẻ như cách duy nhất để hoàn thành những gì tôi muốn là định dạng này: Tiêu đề: Nâu VÀ Tiêu đề: Gà. Thật không may, ít phức tạp hơn để phân tích một từ khóa thành dạng đó. Tôi sẽ xem xét Dismax. – jmacinnes

+0

"nó thực thi lệnh hạn" nên đã biết: -/ – aitchnyu

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