首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • 请教高手“如何在SQL Server 2005里面建立自己的中文索引” [无满意答案结帖,结帖人:mawenhu]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mawenhu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-08-22 10:39:57 楼主
        最近在做一件数据库查询优化方面的事情,由于我们的数据库大部分表字段都是中文的,而且数据量有200多万条,查询速度非常慢!之前我们也针对一些非中文字段建立了聚集索引和非聚集索引,确实速度有了一定的提高。但是针对中文字段建立全文索引时,速度倒是有了一定的提高,但是检索的结果和未建全文索引相差很大。查阅相关资料后得知SQL Server2005在建立全文索引时对中文的切词很有问题。
        于是想到了何不自己建一张索引表呢,但是我不知道建立索引表之后再怎么和原来的表关联起来使用。
        比如我们这里有一个字段是“新闻摘要”(News_Abstact),现在需要对其进行切词然后建立索引词表,最后再和News这张表进行关联。
        请教各位高手,你们遇到过类似的情况吗,我现在应该怎么下手去做呢?
        还有我最近看了一些关于Lucene的文章,它采用的是类似于关系数据库的一种文档结构,那么我想在应该怎样把Lucene和SQL Server2005集合起来呢?

    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mawenhu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-28 16:35:261楼 得分:0
      自己的问题还是自己解决了。
      由于SQL Server2005本身建立的索引(包括全文索引、聚集和非聚集索引)我们是看不到的,也无法深入了解其内部结构以及索引的建立方法。因此建议采用Lucene.net,现在的版本已经到了2.1 。
      我们可以使用Lucene.net框架来建立全文索引并且重新构造搜索引擎。说明白一点,使用Lucene创建的索引库和SQL Server数据库表的存储形式是类似的,不同的是我们可以深入了解Lucene创建索引的过程和原理,尤其针对中文字段这一块,Lucene做得比SQL Server要好,它能支持基于词表的中文分词(只需要加载词表),其优势取代了SQL Server基于单个汉字字符的切词,因此索引的效率要高于SQL Server。
      我们将原有SQL Server2005表中的非中文字段采用SQL Server2005自带的索引功能建立索引,而针对中文字段则将其按字节流的形势逐条传入Lucene并建立Lucene索引库,这样索引和所需的字段都已经存放在文件系统中了,这样一来就完全脱离了SQL Server2005了,因此以后的查询也将不再使用SQL语句,而是使用的Lucene中的搜索系统。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • mawenhu
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-08-28 16:40:552楼 得分:0
    一般来说,Lucenen针对的是.txt\.doc\.XML等文件建立的全文索引,http://www.wujianrong.com/archives/2007/03/lucene_7.html讲的是如何对SQL Server数据库创建索引,参考一下。
    修改 删除 举报 引用 回复

    网站简介广告服务网站地图帮助联系方式诚聘英才English 问题报告
    北京创新乐知广告有限公司 版权所有 京 ICP 证 070598 号
    世纪乐知(北京)网络技术有限公司 提供技术支持
    Copyright © 2000-2008, CSDN.NET, All Rights Reserved