2012-02-27 28 views
9
  • Tôi đang sử dụng Solr 3.3.0 làm việc ra khỏi hộp bằng cách sử dụng dụ thư mục
  • solrQueryParser defaultOperator = "OR"

Vấn đề của tôi là Solr doesn' t dường như trở lại kết quả tốt khi tôi tìm kiếm một cụm từ nhiều từ.Nhiều thắc mắc gì về Solr

Tìm kiếm sau không trả lại kết quả nào.

  1. http://localhost:8080/solr/select/?q=roof+fixing

Tuy nhiên, khi tôi tìm kiếm mái hoặc sửa chữa, cả hai đều trả về một vài kết quả tốt.

  1. http://localhost:8080/solr/select/?q=rooflợi nhuận 4 kết quả
  2. http://localhost:8080/solr/select/?q=fixinglợi nhuận 3 kết quả

Trên truy vấn cho "mái nhà sửa chữa", tôi mong đợi Solr trở lại 7 kết quả. 4 bản ghi cho mái và 3 bản ghi cho sửa lỗi.

Có bất kỳ cấu hình đặc biệt nào cần thiết để điều đó xảy ra không?

Trả lời

8

Bạn vừa thể hiện truy vấn của mình không chính xác.

Hãy thử truy vấn sau đây từ trang Admin:

(mái HOẶC sửa chữa)

Hoặc, nếu bạn muốn để thấy rằng trong một lĩnh vực cụ thể:

fieldname: (mái HOẶC sửa chữa)

Khi bạn cung cấp cho SOLR một truy vấn như "sửa chữa mái nhà", bạn có hiệu quả yêu cầu tất cả các tài liệu có "mái" và "sửa" trong trường mặc định (hoặc nhóm thiết lập tháo dỡ mặc định). ý nghĩa là viết lại truy vấn mà người dùng nhập vào. Đó là những gì chúng tôi làm, nhưng trên quy mô lớn hơn. Chúng tôi có giao diện giao diện người dùng cung cấp toàn bộ các tùy chọn và tạo truy vấn SOLR từ đó. Mọi người có thể nhập cụm từ tìm kiếm vào một trường cụ thể và nếu có nhiều hơn một từ và nó không được trích dẫn, chúng tôi sẽ thêm AND. Sau đó, chúng ta HOẶC cùng nhau tất cả các trường được điền vào. Một số trường đặc biệt và có một phiên bản MIN và MAX mà chúng tôi chuyển thành truy vấn phạm vi :[0 TO 125000]. Và có một số danh sách thả xuống hỗ trợ nhiều lựa chọn mà chúng tôi cũng chuyển thành OR, ví dụ: State:("WA" OR "CA" OR "OR" OR "NV")

+0

Tôi nghĩ rằng tôi hiểu quan điểm của bạn nhưng, tôi cho phép người dùng tìm kiếm thông qua giao diện giao diện người dùng, vì vậy tôi không thể yêu cầu người dùng nhập * (mái nhà HOẶC sửa) *. – Filype

+0

Cảm ơn bạn đã giải thích thêm, tuy nhiên, tôi dường như không nhận được nhiều kết quả hơn bằng cách nhập http: // localhost: 8080/solr/select /? Q = (mái% 20OR% 20fixing) – Filype

+1

Filype, nếu bạn cho phép người dùng tìm kiếm giao diện người dùng và mong đợi một hoặc hành vi tìm kiếm, bạn nên xử lý truy vấn của họ trên đầu cuối trước khi gửi đến SOLR. Bạn nên chuẩn bị các giá trị của mình với dấu ngoặc đơn, như đã nêu ở trên. Nếu bạn muốn thêm OR hoặc AND, hãy cung cấp cho người dùng một tùy chọn, phát hiện và sau đó chuẩn bị và đưa chúng vào truy vấn SOLR của bạn trước khi chuyển nó sang SOLR. – Atomox

0

Solr sẽ không nhất thiết trả lại 7 kết quả cho "mái nhà HOẶC sửa chữa" vì một kết quả có thể bao gồm cả hai "" mái "và" sửa lỗi ". Giả sử "mái nhà" có 3 kết quả, "sửa chữa" có 4, nhưng cả "mái" và "sửa lỗi" xuất hiện trong 2 kết quả. Bạn sẽ chỉ nhận được 5 kết quả trên một tìm kiếm cho "mái nhà OR sửa chữa" như Solr sẽ không trả về kết quả trùng lặp.

Bạn đã thử sử dụng không gian được mã hóa url ("% 20") thay vì dấu "+" chưa?Nếu toán tử mặc định là HOẶC bạn không cần phải bao gồm toán tử đó.

+0

mái% 20fixing cũng trả về 0 kết quả, tôi hiểu điểm của bạn, bất kể là 7 hay 5, tôi ít nhất cũng mong đợi 4 kết quả. – Filype

+0

Có thể trường mà bạn đang tìm kiếm không được mã hóa không? –

+0

Màn hình quản trị viên của tôi cho biết đây là một trường Loại TEXT_EN – Filype

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