Как преобразовать пользовательский запрос поиска пользователя в полнотекстовый поиск? - PullRequest
2 голосов
/ 27 июня 2019

В настоящее время я использую простой полнотекстовый поиск с / против полной фразы, набранной пользователем. Идея состоит в том, чтобы позволить пользователю вводить поисковый запрос, используя следующие соединители:

AND, OR, NOT
"" - exact match
() - grouping terms
* - single letter wildcard
! - root expander
/n - terms within n words of each other
/s - terms within same sentence of each other
/p - terms within the same paragraph

Все эти разъемы будут работать как логические операторы. Задание состоит из двух частей:
1. проанализировать введенную пользователем строку (с возможными синтаксическими ошибками)
2. построить запрос SQL

Точно такой же поиск работает здесь - https://casetext.com/search

Кроме того, мне интересно, будет ли легче перейти на Lucena / Solr или Elasticsearch, у которых есть встроенные парсеры, но все же не то, что мне нужно?

Я уже видел синтаксический анализ пользовательских запросов полнотекстового поиска в предложении WHERE MySQL с использованием PHP , но он не дает никаких ответов

И я увидел эти пакеты:
https://packagist.org/packages/pecee/boolean-query-parser - базовый синтаксис поддерживается
https://packagist.org/packages/gdbots/query-parser - более сложные, но не охватывающие последние 4 разъема из моего списка

...