2011-10-13 157 views
2

我试图在登录表上执行全文搜索,当我执行相应的查询时,以下是我的观察:SQL全文搜索查询?

当我执行以下查询实现全文搜索时,它能够获取近似1665行

select * from t_user where contains(LOGIN_ID, '"*david*") 

但不使用全文搜索使用以下实施类似的查询时,它返回1872年行

select * from T_USER where LOGIN_ID like '%david%' 

正如我浏览扔我的表中的数据我得出的结论是,当我使用包含关键字它忽略了行登录ID像DDAVID_D或我可以说它只是返回行大卫的话分开,如DAVID_FRANK

有没有一种方法来搜索的话之间的单词(如DDavidFrank或者我可以在DDAVIDFRANK长期连续字之间寻找大卫像串之间寻找大卫)有效地实现全文搜索?

回答

0

尝试

WHERE FREETEXT(LOGIN_ID, 'david') OR CONTAINS(LOGIN_ID, 'david')" 
+0

试了一下,它也取1665行,而忽略休息... :( – Ankit

+0

我希望全文搜索不尝试使用适用于区分大小写的搜索或SQL Server排序规则你的数据库搞乱了你的全文搜索。是Latin1_General_CI_AS? –

+0

早就试过了Latin1_General_CI_AS,然后改成了SQL_Latin1_General_CP850_CI_AS,仍然是同样的问题... – Ankit