`
ag4444
  • 浏览: 34750 次
  • 性别: Icon_minigender_1
  • 来自: taiyuan
社区版块
存档分类
最新评论

问题-海量数据查询

阅读更多
   我正在做一个web项目,使用工具java,基本框架ssh,数据库sqlserver,遇到一个海量数据检索的问题:需要从数据库中2000万以上的商品类数据中,直接检索到要查询的商品列表信息,如我查询关键词“钢圈”,要所有包括“钢圈”的商品都分页显示出来。
我曾采用以下方法
1、sqlserver自带全文索引,存在速度太慢、检索不准确的问题
2、采用把这些企业数据放到java缓冲中,走不下去了,问题是不现实,因为我用tomcat作为服务,内存有限制,这些数据根本放不下,还有我采用只知道采用iterator方法来遍历这些数据,所以就不用了
3、听说lucene在做这方面工作有优势,奈何我还不知道还怎么使用,还有听说也存在检索不准确的问题,所以就暂时放弃了

现在只好把这些数据按大类别分了几十个表,查询的时候也必须选择这些大类别,在录入查询的关键词进行搜索才暂时可以使用了。

请教各位老师有什么办法可以象“百度,google”一样的搜索关键词呢?
                                                                    不胜感谢!

分享到:
评论
6 楼 ag4444 2009-02-16  
直接基于数据库的海量查询已经不能满足当前互联网需要了,历时4个月的开发和优化也不能达到百度谷歌一样的查询效果,还是采用专业人做的专业搜索引擎吧,时间不等人,不能在一棵树山吊死了。
5 楼 ag4444 2008-08-27  
数据库是MSSQL2005,有一张表有四百多万条记录,表结构为: 
ID,类别,访问时间 
现在要统计某段时间内每个类别的访问量,我写的sql语句是 

select   类别,count(1)   as   访问量   from   数据表 
where   访问时间   between   '2007-9-1 '   and   '2007-9-7 ' 
group   by   类别  





select   类别,count(1)   as   访问量   from   数据表
where   访问时间   between   '2007-9-1 '   and   '2007-9-7 '
group   by   类别
----------
你写的这个语句是没有优化的余地了,如果你想提高查询效率的话
可在[访问时间]列建立非聚簇索引
不知LZ你对这张表插入和更新频不频繁???
(索引可提高查询效率,但同时又减慢插入或更新的效率)
4 楼 ag4444 2008-08-27  
一个完整的垂直搜索生命周期包括:
Crawl:抓取足够多的数据;
Extract:从数据中解析出需要的内容存储起来;
Index:做索引;
Sort:基于相关性算法进行排序
UI:把结果对用户友好的方式表现出来。
3 楼 ag4444 2008-08-27  
目前的搜索大体分通用搜索和垂直搜索。

两者差别在于信息来源,通用的范围很广,所以数据量一般都是海量。垂直的信息来源比较单一,所以数据量相对而言就小。

技术角度而言,通用主要关注数据量,偏重架构设计,而垂直着重搜索的UI。


如何设计好一个架构,我觉得自己还在摸索,所以不多说,感兴趣的可以看看google的paper。

垂直搜索的面向是特定用户群,他们需要的是准确快速方便的找到自己想要的信息。所以如何将用户体验做好,这个难度在这里。

因为是要通过搜索表现结果,那么就需要结合搜索。

举几个例子现在不大好的垂直搜索:


google的生活频道搜索,一大堆搜索条件让人选择,这明显是不懂搜索的人做的。

还有些搜索,对自身业务没搞清,就往通用靠拢,根据搜索关键词来拉出些相关词。


国内我觉得不错的垂直,

taobao。



2 楼 ag4444 2008-08-27  
谢谢“抛出异常的爱”
1 楼 抛出异常的爱 2008-03-19  
把常用的数据挖掘方式找一下.
能想到的只有你没有把分页加上?

相关推荐

Global site tag (gtag.js) - Google Analytics