全文检索XML文件的编码问题

jeffertsai 2011-03-19 09:21:42
最近发现在检索xml的问题

说明:1、使用sql server2005;2、将xml文件存成varbinary(max);3、全文检索使用中文;

结果发现 对xml文件的检索效果非常不好。
问题:
1、有些可以检索到第1层至第三层的属性值,但有些编码格式的索性什么都没有,什么原因呢?
2、是和编码格式直接相关吗,如果只有这个原因但是即使是编码设成utf-8? 或者gb2312也不能检索到深层的词语是为什么呢?我中英文都试过。
3、将全文检索的伪列设为.txt,立刻就能检索到深层的词了,效果不错,不很理解
4、但是问题来了,即使是设为txt,但还是和xml头文件的编码格式相关,我猜这会不会是全文检索时设置成为中文造成的呢?希望不是,因为其它编码格式的文件我也需要用到,而且顶多也是英文的而已,如果是这个原因,有没有办法对多种编码格式的文件都能检索呢。 目前初步想对这个表设两个全文索引,使用不同的检索语言,不知道行不行~
5、太受不了sql server的全文检索了,他们公司没有技术员专门负责吗?
希望各位帮忙
不好意思,在疑难版也发了,http://topic.csdn.net/u/20110319/21/1cf78452-fb97-4b7b-955d-e209110ad335.html
希望多多借鉴经验,只要有解决方案,两边我都会给分的,多谢~
...全文
90 点赞 收藏 3
写回复
3 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
快溜 2011-03-19
create table tb(name xml)

insert into tb
select '<f><e>1</e><e>2</e></f>' union all
select '<f><e>2</e><e>5</e></f>' union all
select '<f><e>4</e><e>5</e></f>'

declare @XuZuoZhe nvarchar(200)
set @XuZuoZhe = N'5'

select * from tb where name.exist('//e[.=sql:variable("@XuZuoZhe")]')=1

/*
name
-----------------------
<f><e>2</e><e>5</e></f>
<f><e>4</e><e>5</e></f>
回复
快溜 2011-03-19
sql2005的话,字段可以直接存为xml的。查询可用xml方式检索
回复
http://topic.csdn.net/u/20110319/21/1cf78452-fb97-4b7b-955d-e209110ad335.html?61811
回复
相关推荐
发帖
应用实例
创建于2007-09-28

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2011-03-19 09:21
社区公告
暂无公告