将用户输入的搜索字词转换为可用于全文搜索的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"'))
我正在使用query parser class,它使用正则表达式解析用户输入的查询令牌,然后从令牌构造where子句.
然而,鉴于这可能是许多使用全文搜索的系统的常见要求,我很好奇其他开发人员如何处理此问题,以及是否有更好的处理方式.
解决方法
这可能不是你正在寻找,但它可能会给你一些进一步的想法.
http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/