SqlServer2005 全文索引 Contains求教

ojekleen 2009-04-02 06:11:11
SqlServer2005 全文索引 Contains两次同一字段,结果就无。。。
例如:

select * from A where contains ( (name,subject,body),'三国 or 红楼')
and contains ((subject),'西游')


以上查询即不显示任何结果。。那怕是有一条数据里面即有西游和三国和红楼,都不显示。。

晕啊。。求救。。
...全文
288 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
wanshichen 2009-04-03
  • 打赏
  • 举报
回复
学习一下
Yang_ 2009-04-03
  • 打赏
  • 举报
回复
Try:

select * from A where contains ( (name,subject,body),'"三国*" or "红楼*"')
and contains ((subject),'"西游*"')

ojekleen 2009-04-03
  • 打赏
  • 举报
回复
算了,上面的将就吧,,

听说SQL版比较热,麻烦你们了。再问一下。。

select * from A where contains((subject,body),('红楼 and 西游'))//仅是举例。

查询结果好像不显示subject里面有红楼但没有西游,并且body列里有西游,没有红楼的 数据? 即单列必须两个同时满足的才显示?
htl258_Tony 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 szx1999 的回复:]
很正常,sql中文分词做得很垃圾,
相当一部分记录都会查不出来。
查英文的一般比较精确一点。

用like才能保证结果的精确性。
如果一定要用全文检索并提高精确性,
自己研究一下分词系统或使用第三方工具。
[/Quote]认同
ojekleen 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 szx1999 的回复:]
将列的断字符语言改为“简体中文”,
对中文的检索能提高一些精确度。

全文检索属性--列--断字符语言--简体中文。
[/Quote]

我表里的数据全是英文的,没有中文,上面写中文只是举例子,这样容易理解。。。
等不到来世 2009-04-03
  • 打赏
  • 举报
回复
将列的断字符语言改为“简体中文”,
对中文的检索能提高一些精确度。

全文检索属性--列--断字符语言--简体中文。
ojekleen 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 19 楼 Roc_Lee 的回复:]
试试2个like吧。中文的contains 似乎辨别的不是很好
[/Quote]

再顶一下,其实我搜索的就是英文的,上面的只是一个EXP。。。
Roc_Lee 2009-04-03
  • 打赏
  • 举报
回复
试试2个like吧。中文的contains 似乎辨别的不是很好
ojekleen 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 szx1999 的回复:]
很正常,sql中文分词做得很垃圾,
相当一部分记录都会查不出来。
查英文的一般比较精确一点。

用like才能保证结果的精确性。
如果一定要用全文检索并提高精确性,
自己研究一下分词系统或使用第三方工具。
[/Quote]

我一个用contains一个用like还是不能出效果,不过没有测试两个都用like
ojekleen 2009-04-03
  • 打赏
  • 举报
回复
整了个折中的办法,但不是最理想的。。

select * from A where contains ( (name,subject,body),'(三国 or 红楼) and (西游)')
jlj84237485 2009-04-03
  • 打赏
  • 举报
回复
帮顶一下
等不到来世 2009-04-03
  • 打赏
  • 举报
回复
很正常,sql中文分词做得很垃圾,
相当一部分记录都会查不出来。
查英文的一般比较精确一点。

用like才能保证结果的精确性。
如果一定要用全文检索并提高精确性,
自己研究一下分词系统或使用第三方工具。
ojekleen 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 Yang_ 的回复:]
Try:
select * from A where contains ( (name,subject,body),'"三国" or "红楼"')
and contains ((subject),'"西游"')
[/Quote]

效果相当。没办法。。。
ojekleen 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 Yang_ 的回复:]
语句没错,贴出数据看看

全文索引是否没有填充?
[/Quote]

有填充的,我单个执行有内容。
ojekleen 2009-04-03
  • 打赏
  • 举报
回复
我发错地方了?怎么没声响?
Yang_ 2009-04-03
  • 打赏
  • 举报
回复
Try:
select * from A where contains ( (name,subject,body),'"三国" or "红楼"')
and contains ((subject),'"西游"')

Yang_ 2009-04-03
  • 打赏
  • 举报
回复
语句没错,贴出数据看看

全文索引是否没有填充?
ojekleen 2009-04-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hdhai9451 的回复:]
应该用or逻辑条件吧?
[/Quote]

我要的效果是and 为什么要用or?

即两种交集。。。
ai_li7758521 2009-04-02
  • 打赏
  • 举报
回复
友情帮顶
Andy__Huang 2009-04-02
  • 打赏
  • 举报
回复
应该用or逻辑条件吧?
加载更多回复(6)

34,593

社区成员

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

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