我用contains(products,'电机')和products   like   '%电机%'   查出来的结果数不相同 
答:
因为contains它把“电机”当作整词,而不是电一个词和机一个词
所以搜索“电”字没有在电机里面 所以会少条数

解决方案 »

  1.   

    楼上的误会了我的意思吧,我现在不是搜“电”,而是“电机”。
    我看了很多帖子,都说sql的全文搜索,对中文支持不好,有时记录就搜不出来有些人说自己建索引文件,用什么倒排序,我现在对这个还不是很懂我现在不想用sql2005的全文索引了,我采用以下的这种方法不知道可不可行:
    1:建立一个索引表,包含3个字段(id,keyword,recordid),recordid是指含有keyword的关键字的记录id(用逗号隔开)
    2:定期对我重建索引表(对于这个过程,我现在不知道用什么算法来实现好一点)3:搜索的时候,先查索引表,再根据recordid,得到需要的记录我现在的问题,主要是怎么对表进行索引快一点,至少不会造成死机,或影响别人访问,期待有人回答!!!
      

  2.   

    这是全文检索中文分词问题!好像目前还没有什么好的解决方法!比如你在baidu上搜索 '脑' 肯定查询出来的都没有'电脑'这个词 按道理说 我查询 脑 电脑业应该包含进去,可是就是没有!呵呵 !
      

  3.   

    全文索引 和普通的like 索引是有很大区别的. 全文索引是根据词表进行查询.如果你输入的词不在词表中或没有意义 可能一条记录都查不出来.虽然记录中确实有这两个字也没有用. 普通的like 索引就没有这个问题 它不管你输入的是什么词都会去检索,只要有就会返回结果.但是有一
    点要注意 like 查询的效率非常低 如果数据良的话几个小时以后返回结果都有可能.数据库全文索引的准确性是比较低的  包括oracle 也一样. 可能数据库的主要路线不是这方面而更注重的是信息的管理.或者是先天不足吧.如果要作到高准确率是没有办法的.而且填充索引的速度非常慢.如果要是真想作到高准确率并且高速 就要抛弃数据库而使用专门的全文检索工具.