Каков наилучший способ преобразования поисковых терминов, введенных пользователем, в запрос, который можно использовать в предложении 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 из токенов.
Однако, учитывая, что это, вероятно, является общим требованием для многих систем, использующих полнотекстовый поиск, мне любопытно, как другие разработчики подошли к этой проблеме, и есть ли лучший способ сделать это.