最近想做一个搜索引擎,背景是这样的:
搜索的网站可以自己指定,不必到某个IP段大范围搜索。
想要的数据大部分是以表格的形式(例如绑定在DataGrid上)在网站存在。
搜索目标网站上信息更新速度应该较快。举个具体点的例子:
很多家网站都有提供租房 售房信息,现在由我来指定搜索的二十个网站,然后将这二十个网站的租房 售房数据能在我的搜索引擎中以表格的形式检索出来。 问题:
1:选择哪种语言较好,C#会不会方便?
2:我需要加深哪方面的知识?比如正则表达式 还有别的不?
3:如何在目标网站上进行检索想要的信息 然后收录到自己的数据库。
4:别的好的思路,只要和这个话题有关的就行。我的技术一般般,但是悟性较好,希望大家能够回答的尽量详细点,只要和这个相关就行,先谢谢诸位了:)

解决方案 »

  1.   

    像这种需求的话可以借助SQLServer 2005的全文检索就行了..可以方便建立索引跟搜索..另外网络蜘蛛方面的话..抓取网页的代码很简单.主要是要协调每个线程...像你这种需求应该不会出现大问题..还用就是用正则表达式得到链接地址.(当然抓取网页后所链接的其它地址...)用递归..不要出现无止境的往下爬..针对这种需求是很简单的...很快能实现...
      

  2.   

    1.肯定是要分析网站的Html内容,如果是Table内的东西就往数据库放啦。另一个进程专门处理这些重复的数据啦。
    2.分析Html里有没其它网站,有就把这个网址往数据库放啦。要分析的网站就从这里边读。
      

  3.   

    看了上面大虾的回答又连个疑问:
    1. 蜘蛛爬过的网站又更新了,那些更新的信息怎么获得(搂主想要:搜索目标网站上信息更新速度应该较快)?如果派出多个蜘蛛,间隔时间怎么控制?2. 现在很多的信息都是收费信息,比如房屋租赁,很多都是要发短信索取的,怎么能解决这方面的问题?p.s.:对搜索引擎技术不太了解,所以也不能给搂主什么好建议,就只能提连个问题。好像大多数的搜索引擎的底层的是UNIX下C/C++来实现的,不知到搂主的C++怎么样?
      

  4.   

    内容自己写个蜘蛛,不会写网上代码也很多。搜索用DotLucene都是现成的
      

  5.   

    你这个是企业搜索的概念哦,复杂,GOOGLE、MSN、BAIDU都还在研究中。
    你只能针对特定网站来做了(查询条件遍历、查询结果分析入库、更新等),都不太可能通用的。XML就是用来解决这些差异性的,但问题是XML尚未普及。
      

  6.   

    在我看来这个不是搜索吧,而是你很明确要抓取别人网站上的信息。如果你明确你要抓什么网站,而且他们的模版不会经常变动或者设计房抓取措施,那还是比较简单的。一般的做法是这样的:从A网站抓取网页,然后手工分析A网站数据的格式,用perl或者python这样的脚本语言写一个数据分析器从网页中将数据从网页分离出来并且存入你的数据库中。然后对着B、C、D……网站都这样一个一个手工分析设写数据分离脚本。当然,如果你不是考虑以后专门做这行的,懒得学perl或者python,可以考虑在C#内用正则表达式,但自然就没有perl或者python那样的灵活性。至于企业搜索,或者时髦叫做垂直搜索,我觉得那样的搜索引擎不是索引指定的网站,而是自动能够分析一个网页上的信息是否为本行业的信息(就好象Google News懂得自动判断哪些是News),那个难度就高了。
      

  7.   

    上Lucene.NET的网站看看你需要什么吧,http://www.dotlucene.net开源架构,希望能对你有所帮助!
      

  8.   

    个人觉得就算是针对某个特定网站, 如果你对那个网站的页面不熟悉, 或者那个网站经常变动的话, 基本上还是和大型搜索的概念差不多。 
    首先是个蜘蛛程序, 目的是把该网站下所有的页面统统抓取到, 如果那个网站建立的时候有mapsite, 那容易地多。 不然就用广度搜索法(上面有个兄弟说错了)来抓取。 
    然后就是分词, 入库, 排序索引。 
    最后是在数据库中搜索。 
    难点当然是在第二步, 引擎的优劣也就是取决于第二步了, 个人水平低, 不敢乱讲误导你
      

  9.   

    你可以去参考以下csdn 重的搜索引擎板块