2011-04-26 27 views
7

Tôi đang tìm kiếm một công cụ tìm kiếm tài liệu (như Xapian, Whoosh, Lucene, Solr, Sphinx hoặc những người khác) có khả năng tìm kiếm một phần các thuật ngữ.Tìm kiếm tài liệu trên các từ một phần

Ví dụ khi tìm kiếm thuật ngữ "brit" công cụ tìm kiếm sẽ trả về các tài liệu có chứa một trong hai "britney" hoặc "Anh" hay nói chung bất kỳ tài liệu chứa một r khớp từ *brit*

phương tiếp tuyến, tôi nhận thấy hầu hết các động cơ sử dụng TF-IDF (tần suất tài liệu tần số nghịch đảo tần số) hoặc các dẫn xuất của nó dựa trên các điều khoản đầy đủ và không phải là các thuật ngữ một phần. Có bất kỳ kỹ thuật nào khác đã được triển khai thành công bên cạnh TF-IDF để truy xuất tài liệu không?

+0

Tôi khuyên bạn nên thêm thẻ công cụ tìm kiếm vào câu hỏi, lucene, Xapian hoặc ít nhất là công cụ tìm kiếm. Tìm kiếm là một thẻ chung, những người vào công cụ tìm kiếm có thể cảm thấy mệt mỏi khi đọc tất cả các loại yêu cầu lạ đối với các câu hỏi không liên quan đến công cụ tìm kiếm. Chúc may mắn! – shellter

+0

Cảm ơn bạn đã gợi ý nơi trú ẩn. Đã thêm nhiều thẻ hơn. – GeneralBecos

+1

Bất kỳ lý do nào bạn chưa đọc tài liệu về các công cụ khác nhau. Lucene (và do đó Solr) hỗ trợ tìm kiếm theo ký tự đại diện: http://wiki.apache.org/lucene-java/LuceneFAQ#What_wildcard_search_support_is_available_from_Lucene – ewh

Trả lời

11

Với Lucene bạn sẽ có thể thực hiện điều này bằng nhiều cách:

1.) Bạn có thể sử dụng ký tự đại diện truy vấn *brit* (Bạn sẽ phải thiết lập phân tích cú pháp truy vấn của bạn để cho phép thẻ hoang dã hàng đầu)

2 .) Bạn có thể tạo trường bổ sung có chứa N-Grams of all the terms. Điều này sẽ dẫn đến các chỉ mục lớn hơn, nhưng sẽ có nhiều trường hợp nhanh hơn (tốc độ tìm kiếm).

3.) Bạn có thể sử dụng tìm kiếm mờ để xử lý các lỗi nhập trong truy vấn. ví dụ. ai đó đã nhập britnei nhưng muốn tìm britney.

Đối với truy vấn ký tự đại diện và tìm kiếm mờ, hãy xem query syntax docs.

+0

Làm cách nào bạn có thể sử dụng "*" ở đầu truy vấn? – SomethingSomething

+2

Bạn phải thông báo cho trình phân tích cú pháp truy vấn để cho phép các loại truy vấn này. Sử dụng hàm setAllowLeadingWildcard để làm điều đó. https://lucene.apache.org/core/4_0_0/queryparser/org/apache/lucene/queryparser/classic/QueryParserBase.html#setAllowLeadingWildcard(boolean) – csupnig

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