模糊查询的内容比全文检索出来的要多?什么原因

星际 2009-07-22 02:45:00

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多条,差的也太多了吧,求高手指教
...全文
215 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrb2008 2009-07-22
  • 打赏
  • 举报
回复
从哪看过一篇关于全文索引的内容,它是满足百分之九十八的人的需求的,不是百分之百,可以自己考虑变通。
星际 2009-07-22
  • 打赏
  • 举报
回复
应该是中文分词问题,复杂了。。。
星际 2009-07-22
  • 打赏
  • 举报
回复
好像是这样,我重新试了一个词
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 '%世界%'

全文检索方式返回的:世界前后必须有空格、单引号、双引号、或者其他符号等等,系统才会返回,如果是中文和关键词连在一起,系统是不返回的。。。。

不知道有什么办法解决这个问题?
hrb2008 2009-07-22
  • 打赏
  • 举报
回复
like 这种是模糊查询,会遍历所有记录中包含符合项的内容,个人认为也是精确查询的变种
全文索引是将匹配度(相似度)比较高的排在前面。匹配效果是按term(词源)匹配。其中词源这还
有分词的定义像中文‘和服’与 “商品和服务” 分词要按商品与服务两个词来分,就将和服排后面否则包括“和服”这个词的会被排上面
以上仅凭个人理解
alisafan123 2009-07-22
  • 打赏
  • 举报
回复
全文索引是根据词表进行查询.如果你输入的词不在词表中或没有意义 可能一条记录都查不出来.虽然记录中确实有这两个字也没有用.

普通的like 索引就没有这个问题 它不管你输入的是什么词都会去检索,只要有就会返回结果.但是有一
点要注意 like 查询的效率非常低 如果数据良的话几个小时以后返回结果都有可能.
星际 2009-07-22
  • 打赏
  • 举报
回复
楼上的代码执行后和like一致

现在问题就是为什么全文检索的结果远远少于like或者patindex
--小F-- 2009-07-22
  • 打赏
  • 举报
回复
select * from tb_topics tt WHERE patindex('%的%',title)>0
多了个'
--小F-- 2009-07-22
  • 打赏
  • 举报
回复
--TRY
select * from tb_topics tt WHERE patindex(''%的%',title)>0
星际 2009-07-22
  • 打赏
  • 举报
回复
2楼想说啥
星际 2009-07-22
  • 打赏
  • 举报
回复
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)
windy454 2009-07-22
  • 打赏
  • 举报
回复
SELECT * FROM tb_topics tt WHERE tt.title LIKE '%的%'

22,302

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧