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