日期:2014-05-18  浏览次数:20546 次

如果ntext类型的文本很大,比如有10万字符,全文检索还是要花上很多时间,怎样让他快一点?
如果ntext类型的文本很大,比如有10万字符,全文检索还是要花上很多时间,怎样让他快一点?

我用的是sql server2000
使用的是freetext()谓词

------解决方案--------------------
freetext当然非常慢了,要用contains就会快很多了
------解决方案--------------------
关注

------解决方案--------------------
同意一楼的!

使用 FREETEXT 的全文查询没有使用 CONTAINS 的全文查询精度高。SQL Server 全文检索引擎识别重要的字词和短语。保留关键字或通配符字符都不具有特殊含义,而它们指定在 CONTAINS 的参数中时则通常具有含义。 

CONTAINS:
用于搜索包含基于字符的数据类型的列,该列与单个词和短语,以及与另一个词一定范围之内的近似词精确或模糊(不太精确的)匹配或者加权匹配。CONTAINS 可以搜索: 

1 词或短语。
2 词或短语的前缀。
3 另一个词附近的词。
4 由另一个词的词尾变化生成的词。
5 比另一个词具有更高加权的词。 

FREETEXT:
用于搜索含有基于字符的数据类型的列,其中的值符合在搜索条件中所指定文本的含义,但不符合表达方式。使用 FREETEXT 时,全文查询引擎内部将输入的字符串拆分为若干个搜索词,并赋予每个词以不同的加权,然后查找匹配。

如果是要查包含字符串'A'和'B'的字段
WHERE CONTAINS(字段名, '"A" AND "B"')


------解决方案--------------------
ntext, text, and image 数据类型在2005下面请用nvarchar(max), varchar(max), and 
varbinary(max) 代替
------解决方案--------------------
我觉得对于10万字符的text,就算是全文索引,再怎么优化,效率也不会很好的