Как убежать или конвертировать конкретное письмо на мыслящего сфинкса - PullRequest
0 голосов
/ 10 июля 2019

например, когда я ищу 'Désinfection' или 'hello (worlds)', Result = 0 из-за 'é' и '('

, я пытаюсь изменить его с помощью '*' и пробелов, но нетрезультат

Sphinx Неожиданные параметры поиска: [: match_mode] Запрос Sphinx (1,2 мс) SELECT *, weight () как st ИЗ form_core WHERE MATCH ('hello (worlds) @country 5') AND active = 1 AND sphinx_deleted = 0 ORDER BY store DESC, st DESC LIMIT 0, 15 OPTION field_weights = (vip_keywords = 20, категория = 7, ключевые слова = 4, RSU = 3, RS = 3, описание =2), max_matches = 150 сфинксов найдено 0 результатов

1 Ответ

0 голосов
/ 12 июля 2019

Здесь следует отметить несколько вещей:

Чтобы символы с акцентом и без акцентирования считались «идентичными», вам необходимо использовать параметр charset_table:

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

Что касается знаков пунктуации, они не индексируютсяSphinx в его поведении по умолчанию - поэтому «hello (world)» в поле будет фактически сохраняться Sphinx как «hello world».Если вы хотите, чтобы пунктуация была проиндексирована (что я бы не рекомендовал, потому что это сделает значения полей гораздо менее гибкими), вам нужно перечислить эти символы как часть вашей настройки charset_table.

Также: I 'Я предполагаю, что вы используете TS v3 или новее - и это здорово!- но это также означает, что :match_mode больше не является полезной опцией.TS v3 + использует синтаксис запросов Sphinx SphinxQL (который вы можете видеть в своем вопросе - он почти идентичен SQL) - и запросы там всегда используют то, что ранее было определено как режим расширенного соответствия.

...