呵呵,这一段时间尽在瞎鼓捣一些东西,看看结果吧:
仪器仪表搜索
这个引擎的基本制作思路如下:
1)、利用爬虫抓取指定数据到数据库。使用爬虫的机制找到包含有所需信息的指定网页,一般都比较有规律,但是各个网站的规则不同。比如: 中国仪器仪表国际网 其规则是:disp.asp?id=xx,还有: 金泰阳仪器仪表采购网,其规则是:cp.asp?id=xx,所以要分别对待,其内容也要分别处理。可以看看中国仪器仪表国际网的抓取代码片段:(关键是规则)
呵呵,可能运行不到10分钟就会抓取他们近万条的产品,是不是很拽呀,看了我的程序,你会发现哪些所谓的网站录入员的工作都是无用功。我利用这种技术已经在近1个月之内利用课余时间抓取到10万多条记录(当然有用的有效的记录只有2、3万条),
2)、建立索引,放在指定目录。
3)、建立搜索,并自定义分词技术、排序和高亮的规则,然后进行查询。
其中,建立索引已经改造,搜索的排序算法和竞价还在开发当中。搜索不够准确也是迫在眉睫的事。
如果大家有什么好的建议可以互相交流。
这个引擎的基本制作思路如下:
1)、利用爬虫抓取指定数据到数据库。使用爬虫的机制找到包含有所需信息的指定网页,一般都比较有规律,但是各个网站的规则不同。比如: 中国仪器仪表国际网 其规则是:disp.asp?id=xx,还有: 金泰阳仪器仪表采购网,其规则是:cp.asp?id=xx,所以要分别对待,其内容也要分别处理。可以看看中国仪器仪表国际网的抓取代码片段:(关键是规则)
java 代码
- BufferedReader in = new BufferedReader(new InputStreamReader(connection
- .getInputStream(), charset)); // 使用指定编码接收数据
- Productinfo info = new Productinfo();
- String line = null;
- String LoveIt = "";
- String pix = "";
- int i = 0;
- Manufacturer M = new Manufacturer();
- while ((line = in.readLine()) != null) {
- if (line.indexOf(pix) > 0) {
- i++;
- /**
- * 把这一行抽出来呀!!,历史任务!
- */
- if (i == 1) {
- int BeginIt = line.indexOf(pix);
- int EndinIt = line.indexOf("", BeginIt);
- LoveIt = line.substring(BeginIt + pix.length(), EndinIt);
- M.setManufacturerName(LoveIt);
- // break;
- if (LoveIt.length() > 5) {
- continue;
- }
- }
- if (i == 2) {
- int BeginIt = line.indexOf(pix);
- int EndinIt = line.indexOf("", BeginIt);
- LoveIt = line.substring(BeginIt + pix.length(), EndinIt);
- info.setProductName(LoveIt);
- if (LoveIt.length() > 5) {
- continue;
- }
- }
- if (i == 3) {
- int BeginIt = line.indexOf(pix);
- int EndinIt = line.indexOf("", BeginIt);
- LoveIt = line.substring(BeginIt + pix.length(), EndinIt);
- info.setProductSpec(LoveIt);
- if (LoveIt.length() > 5) {
- continue;
- }
- }
- String ImageUrl = Url.replace("disp.asp", "showing.asp");
- info.setFirstPic("http://www.china-meter.com/btob/backmanage/"
- + ImageUrl);
- if (i == 5) {
- int BeginIt3 = line.indexOf(pix);
- int EndinIt3 = line.indexOf("", BeginIt3);
- if (EndinIt3 == -1) {
- line = in.readLine();
- EndinIt3 = line.indexOf("", BeginIt3);
- LoveIt = line;
- }
- if (LoveIt.length() == 0) {
- LoveIt = line.substring(BeginIt3 + pix.length(),
- EndinIt3);
- }
- info.setProductDesc(LoveIt);
- if (LoveIt.length() > 5) {
- continue;
- }
- }
- if (i == 8) { // 厂商地址
- int BeginIt4 = line.indexOf(pix);
- int EndinIt4 = line.indexOf("", BeginIt4);
- LoveIt = line.substring(BeginIt4 + pix.length(), EndinIt4);
- M.setAddress(LoveIt);
- if (LoveIt.length() > 5) {
- continue;
- }
- }
- if (i == 9) { // 厂商电话
- int BeginIt4 = line.indexOf(pix);
- int EndinIt4 = line.indexOf("", BeginIt4);
- LoveIt = line.substring(BeginIt4 + pix.length(), EndinIt4);
- M.setTel(LoveIt);
- if (LoveIt.length() > 5) {
- continue;
- }
- }
- }
- }
- in.close();
2)、建立索引,放在指定目录。
3)、建立搜索,并自定义分词技术、排序和高亮的规则,然后进行查询。
其中,建立索引已经改造,搜索的排序算法和竞价还在开发当中。搜索不够准确也是迫在眉睫的事。
如果大家有什么好的建议可以互相交流。