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

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

我用的是sql server2000
使用的是freetext()谓词
...全文
147 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
baggio785 2007-10-09
  • 打赏
  • 举报
回复
我觉得对于10万字符的text,就算是全文索引,再怎么优化,效率也不会很好的
WNASP 2007-10-09
  • 打赏
  • 举报
回复
在问一个问题,就是后缀的问题
可以contains(c,'"word*"')来实现前缀
但是如何实现后缀呢?查过帮助了,没有contains(c,'"*word"')这样的形势!

谢谢!
zg182 2007-09-30
  • 打赏
  • 举报
回复
ntext, text, and image 数据类型在2005下面请用nvarchar(max), varchar(max), and
varbinary(max) 代替
晓风残月0110 2007-09-29
  • 打赏
  • 举报
回复
关注
sp4 2007-09-29
  • 打赏
  • 举报
回复
freetext当然非常慢了,要用contains就会快很多了
ztlyz84 2007-09-29
  • 打赏
  • 举报
回复
同意一楼的!

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

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

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

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

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

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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