Обработка MySQL полнотекстовых специальных символов - PullRequest
6 голосов
/ 14 ноября 2008

При использовании полнотекстового поиска MySQL в логическом режиме существуют определенные символы, такие как + и -, которые используются в качестве операторов. Если я ищу что-то вроде «C ++», он интерпретирует + как оператор. Как лучше всего обращаться с этими специальными персонажами?

Текущий метод, который я использую, заключается в преобразовании всех символов + в данных в _plus. Он также преобразует символы &, @, / и # в текстовое представление.

Ответы [ 2 ]

5 голосов
/ 28 декабря 2008

Нет способа сделать это с помощью полнотекстового поиска MySQL. То, что вы делаете (замена специальных символов предопределенной строкой), является единственным способом сделать это.

Возможно, вы захотите использовать вместо Sphinx Search . По-видимому, он поддерживает экранирование специальных символов и, по всем отчетам, значительно быстрее полнотекстового поиска по умолчанию.

4 голосов
/ 14 мая 2009

MySQL довольно жесток в том, какие маркеры он игнорирует при построении полнотекстовых индексов. Я бы сказал, что там, где встречается термин «C ++», он, вероятно, удаляет символы плюс, оставляя только C, а затем игнорирует это, потому что он слишком короткий. Возможно, вы могли бы настроить MySQL так, чтобы он включал однобуквенные слова, но он не оптимизирован для этого, и я сомневаюсь, что вы можете заставить его обрабатывать символы плюс так, как вы хотите.

Если вам нужна хорошая внутренняя поисковая система, где вы можете настраивать подобные вещи, посмотрите Lucene , который был портирован на различные языки , включая PHP (в среде Zend) .

Или, если вам нужно больше для «пометки», чем текстовый поиск, тогда может подойти что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...