SQL SERVER 2008 (非R2)我有一批记录,Content字段做了全文索引,但出现如下的问题,按理说查“学”查出来的记录应该一定包含“学习”的记录,但下面的这个查询的结果有几万条,说明全文检索确实具有一定的命中率,并没有全部查出来。这个有办法精确查询吗(不要漏掉记录)?
SELECT [KEY] FROM CONTAINSTABLE(CM_BookPageDetail,(Content),N'学习') A WHERE A.[KEY] NOT IN ( SELECT [KEY] FROM CONTAINSTABLE(CM_BookPageDetail,(Content),N'学') )
没有"学习"一定包含"学"这一说的.照这个逻辑 "这个有办法精确查询吗" 这句话一定包含"询吗"这个词了
要想实现你说的这种功能,那样的索引量我都不敢想.
现在的索引都是分词索引.就是把一个句子分成几个词.比如"你好好学习"能分出"学习",但因为学习已经是一个关键词了
所以不会把"学习"再分成"学"和"习"
至于查询准确与否的关键在于分词算法.sqlserver的全文检索我不知道能不能改分词算法``
@吴瑞祥: 我和你的理解是一样的。因为我查的资源是需要精确匹配的,如果只能如此实现。那就不需要使用全文索引了。多查几分钟倒影响不大。