2011-11-28 36 views
5

Tôi đang tìm kiếm một chỉ số Lucene và tôi đang xây dựng các truy vấn tìm kiếm nhưCách tìm kiếm trên nhiều trường trong Lucene bằng cách sử dụng Cú pháp truy vấn?

field1:"hello" AND field2:"world" 

nhưng tôi muốn tìm kiếm một giá trị trong lĩnh vực bất kỳ cũng như các giá trị trong các lĩnh vực cụ thể trong ví dụ cùng một truy vấn

field1:"hello" AND anyField:"world" 

Bất cứ ai có thể cho tôi biết cách tôi có thể tìm kiếm trên tất cả các trường được lập chỉ mục theo cách này?

Trả lời

6

Dựa trên câu trả lời tôi nhận được cho câu hỏi này: Impact of repeat value across multiple fields in Lucene ...

tôi có thể đặt các thuật ngữ tìm kiếm tương tự thành nhiều lĩnh vực và do đó tạo ra một "tất cả" lĩnh vực mà tôi đặt tất cả mọi thứ theo cách này tôi có thể. tạo một truy vấn như ...

field1:"hello" AND all:"world" 

Điều này dường như hoạt động rất tốt, ngăn nhu cầu truy vấn tìm kiếm lớn và dường như tác động hiệu suất là tối thiểu.

+0

hi u có thể đăng một số mã mẫu cho cú pháp trên .... –

2

Truy vấn Boolean (OR) với mệnh đề cho từng trường được sử dụng để tìm kiếm nhiều trường. Các MultiFieldQueryParser cũng sẽ làm điều đó, nhưng các trường vẫn cần được liệt kê. Không có trường "tất cả" tiềm ẩn; nhưng IndexReader.getFieldNames có thể có được chúng.

+0

Tôi đã tạo một trường "tất cả" rõ ràng ... nó có vẻ không lý tưởng nhưng mỗi khi tôi tạo một trường, tôi cũng thêm vào trường "tất cả". Nó hoạt động nhưng có vẻ như một chút rác rưởi. Thực sự điều tôi muốn làm là xác định nhiều tên cho mỗi trường được lập chỉ mục để tôi có thể tạo danh mục hoặc có thể tìm kiếm các trường bằng ký tự đại diện trong tên trường để tôi có thể tìm kiếm "name *" cho "name.firstname: bob" – Edd

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