将用户输入的搜索词转换为可在 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 子句。
但是,鉴于这可能是许多使用全文搜索的系统的共同要求,我很好奇其他开发人员是如何解决这个问题的,以及是否有更好的处理方式。