前言-------------------
http://community.csdn.net/Expert/topic/4520/4520172.xml?temp=.1769068
搜索性能问题
程序是关于软件搜索的
现在MS SQL库中有27万的数据,以后还会增加,服务器的配置是CPU奔4 3.0GHz 内存1G
搜索关键字是按软件名称(一般在20个字符以内)或者软件简介
软件简介我是用全文索引,软件名称我嫌用全文索引搜索不过准确,只用了索引现在的问题是按软件名称搜索速度超慢,按软件简介也没有我想象中的快,用Cache把所有数据放到内存当中我试过了也不快(关键是要匹配关键字太慢了),到底有什么办法能提高速度呢,我第一次接触这么多的数据,不知道如何做
=======================================================去年发的帖子了,到现在还没人回答出好的方法,现在我没办法了,
我把28万的数据用application["soft"]=dataset放到了内存里,差不多占用了200M的内存
放到内存之前是245M/3980M
放到内存之后是376M/3980M
搜索的时候内存使用是403M/3980M
然后内存使用一直保持在403M左右请问这样以后很多人搜索服务器会受的了吗,有好的解决方案吗?数据以后还会在增加一些。
http://community.csdn.net/Expert/topic/4520/4520172.xml?temp=.1769068
搜索性能问题
程序是关于软件搜索的
现在MS SQL库中有27万的数据,以后还会增加,服务器的配置是CPU奔4 3.0GHz 内存1G
搜索关键字是按软件名称(一般在20个字符以内)或者软件简介
软件简介我是用全文索引,软件名称我嫌用全文索引搜索不过准确,只用了索引现在的问题是按软件名称搜索速度超慢,按软件简介也没有我想象中的快,用Cache把所有数据放到内存当中我试过了也不快(关键是要匹配关键字太慢了),到底有什么办法能提高速度呢,我第一次接触这么多的数据,不知道如何做
=======================================================去年发的帖子了,到现在还没人回答出好的方法,现在我没办法了,
我把28万的数据用application["soft"]=dataset放到了内存里,差不多占用了200M的内存
放到内存之前是245M/3980M
放到内存之后是376M/3980M
搜索的时候内存使用是403M/3980M
然后内存使用一直保持在403M左右请问这样以后很多人搜索服务器会受的了吗,有好的解决方案吗?数据以后还会在增加一些。
解决方案 »
- CMS原理问题
- 第一次添加成功,第二次添加出现“为过程或函数指定的参数太多”
- 关于面向对象及三层结构的一些疑惑
- MembershipProvider如何使用ACCESS数据库
- 怎样通过VSS将项目部署到FTP站点?
- 问,如何用JAVASCRIPT增加 dropdownlist 的值?
- 我实在没有分了啊,哥们,帮帮兄弟啊,为什么我按照CSDN里面说的方法不行啊?为什么我的1024*768在800*600下还不能看啊
- 如何让页面Post后回到之前的光标位置?
- 笨笨的问!VSNET中表格操作
- 如何去掉节点中的xmlns="....."之类的东西?
- 本人在南京,要寻求一位asp.net的老师!(一个晚上100元)
- 如何在asp.net中对foxpro数据库插入时间------在线等待中
还有很大的可用空间把?
还有很大的可用空间把?
你可以用sql的全文搜索.我做200万的搜索也没有太明显的效率问题.
先建立总数据的表引索,然后把你的所有数据一定的逻辑截开.
查找数据时,先通过总数据的表引索检索到你的所在的表,然后再导向索要的数据表中搜索.
这样做主要属避免大对象的释放与实例化,可以在一定程度上提高性能.
你可以用sql的全文搜索.我做200万的搜索也没有太明显的效率问题.
====================================================================我知道全文搜索可以,但是搜索不精确,老板说了不行,用like搜索又非常慢
我实在想不出有什么好办法,做人真难啊
无论你数据库它怎么优化,数据一多查询就是慢,难道我测试出来的时间是假的?
直接用like+索引查询名称要3秒左右,查询简介要10几秒放在内存里查询名称要0.5秒左右,查询简介要1秒多
哪个牛人透露点技术给我,感激不尽
{
Regex re = new Regex("flash", RegexOptions.Compiled);
CP();
for(int i = 0; i < 1000000; i++)
{
re.Match("micro media flash 8.0");
}
CP();
Pause();
}
(搜索 "micro media first 8.0")所以你的查询平均能达到50ms/搜索是完全可能的
-----------------------
如何分隔数据?我不懂啊TO:回复人: wutian789(天涯)
------------------------
我不是说了全文搜索不精确吗,老板说不行。至于如何能使全文搜索变精确我又不懂TO:回复人:gngnandgngn(仗义执言)
-------------------------
我知道是搜索方式的问题啊,所以才问你们有没什么好的方法啊TO:回复人:tiaoci(我挑刺,我快乐)
--------------------------------
280000 * 20(字节) * 2 = 11M
怎么会这样算的呢,简介可不只20个字如果用CACHE那我还不如放内存啊,如果很多人同时搜索不同的关键字,那会有多少cache啊?private void Test()
{
Regex re = new Regex("flash", RegexOptions.Compiled);
CP();
for(int i = 0; i < 1000000; i++)
{
re.Match("micro media flash 8.0");
}
CP();
Pause();
}
这个是如何用的啊?哪里有这种东西的资料啊,能否提供一点啊,感激不尽还有自己建立搜索引擎是如何建的呢
"flash",可以分别建立 f,l,a,s,h,fl,fla,flas,flash,la,las,lash,as,ash,sh
我不只FLASH,还有PHOTOSHOP,firwork,......很多啊,哪里建的完啊我就想要你的
private void Test()
{
Regex re = new Regex("flash", RegexOptions.Compiled);
CP();
for(int i = 0; i < 1000000; i++)
{
re.Match("micro media flash 8.0");
}
CP();
Pause();
}
给我点资料把,[email protected] 谢谢