@rloprlorpr

Как настроить индекс и поиск чтобы просто искал точную подстроку как like «%test%»?

Нужно чтобы сфинкс просто работал как like в mysql и искал вхождение точно заданной строки, вплоть до пробелов, точек и тд.
Например:
where field like "%тостер   нереально крутой site!!1,.%"

Надо чтобы ничего не матчилось и не заменялось, а просто покорно искалась вся заданная строка.
Какие конфиги указать, алфавит и тд в сфинксе и индексе, как этого добиться?
  • Вопрос задан
  • 156 просмотров
Пригласить эксперта
Ответы на вопрос 1
@ghostiam
На Go писатель, серверов пинатель.
Установить настройки индекса:
min_word_len = 1
min_infix_len=2 # минимум 2

Добавить все спецсимволы в charset_table.
Пробелы могут не сработать в charset_table и их придётся заменять на другой символ (Нужно тестировать, уже точно не помню, но вроде как документация разрешает использовать пробел через unicode, как U+20).
И запрос будет выглядеть как-то так:
SELECT field FROM index WHERE MATCH('@field *тостер   нереально крутой site!!1,.*')

или так, если придётся использовать замену:
SELECT field FROM index WHERE MATCH('@field *тостер__нереально_крутой_site!!1,.*')


Я когда-то использовал такой charset_table (в комментария расшифровка unicode символов)

charset_table = 0..9, A..Z->a..z, _, a..z, \
    U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451, \
    U+002D, U+003A, U+002B, U+0028, U+0029
    # А..Я->а..я, а..я, Ё->ё, ё, 
    # -, :, +, (, )



Документация:
min_infix_len
min_word_len
charset_table
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы