2014-06-24 13 views
6

Tôi mới dùng Sphinx và đang cố gắng định cấu hình chính xác. Tôi muốn cho phép đối sánh một phần từ cho tất cả các tìm kiếm và không muốn người dùng phải nhập ký tự đại diện cho riêng họ.Bật các từ khớp một phần trong Nhân sư?

Tôi muốn tìm kiếm hoạt động như trên Amazon hay Google mà nếu bạn bắt đầu gõ một từ, gợi ý sẽ đi lên. Vì vậy, ví dụ: nếu ai đó đã nhập "x", thì các kết quả phù hợp như "Xbox" sẽ xuất hiện.

Dưới đây là các thiết lập index Tôi hiện có:

min_word_len = 1 
min_prefix_len = 1 
prefix_fields = name 
charset_type = utf-8 

Về phía PHP của sự vật, Tôi đang sử dụng SPH_MATCH_EXTENDED2SPH_SORT_RELEVANCE. Tôi để chế độ xếp hạng mặc định, bất kể đó là gì. Các cài đặt này dường như cung cấp kết quả tìm kiếm tốt nhất khi tôi thay đổi cài đặt dựa trên bản dùng thử và lỗi.

Tôi đã đọc các câu hỏi tương tự trên đây và trên các trang web khác, nhưng các câu trả lời dường như luôn luôn tham chiếu enable_star tài liệu được cho là không được chấp nhận.

Vì vậy, câu hỏi của tôi là, làm thế nào để kích hoạt từ phù hợp một phần trong Sphinx? Tôi có nên chỉ cần thêm * vào mỗi từ trong truy vấn của người dùng, thực hiện một việc như thế này?

$search = str_replace(' ', '* ', trim($search)) + '*'; 

Trả lời

6

Bạn có thể đặt expand_keywords = 1described in the docs.

Nó thực sự khá nhiều chỉ cần thêm những ngôi sao cho bạn tự động - theo cách nói chung các trận đấu chính xác sẽ xếp hạng cao hơn tinh khiết 'phần' nhẹ phù hợp.

+0

Cảm ơn bạn, nó hoạt động một cách hoàn hảo! – Nate

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