2016-09-12 20 views
8

Có thể tìm kiếm các từ trong một câu bằng Nhân sư. Ví dụ: chúng tôi có văn bản tiếp theo:Làm thế nào để cải thiện việc phát hiện các câu trong Sphinx?

Вася молодец, съел огурец, т.к. проголодался. Такие дела.

Nếu tôi tìm kiếm

молодец SENTENCE огурец 

tôi thấy văn bản này. Nếu tôi tìm kiếm

молодец SENTENCE проголодался 

tôi không thể tìm thấy văn bản này, bởi vì dấu chấm từ cụm từ т.к. coi là cuối câu.

Và cách tôi thấy, tập hợp các dấu phân cách được mã hóa cứng trong Sphinx's sources.

Câu hỏi của tôi là cách cải thiện khả năng phát hiện câu? Cách tốt hơn cho tôi là sử dụng trình phân tích cú pháp Tomita của Yandex hoặc thư viện nlp khác với phát hiện thông minh các câu.

+0

YE, mã cứng của nó, nhưng các quy tắc xung quanh '.' nên được thiết lập sao cho 'T.K.' không nên được coi là ranh giới tình cảm, vì nó là một sự lạm dụng. http://sphinxsearch.com/docs/current.html#conf-index-sp - – barryhunter

+0

@barryhunter, vâng, nhưng 'т.к.' không phải là từ viết tắt chuẩn cho Sphinx? Làm thế nào để xác định chữ viết tắt này? Bất kỳ cách nào có thể xảy ra với các tình huống khác: "Компании Yahoo! известна во всем мире." và các trường hợp khác. Tôi nghĩ cách tốt hơn - phân bổ phân đoạn cho thư viện bên ngoài ... – mnv

+0

thats điều theo quy tắc, nó nên được tính là abrivation (như tôi hiểu nó), quy tắc của nó dựa hơn là appriviations cụ thể. Khi mở rộng nhân sư để sử dụng các quy tắc mở rộng hơn, sẽ cần sửa đổi nguồn. – barryhunter

Trả lời

1

Tách văn bản thành câu có trình phân tích cú pháp Tomita của Yandex. Chúng tôi nhận được văn bản, được chia nhỏ bởi "\ n".

Xóa tất cả ".", "!", "?" để lại cuối cùng từ mỗi câu.

Tạo chỉ mục Sphinx bằng dữ liệu được xử lý trước này.

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