Само думите и операторите имат значение в булев режим на търсене. Операторите са:+
, -
, > <код> ,
( )
, ~
, *
, "
, @distance
. След известно проучване открих какви са знаците на думите:главни букви, малки букви, цифра (цифра) и _
. Мисля, че можете да използвате един от двата подхода:
-
Заменете всички несловови знаци с интервали (предпочитам този подход). Това може да се постигне с регулярен израз:
$search = preg_replace('/[^\p{L}\p{N}_]+/u', ' ', $keyword);
-
Заменете символите-оператори с интервали:
$search = preg_replace('/[+\-><\(\)~*\"@]+/', ' ', $keyword);
Само думите се индексират от пълнотекстова търсачка и могат да бъдат търсени. Неслововите знаци не се индексират, така че няма смисъл да ги оставяте в низа за търсене.
Препратки:
- Булеви пълнотекстови търсения
- Фина настройка на MySQL пълнотекстово търсене (вижте:„Промени в набора от знаци“)
- PHP:preg_replace
- PHP:Свойства на символите в Unicode
- PHP:Възможни модификатори в моделите на регулярни изрази