`
banditjava
  • 浏览: 159911 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

开始改造lucene的demo,为我所用

阅读更多
-------------------20080731------------------
修改前端界面,修改成类似baidu的风格
修改index.jsp和results.jsp

研究IndexHTML.java
1)在meta中有中文,就解析不过去了
<meta name="keywords" content="范怡文,歌手,董事长,电子商务,b2b,商业,金融,商界精英,创业,商机,信用记录,信网,中国信网,信用记录" >
<meta name="description" content="关注产业经济新闻,宣传商界精英,剖析成功案例,研究电子商务,提供创业商机!">
2)在注释中有中文,也解析不去
<!--导航开始-->

考虑把<meta和<!--从解析中去掉 //todo

------------------20080801----------------------
lucene自带的htmlparse功能太弱,研究sourceforge上的专业htmlparse

1)已经完成了htmlparse的集成工作,很方便使用,写了一个包装类SimpleHtmlparser,详见附录二
2)完成lucene的高亮处理

--------------------20080802-----------------------
1)查询时排序功能需要完善,使用了默认排序,需要自己重新开发

需要解决的问题
1)思路:查询时,当结果集相当大时,只显示前几页就可以了,尽量提高查询出来结果的可用性,具体在BooleanQuery上修改
2)思路:开多线程去生成索引,然后合并索引,以提高索引效率?
3)问题:查全率,查准率,死链等,垃圾信息

---------------20080804------------
1)完成了对于summary的高亮显示,但现在的处理方式是把body下面的汉字都存储下来了,看是否还需要进一步改进它
2)研究html,网站里面共同的部分如导航条、logo、版权等信息(这些称之为网页的“噪音”)
3)研究URL去重,可以考虑用bloomfilter来处理 
4)消除html"噪音"

-----------20080805---------
1)搞定:噪音   利用NodeFilter tagFilter = new NodeClassFilter(TagNode.class);
NodeFilter textFilter = new NodeClassFilter(TextNode.class);
OrFilter orFilter = new OrFilter(tagFilter,textFilter);
         结合HtmlNoise来实现,isherf,isscript,iscopyright
这个还需要进一步细化,先实现到这里


package org.apache.lucene.demo;

import java.io.File;

import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.filters.NodeClassFilter;
import org.htmlparser.nodes.TextNode;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
import org.htmlparser.visitors.HtmlPage;

public class SimpleHtmlparser {



public static  String DEFAULT_ENCODE="UTF-8";
private String summary;
private String title;
private String body;
private String meta;
private String content;

public static void main(String args[]) throws ParserException {
SimpleHtmlparser sh = new SimpleHtmlparser("E:/workspace/searchengine/heritrix/heritrix-1.14.0/target/heritrix-1.14.0/bin/heritrix-1.14.0/jobs/default3-20080730031933671/mirror/news.21315.com/2008/aygz/2008-07-30/8721.html");
System.out.println(sh.getContent());
}


public SimpleHtmlparser(String resource){
this(resource,DEFAULT_ENCODE);
}

public SimpleHtmlparser(String resource,String encoding){
try{
if(encoding==null)encoding = DEFAULT_ENCODE;
parseResource(resource,encoding);
}catch(Exception e){
System.out.println("SimpleHtmlparser error :"+e.getMessage());
}
}

/**
* 处理所有的页面内容,定义好title,body,meta,summary
* @param resource
* @param encoding
* @throws ParserException
*/
public void parseResource(String resource,String encoding)throws ParserException{
StringBuffer summarybuffer = new StringBuffer();//用来存summary
StringBuffer contentbuffer = new StringBuffer();//用来存lucene要用的内容文档
Parser parser;
parser = new Parser(resource);

parser.setEncoding(encoding);
HtmlPage htmlpage = new HtmlPage(parser);
parser.visitAllNodesWith(htmlpage);
this.title = htmlpage.getTitle();
this.body = htmlpage.getBody().toHtml();
Parser nodesParser;
NodeList nodeList = null;
nodesParser = Parser.createParser(body, encoding);
NodeFilter textFilter = new NodeClassFilter(TextNode.class);
try{
nodeList = nodesParser.parse(textFilter);
}catch (ParserException e){
e.printStackTrace();
}

if (null == nodeList){
System.out.println(" ");
}


summarybuffer.append(title);

// contentbuffer.append(title);

Node[] nodes = nodeList.toNodeArray();
for (int i = 0; i < nodes.length; i++){
Node nextNode = (Node) nodes[i];
String tmpcontent = "";
if (nextNode instanceof TextNode){
TextNode textnode = (TextNode) nextNode;
tmpcontent = textnode.getText();
}
contentbuffer.append(tmpcontent);
}

this.content = contentbuffer.toString();
this.summary = summarybuffer.toString();
}





public String getContent() {
return content;
}

public void setContent(String content) {
this.content = content;
}


public String getSummary() {
return summary;
}

public void setSummary(String summary) {
this.summary = summary;
}
public String getTitle() {
return title;
}

public void setTitle(String title) {
this.title = title;
}

public String getBody() {
return body;
}

public void setBody(String body) {
this.body = body;
}

public String getMeta() {
return meta;
}

public void setMeta(String meta) {
this.meta = meta;
}
}
分享到:
评论

相关推荐

    luceneDemo(完整代码)

    《LuceneDemo(完整代码):入门到精通的探索》 Lucene,作为Apache软件基金会的一个开源项目,是Java环境中最流行的全文检索库。它提供了一个高性能、可扩展的信息检索服务,广泛应用于搜索引擎开发和大数据分析中...

    luceneDemo

    **Lucene 概述** Lucene 是一个高性能、全文本搜索库...实际的 "luceneDemo" 可能包含更丰富的功能,例如支持多字段查询、高亮显示搜索结果、分页显示等。学习和理解 Lucene,可以帮助开发者构建强大的全文检索系统。

    Lucene初探,一个初级的LuceneDemo

    **Lucene初探:一个初级的LuceneDemo** 在IT领域,搜索引擎技术是不可或缺的一部分,尤其是在大数据时代,高效的信息检索显得尤为重要。Apache Lucene就是这样一款强大的开源全文搜索引擎库,它为开发者提供了构建...

    简单的lucene demo

    **标题:“简单的lucene demo”** Lucene是一个强大的全文搜索引擎库,由Apache软件...通过这个简单的Lucene demo,我们可以了解到如何利用这个强大的全文搜索库进行基本操作,为进一步深入学习和实践Lucene打下基础。

    Lucene3.3.0学习Demo

    **Lucene 3.3.0 学习Demo** Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发。在3.3.0版本中,Lucene提供了强大的文本搜索功能,包括分词、索引创建、查询解析和结果排序等。这个"Lucene3.3.0学习Demo...

    lucene Demo(paoding)

    在【描述】中提到的"lucene demo and paoding good shuang",可以理解为这个项目不仅展示了Lucene的基本用法,还特别强调了使用Paoding分词器的良好效果。Paoding对于中文的分词和索引有出色的表现,能够提高中文...

    LuceneDemo

    Lucene是一款由Apache软件基金会开发的开源全文检索库,它为Java开发者提供了强大的文本分析和全文检索功能。在信息爆炸的时代,如何快速、准确地从海量数据中检索出所需信息成为了关键问题,而Lucene正是解决这一...

    Lucene-Demo.rar Lucene分词的demo

    这个名为"Lucene-Demo.rar"的压缩包提供了一个基于Lucene的分词演示项目,可以帮助开发者快速理解和应用Lucene的分词功能。在这个压缩包中,有两个主要的文件:`lucene`目录和`Lucene-Demo`文件。 `lucene`目录很...

    lucene简单demo

    在"LuceneDemo"这个项目中,你可以期待看到一个简单的Java程序,它将演示上述过程,可能包括创建一个或多个包含文本数据的Document,使用默认的StandardAnalyzer建立索引,然后执行一个基本的文本查询,展示搜索结果...

    Lucene常用的Demo

    本篇文章将深入探讨Lucene的几个常见示例,包括`LuceneDemo`、`LuceneZJ`、`Lucene_HelloWorld`,帮助初学者快速理解Lucene的基本操作。 1. **Lucene_HelloWorld** 这个示例是入门Lucene的首选,它展示了如何创建...

    我的大学资料LuceneDemo详细学习资料,非常的经典

    在这个名为“我的大学资料LuceneDemo详细学习资料”的压缩包中,包含了学习LuceneDemo的重要资源,对于理解和掌握Lucene的使用具有极高的价值。 1. **项目配置文件**: - `.classpath`和`.project`是Eclipse开发...

    jsuop+lucene demo

    JSUOP(Java Simple Utility for Open Publication)是一个轻量级的Java库,用于帮助开发者处理数据抓取和处理任务,而Apache Lucene则是一个高性能、全文本搜索库,为开发人员提供了强大的搜索引擎功能。...

    lucene_demo例子

    在"lucene_demo"这个压缩包中,很可能包含了一些示例代码或者项目,用于演示如何使用Lucene进行实际的文本搜索开发。这些示例通常会涵盖以下几个关键知识点: 1. **安装与配置**:Lucene的下载、构建环境的搭建,...

    全文搜索技术Lucene Demo

    Apache Lucene 是一个开源的全文搜索引擎库,由Java编写,为开发者提供了强大的文本检索功能。本篇文章将深入探讨Lucene的核心概念、工作原理以及如何通过一个Demo来实践它的使用。 Lucene的主要功能包括索引构建、...

    Lucene简单Demo(附带Jar)

    "luceneDemo1"和"lucene"可能是两个不同的文件或文件夹,它们可能包含了运行Lucene的示例代码或者已经构建好的索引。"luceneDemo1"可能是一个包含Lucene应用示例的Java项目,包含了必要的类和方法,展示了如何使用...

    LuceneDemo.zip

    "LuceneDemo.zip"中的实例为我们提供了一个学习和实践的平台,帮助我们掌握Lucene的核心原理和使用技巧。通过深入研究这个示例,我们将能够更好地运用Lucene解决实际的搜索问题,提升系统的搜索性能。

    Lucene Demo

    **正文** 欢迎来到“Lucene Demo”的学习之旅。Lucene是一个强大的全文搜索引擎库,由Apache软件基金会开发并维护。这个“Lucene Demo”项目旨在帮助我们...现在就打开“LuceneDemo”项目,开始你的Lucene探索之旅吧!

    luceneDemo_pure1aa_DEMO_clucene_

    在vc6中新建一个Win32 Console Application项目,命名为“luceneDemo”。将提供的“luceneDemo”文件加入到项目中,这是DEMO的主要代码。这个DEMO将展示如何使用Clucene的基本操作,包括创建索引、搜索索引等关键...

Global site tag (gtag.js) - Google Analytics