exec sp_fulltext_database 'enable'
exec sp_fulltext_catalog 'VK_Test', 'create', 'e:\FullText'
exec sp_fulltext_table 'tb_topics', 'create', 'VK_Test','pk_tb_topics'
exec sp_fulltext_column 'tb_topics', 'title', 'add'
execute   sp_fulltext_table   'tb_topics','activate'   
exec sp_fulltext_table 'tb_topics', 'start_full'
  
select FULLTEXTCATALOGPROPERTY('VK_Test', 'Populatestatus')  select * from freetexttable(tb_topics, title,'%的%') a
inner JOIN tb_topics dd
ON a.[KEY]=dd.tid                 SELECT * FROM tb_topics tt WHERE tt.title LIKE '%的%'全文检索出来的是170条,而模糊查询出来的是5W多条,差的也太多了吧,求高手指教

解决方案 »

  1.   

    SELECT * FROM tb_topics tt WHERE tt.title LIKE '%的%' 
      

  2.   

    sql 版本:Microsoft SQL Server 2005 - 9.00.1406.00 (Intel X86)   Mar  3 2007 18:40:02   Copyright (c) 1988-2005 Microsoft Corporation  Enterprise Edition on Windows NT 5.2 (Build 3790: Service Pack 2) 
      

  3.   

    --TRY
    select * from tb_topics tt WHERE patindex(''%的%',title)>0 
      

  4.   

    select * from tb_topics tt WHERE patindex('%的%',title)>0多了个'
      

  5.   

    楼上的代码执行后和like一致现在问题就是为什么全文检索的结果远远少于like或者patindex
      

  6.   

    全文索引是根据词表进行查询.如果你输入的词不在词表中或没有意义 可能一条记录都查不出来.虽然记录中确实有这两个字也没有用. 普通的like 索引就没有这个问题 它不管你输入的是什么词都会去检索,只要有就会返回结果.但是有一 
    点要注意 like 查询的效率非常低 如果数据良的话几个小时以后返回结果都有可能. 
      

  7.   

    like 这种是模糊查询,会遍历所有记录中包含符合项的内容,个人认为也是精确查询的变种
    全文索引是将匹配度(相似度)比较高的排在前面。匹配效果是按term(词源)匹配。其中词源这还
    有分词的定义像中文‘和服’与 “商品和服务” 分词要按商品与服务两个词来分,就将和服排后面否则包括“和服”这个词的会被排上面
    以上仅凭个人理解
      

  8.   

    好像是这样,我重新试了一个词
    select * from freetexttable(tb_topics, title,'世界') a
    inner JOIN tb_topics dd
    ON a.[KEY]=dd.tidSELECT * FROM tb_topics tt WHERE tt.title LIKE '%世界%'全文检索方式返回的:世界前后必须有空格、单引号、双引号、或者其他符号等等,系统才会返回,如果是中文和关键词连在一起,系统是不返回的。不知道有什么办法解决这个问题?