[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: настройки Sphinx для транслитерации запросов
ShutTap
Здравствуйте.
Так понимаю из документации, "корявые слова" и слова на транслите можно добавлять в wordforms и через regexp_filter
Допустим, в базе есть только слова на русском, например "лампа".

попробовал добавить в wordforms.txt
lampa => лампа

попробовал добавить
regexp_filter = (l) => л
regexp_filter = (a) => а
regexp_filter = (m) => м
regexp_filter = (p) => п

не работает... при поиске lampa ничего не находит

Что делаю не так?

И доп. вопрос - в документации сказано, что regexp_filter работает и при индексировании, и при обработке запроса, но на некоторых форумах - что только при индексировании. Как на самом деле?
darklook
Вы правильно добавили слово "lampa" в файл wordforms.txt, но вы неправильно настроили регулярные выражения в параметре regexp_filter.

Вы используете символы "(", ")" для захвата групп, но эти символы не являются частью синтаксиса регулярных выражений в Solr. Вместо них нужно использовать "\" для экранирования символов.

Попробуйте изменить регулярные выражения на следующие:

regexp_filter = (l\) => лампа
regexp_filter = (a\) => лампа
regexp_filter = (m\) => лампа
regexp_filter = (p\) => лампа
Эти регулярные выражения будут заменять любые символы, которые начинаются с "l", "a", "m" или "p" на слово "лампа".

Что касается второго вопроса, то regexp_filter действительно работает как при индексировании, так и при обработке запроса. Однако, он может работать не так эффективно, как при индексировании, поскольку он выполняется во время выполнения запроса, что может привести к более медленным ответам.
darklook
кстати ShutTap обрати внимание что регулярные выражения могут быть дорогостоящими в плане производительности, поэтому их следует использовать с осторожностью и только в том случае, когда они действительно необходимы.
ShutTap
с помощью regexp_filter предполагал просто заменять буквы, условно, если бы набрали транслитом - переводить в русский. "лампа" - просто для примера
то есть, буква l - в русскую л
p - в русскую п
и так далее
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.