बूलियन सर्च मोड में केवल शब्दों और ऑपरेटरों का अर्थ होता है। ऑपरेटर हैं:+ , - , > < , ( ) , ~ , * , " , @distance . कुछ शोध के बाद मैंने पाया कि शब्द वर्ण क्या हैं:अपर केस, लोअर केस अक्षर, अंक (अंक) और _ . मुझे लगता है कि आप दो तरीकों में से एक का उपयोग कर सकते हैं:
-
सभी गैर-शब्द वर्णों को रिक्त स्थान से बदलें (मैं इस दृष्टिकोण को पसंद करता हूं)। इसे रेगेक्स के साथ पूरा किया जा सकता है:
$search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword); -
वर्ण-संचालकों को रिक्त स्थान से बदलें:
$search = preg_replace('/[+\-><\(\)~*\"@]+/', ' ', $keyword);
केवल शब्दों को पूर्ण पाठ खोज इंजन द्वारा अनुक्रमित किया जाता है और उन्हें खोजा जा सकता है। गैर-शब्द वर्णों को अनुक्रमित नहीं किया जाता है, इसलिए उन्हें खोज स्ट्रिंग में छोड़ने का कोई मतलब नहीं है।
संदर्भ:
- बूलियन पूर्ण-पाठ खोज
- फाइन-ट्यूनिंग MySQL फुल-टेक्स्ट सर्च (देखें:"चरित्र सेट संशोधन")
- PHP:preg_replace
- PHP:यूनिकोड वर्ण गुण
- PHP:रेगेक्स पैटर्न में संभावित संशोधक