【发布时间】:2010-10-05 02:19:41
【问题描述】:
将用户输入的搜索词转换为可在 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 子句。
但是,鉴于这可能是许多使用全文搜索的系统的共同要求,我很好奇其他开发人员是如何解决这个问题的,以及是否有更好的处理方式。
【问题讨论】:
标签: c# sql-server search full-text-search user-input