2010-06-11 34 views
5

Tôi đang sử dụng Solr cùng với NGramTokenizerFactory để giúp tạo ra thẻ tìm kiếm chuỗi con của lờiTìm kiếm lời ngắn với Solr

NGramTokenizer được cấu hình với chiều dài từ tối thiểu 3

Điều này có nghĩa rằng tôi có thể tìm kiếm ví dụ "không" và sau đó đối sánh với từ "không thể tin được".

Tuy nhiên, tôi gặp sự cố với các từ ngắn như "I" và "in". Chúng không được lập chỉ mục bởi SOLR (Tôi nghi ngờ nó là do NGramTokenizer) và do đó tôi không thể tìm kiếm chúng.

Tôi không muốn giảm độ dài từ tối thiểu xuống 1 hoặc 2, vì điều này tạo ra chỉ mục tìm kiếm lớn. Nhưng tôi muốn SOLR bao gồm toàn bộ các từ có độ dài thấp hơn mức tối thiểu này.

Tôi có thể làm như thế nào?

/Carsten

Trả lời

6

Trước hết, cố gắng tìm hiểu lý do tại sao lời nói của bạn không được lập chỉ mục bởi Solr bằng cách sử dụng "Phân tích Tool"

http://localhost:8080/solr/admin/analysis.jsp 

Chỉ cần đặt các lĩnh vực và các văn bản mà bạn đang tìm kiếm cho và xem máy phân tích nào đang lọc ngắn hạn của bạn. Tôi đề nghị bạn làm như vậy bởi vì bạn nói rằng bạn chỉ có một "nghi ngờ" và bạn phải chắc chắn về máy phân tích nào lọc dữ liệu của bạn.

Sau đó, tại sao bạn không chỉ đơn giản là sao chép thuật ngữ trong một trường khác mà không có trình phân tích đó?

Bằng cách này, các cụm từ của bạn sẽ được lập chỉ mục hai lần và sẽ xuất hiện dưới dạng chính xác từ và dưới dạng n-gram. Sau đó, bạn phải đối phó với điểm số của hai lĩnh vực khác nhau.

Tôi hy vọng điều này đã giúp bạn theo một cách nào đó.

Một số liên kết cho tập hợp và copyfield thuộc tính:

Indexing data in multiple fields

Using copy field tag

+1

Cảm ơn đề nghị của bạn. Tôi đã chạy phân tích chống lại hai từ: Một trường hợp bình thường - "jeudan" và 1 chữ cái "j". Đây là kết quả http://pastie.org/1000520 Như bạn có thể thấy, nó thực sự là NGramTokenizer lọc ra 1 chữ cái - hoặc trong EdgeNGramTokenizer này, nhưng tôi đã thử nghiệm cả hai. Tôi có thể thử những gì bạn đề xuất, nhưng tôi muốn, hãy để Solr làm tất cả các văn bản-rung. Tôi thực hiện rất nhiều tìm kiếm theo từng trường cụ thể, do đó đề xuất của bạn sẽ dẫn đến nhu cầu viết lại các truy vấn đó để xem xét hai trường văn bản thay vì một. Có thể nhưng phản trực giác. –

+1

Hãy xem xét rằng nó là điển hình trong solr để có một lĩnh vực tập hợp nơi bạn thực hiện truy vấn, và sau đó là một loạt các lĩnh vực với các loại khác nhau và phân tích. Chỉ cần sử dụng thẻ copyfield để sao chép tất cả trường nguồn của bạn vào mục tiêu. Bạn không phải thay đổi truy vấn của mình. –

+1

Vâng câu trả lời của bạn thực sự giải quyết vấn đề này và các vấn đề khác, mà tôi phải đối mặt. Tôi không biết về công cụ phân tích. Tôi đã thử một vài bộ lọc và tokenizers khác thông qua bộ phân tích, và kết thúc bằng cách sử dụng PhoneticFilter trên cả phần chỉ mục và truy vấn. Rất gọn gàng - cảm ơn rất nhiều! –

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