2014-06-24 3 views
6

मैं स्फिंक्स के लिए नया हूं और इसे सही तरीके से कॉन्फ़िगर करने की कोशिश कर रहा हूं। मैं सभी खोजों के लिए आंशिक शब्द मिलान की अनुमति देना चाहता हूं और नहीं चाहता कि उपयोगकर्ताओं को वाइल्डकार्ड वर्णों में स्वयं टाइप करना पड़े।स्फिंक्स में आंशिक शब्द मिलान सक्षम करना?

मैं खोज अमेज़ॅन या Google पर काम करना चाहता हूं, जहां आप एक शब्द लिखना शुरू करते हैं, तो सुझाव आते हैं। तो, उदाहरण के लिए, अगर कोई "x" टाइप करता है, तो "एक्सबॉक्स" जैसे मैचों को दिखाना चाहिए।

यहाँ सूचकांक सेटिंग्स मैं वर्तमान में कर रहे हैं:

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

चीजों की पीएचपी तरफ, मैं SPH_MATCH_EXTENDED2 और SPH_SORT_RELEVANCE उपयोग कर रहा हूँ। मैंने रैंकिंग मोड को डिफॉल्ट पर छोड़ दिया, जो कुछ भी है। जब मैंने परीक्षण और त्रुटि के आधार पर सेटिंग्स को बदल दिया तो ये सेटिंग्स सर्वोत्तम खोज परिणाम प्रदान करने लगती थीं।

मैंने यहां और अन्य साइटों पर समान प्रश्न पढ़े हैं, लेकिन उत्तर हमेशा enable_star संदर्भित करते हैं जो दस्तावेज़ीकरण कहता है बहिष्कृत किया जाता है।

तो मेरा सवाल यह है कि, मैं स्फिंक्स में आंशिक शब्द मिलान कैसे सक्षम करूं? क्या मुझे उपयोगकर्ता क्वेरी में प्रत्येक शब्द को * जोड़ना चाहिए, ऐसा कुछ करना?

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

उत्तर

6

आप expand_keywords = 1described in the docs के रूप में सेट कर सकते हैं।

यह वास्तव में आपके लिए सितारों को स्वचालित रूप से जोड़ता है - इस तरह से सामान्य रूप से सटीक मिलान शुद्ध 'भाग' मैचों की तुलना में थोड़ा अधिक रैंक होंगे।

+0

धन्यवाद, यह पूरी तरह से काम करता है! – Nate

संबंधित मुद्दे