2015-06-03 14 views
6

Tôi đang sử dụng Solr-5.0.0. Tôi đang tìm kiếm trên một lĩnh vực product_name. Tôi cần thêm một số quy tắc để nhận kết quả có liên quan.Tăng quy tắc Solr

  1. Nếu tôi tìm kiếm một từ, nếu đối sánh chính xác tồn tại, nó sẽ đến trước. Ví dụ: nếu tôi tìm kiếm laptop, trước tiên nó phải trả lại chính xác product_name với máy tính xách tay trước tiên.

  2. Nếu tôi tìm kiếm nhiều hơn một từ, nó phải tuân theo quy tắc 1. cùng với ít nhất là tên từ xa có độ dài đến trước. Ví dụ: nếu tôi tìm kiếm dell laptop, nó sẽ trả về Máy tính xách tay Dell trước tiên hơn máy tính xách tay dell inspiron.

  3. Nếu tôi tìm kiếm các từ, từ khóa không được trả lại kết quả chứa with hoặc without từ. Ví dụ: trong tìm kiếm laptop bag, không được cung cấp cho máy tính xách tay dell với túi hoặc máy tính xách tay dell không có túi kết quả trước tiên.

Làm cách nào để có thể đạt được các quy tắc này dựa trên kết quả tìm kiếm có liên quan tại thời điểm truy vấn?

Ứng dụng của tôi nằm trong java, vì vậy câu trả lời Java được đánh giá cao.

Trả lời

1

Để bắt đầu, bạn nên sử dụng trình phân tích cú pháp truy vấn dismax hoặc edismax thay vì mặc định (lucene).

Sau đó, bạn có thể cải thiện tính thích hợp sử dụng các thông số khác nhau:

  1. : Sử dụng qf để thúc đẩy lĩnh vực PRODUCT_NAME của bạn.
  2. : Sử dụng pf để tăng trường product_name của bạn trong đó tất cả các cụm từ trong tham số q xuất hiện ở gần.
  3. : Sử dụng bq để tăng tài liệu có các từ with hoặc without không xuất hiện. See here. Ví dụ: bq=(*:* -with -without)^999