自制行业搜索引擎

     呵呵,这一段时间尽在瞎鼓捣一些东西,看看结果吧: 仪器仪表搜索
     这个引擎的基本制作思路如下:
1)、利用爬虫抓取指定数据到数据库。使用爬虫的机制找到包含有所需信息的指定网页,一般都比较有规律,但是各个网站的规则不同。比如: 中国仪器仪表国际网   其规则是:disp.asp?id=xx,还有: 金泰阳仪器仪表采购网,其规则是:cp.asp?id=xx,所以要分别对待,其内容也要分别处理。可以看看中国仪器仪表国际网的抓取代码片段:(关键是规则)
java 代码
 
  1. BufferedReader in = new BufferedReader(new InputStreamReader(connection  
  2.                 .getInputStream(), charset)); // 使用指定编码接收数据  
  3.         Productinfo info = new Productinfo();  
  4.         String line = null;  
  5.         String LoveIt = "";  
  6.         String pix = "";  
  7.         int i = 0;  
  8.         Manufacturer M = new Manufacturer();  
  9.         while ((line = in.readLine()) != null) {  
  10.             if (line.indexOf(pix) > 0) {  
  11.                 i++;  
  12.                 /** 
  13.                  * 把这一行抽出来呀!!,历史任务! 
  14.                  */  
  15.                 if (i == 1) {  
  16.                     int BeginIt = line.indexOf(pix);  
  17.                     int EndinIt = line.indexOf("", BeginIt);  
  18.                     LoveIt = line.substring(BeginIt + pix.length(), EndinIt);  
  19.                     M.setManufacturerName(LoveIt);  
  20.                     // break;  
  21.                     if (LoveIt.length() > 5) {  
  22.                         continue;  
  23.                     }  
  24.                 }  
  25.                 if (i == 2) {  
  26.                     int BeginIt = line.indexOf(pix);  
  27.                     int EndinIt = line.indexOf("", BeginIt);  
  28.                     LoveIt = line.substring(BeginIt + pix.length(), EndinIt);  
  29.                     info.setProductName(LoveIt);  
  30.                     if (LoveIt.length() > 5) {  
  31.                         continue;  
  32.                     }  
  33.                 }  
  34.                 if (i == 3) {  
  35.                     int BeginIt = line.indexOf(pix);  
  36.                     int EndinIt = line.indexOf("", BeginIt);  
  37.                     LoveIt = line.substring(BeginIt + pix.length(), EndinIt);  
  38.                     info.setProductSpec(LoveIt);  
  39.                     if (LoveIt.length() > 5) {  
  40.                         continue;  
  41.                     }  
  42.                 }  
  43.                 String ImageUrl = Url.replace("disp.asp""showing.asp");  
  44.                 info.setFirstPic("http://www.china-meter.com/btob/backmanage/"  
  45.                         + ImageUrl);  
  46.   
  47.                 if (i == 5) {  
  48.                     int BeginIt3 = line.indexOf(pix);  
  49.                     int EndinIt3 = line.indexOf("", BeginIt3);  
  50.                     if (EndinIt3 == -1) {  
  51.                         line = in.readLine();  
  52.                         EndinIt3 = line.indexOf("", BeginIt3);  
  53.                         LoveIt = line;  
  54.                     }  
  55.                     if (LoveIt.length() == 0) {  
  56.                         LoveIt = line.substring(BeginIt3 + pix.length(),  
  57.                                 EndinIt3);  
  58.                     }  
  59.                     info.setProductDesc(LoveIt);  
  60.                     if (LoveIt.length() > 5) {  
  61.                         continue;  
  62.                     }  
  63.                 }  
  64.                 if (i == 8) { // 厂商地址  
  65.                     int BeginIt4 = line.indexOf(pix);  
  66.                     int EndinIt4 = line.indexOf("", BeginIt4);  
  67.                     LoveIt = line.substring(BeginIt4 + pix.length(), EndinIt4);  
  68.                     M.setAddress(LoveIt);  
  69.                     if (LoveIt.length() > 5) {  
  70.                         continue;  
  71.                     }  
  72.                 }  
  73.                 if (i == 9) { // 厂商电话  
  74.                     int BeginIt4 = line.indexOf(pix);  
  75.                     int EndinIt4 = line.indexOf("", BeginIt4);  
  76.                     LoveIt = line.substring(BeginIt4 + pix.length(), EndinIt4);  
  77.                     M.setTel(LoveIt);  
  78.                     if (LoveIt.length() > 5) {  
  79.                         continue;  
  80.                     }  
  81.                 }  
  82.   
  83.             }  
  84.         }  
  85.         in.close();  
        呵呵,可能运行不到10分钟就会抓取他们近万条的产品,是不是很拽呀,看了我的程序,你会发现哪些所谓的网站录入员的工作都是无用功。我利用这种技术已经在近1个月之内利用课余时间抓取到10万多条记录(当然有用的有效的记录只有2、3万条),
2)、建立索引,放在指定目录。
3)、建立搜索,并自定义分词技术、排序和高亮的规则,然后进行查询。
其中,建立索引已经改造,搜索的排序算法和竞价还在开发当中。搜索不够准确也是迫在眉睫的事。
如果大家有什么好的建议可以互相交流。

你可能感兴趣的:(python,搜索引擎,互联网,Google,asp)