Какой лучший способ конвертировать поисковые запросы, введенные пользователем, в запрос, который может использоваться в предложении where для полнотекстового поиска для запроса таблицы и получения соответствующих результатов? Например, следующий запрос, введенный пользователем:
+"e-mail" +attachment -"word document" -"e-learning"
Должен перевести что-то вроде:
SELECT * FROM MyTable WHERE (CONTAINS(*, '"e-mail"')) AND (CONTAINS(*, '"attachment"')) AND (NOT CONTAINS(*, '"word document"')) AND (NOT CONTAINS(*, '"e-learning"'))
В данный момент я использую класс парсера запросов, который анализирует запрос, введенный пользователями в токены, используя регулярное выражение, а затем создает предложение where из токенов.
Однако, учитывая, что это, вероятно, общее требование для многих систем, использующих полнотекстовый поиск, мне любопытно, как другие разработчики подошли к этой проблеме, и есть ли лучший способ сделать что-то.