Распарсить строку для полнотекстового поиска с русскими значениями выражений?

Ссылка скопирована
PHP
1 ответ

Есть задача сделать полнотекстовый поиск по БД на постгрес.

Но задача усложняется тем, что мы в строке поиска должны писать запросы по русский.
ПРОЕКТ = "Название" И КОММЕНТАРИЙ ВХОДИТ (тест)

И такой запрос должен превратиться в запрос на доктрине в постгрю.

SELECT * FROM projects WHERE name = "Название" and comments in ('тест')

SELECT * FROM projects WHERE name = "Название" and comments in ('тест')

Кто-то сталкивался с подобной задачей? Как распарсить входящий запрос на русском языке?

Дополнительно:

ты точно понимаешь что такое "полнотекстовый" поиск?

  • Everything_is_bad, Я понял о чем ты, про to_tsvector, это пример. Основная задача распарсить строку на русском языке.
  • Кирилл Горелов, ну так значит fulltext search тут вообще ни при чем, а парсить строки в твоем случае, это уже вообще из основ написания компиляторов. Я бы вообще сначала разобрался откуда приходит текст "И КОММЕНТАРИЙ ВХОДИТ" и можно ли на этом этапе сделать "нормальный" формат запроса
  • Вообще-то

    по русский

    по-русски

  • 1. Не понятно что такое

    ПРОЕКТ = "Название" И КОММЕНТАРИЙ ВХОДИТ (тест)

    2. что находится в БД
    3. вместо

    SELECT * FROM projects WHERE name = "Название" and comments in ('тест')

    SELECT * FROM projects WHERE name = "Название" and comments in ('тест')

    имелось в виду

    SELECT * FROM projects WHERE name = 'Название' AND comments in ('тест')

    SELECT * FROM projects WHERE name = 'Название' AND comments in ('тест')

    ?
    Тогда comments нужно сопоставлять с введенным текстом, типа 'тест'?

  • Кирилл Горелов,

    Основная задача распарсить строку на русском языке.

    - ни доктрина, ни pgsql тут не при чем. Вам нужно https://phplrt.org

  • Ответы:

    https://www.doctrine-project.org/projects/doctrine...
    https://www.doctrine-project.org/projects/doctrine...

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Артём Dev Ответ

    Для распарсивания строки для полнотекстового поиска с русскими значениями выражений, можно воспользоваться различными библиотеками и инструментами. Один из популярных способов - использовать регулярные выражения в сочетании с функциями обработки строк.

    Прежде всего, необходимо определить критерии для поиска и обработки текста. Например, можно использовать регулярные выражения для поиска слов или фраз, их выделения и анализа.

    Для работы с русскими значениями важно учитывать особенности кодировки и языка. Можно использовать функции работы с текстом в PHP, такие как mb_strtolower() для приведения текста к нижнему регистру, mb_split() для разделения строки на слова, preg_match() для поиска совпадений по шаблону и т.д.

    Пример использования регулярных выражений для поиска слова "привет" в строке:

    $string = "Привет, мир!";
    $pattern = '/привет/iu'; // учитываем регистр и язык
    if (preg_match($pattern, $string)) {
        echo "Слово 'привет' найдено!";
    } else {
        echo "Слово 'привет' не найдено.";
    }

    $string = "Привет, мир!"; $pattern = '/привет/iu'; // учитываем регистр и язык if (preg_match($pattern, $string)) { echo "Слово 'привет' найдено!"; } else { echo "Слово 'привет' не найдено."; }

    Также можно использовать специализированные библиотеки для полнотекстового поиска, такие как Elasticsearch, Sphinx и др. Они предоставляют более продвинутые возможности для обработки текста, поиска и анализа.

    Независимо от выбранного подхода, важно тестировать и оптимизировать алгоритмы обработки текста для достижения наилучшей производительности и точности поиска.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно