- 浏览: 4341216 次
- 性别:
- 来自: 湛江
博客专栏
-
SQLite源码剖析
浏览量:79518
-
WIN32汇编语言学习应用...
浏览量:68578
-
神奇的perl
浏览量:101725
-
lucene等搜索引擎解析...
浏览量:281686
-
深入lucene3.5源码...
浏览量:14653
-
VB.NET并行与分布式编...
浏览量:65846
-
silverlight 5...
浏览量:31406
-
算法下午茶系列
浏览量:45320
文章分类
最新评论
-
yoyo837:
counters15 写道目前只支持IE吗?插件的东西是跨浏览 ...
Silverlight 5 轻松开启绚丽的网页3D世界 -
shuiyunbing:
直接在前台导出方式:excel中的单元格样式怎么处理,比如某行 ...
Flex导出Excel -
di1984HIT:
写的很好~
lucene入门-索引网页 -
rjguanwen:
在win7 64位操作系统下,pygtk的Entry无法输入怎 ...
pygtk-entry -
ldl_xz:
http://www.9958.pw/post/php_exc ...
PHPExcel常用方法汇总(转载)
索引代码 package bindex; import jeasy.analysis.MMAnalyzer; public class perfieldindextest { /** IndexWriter writer; System.out.println("时间:"+time); //内存索引写入硬盘文件 } severlt代码: package bservlet; import javax.servlet.http.HttpServlet; import org.apache.lucene.analysis.Analyzer; import java.io.*; import jeasy.analysis.MMAnalyzer; } }
import org.apache.lucene.analysis.PerFieldAnalyzerWrapper;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.RAMDirectory;
import org.htmlparser.Node;
import org.htmlparser.NodeFilter;
import org.htmlparser.Parser;
import org.htmlparser.beans.LinkBean;
import org.htmlparser.filters.AndFilter;
import org.htmlparser.filters.HasAttributeFilter;
import org.htmlparser.filters.NotFilter;
import org.htmlparser.filters.OrFilter;
import org.htmlparser.filters.RegexFilter;
import org.htmlparser.filters.TagNameFilter;
import org.htmlparser.util.NodeList;
import org.htmlparser.util.ParserException;
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String indexpath="./indexes";
PerFieldAnalyzerWrapper wr;
Document doc;
try {
RAMDirectory rd=new RAMDirectory();
writer=new IndexWriter(rd,new StandardAnalyzer());
wr=new PerFieldAnalyzerWrapper(new StandardAnalyzer());
wr.addAnalyzer("title",new MMAnalyzer());
wr.addAnalyzer("content", new MMAnalyzer());
wr.addAnalyzer("author", new MMAnalyzer());
wr.addAnalyzer("time", new StandardAnalyzer());
//提取腾迅国内新闻链接
LinkBean lb=new LinkBean();
List baseurls=new ArrayList();
baseurls.add("http://news.qq.com/china_index.shtml");
baseurls.add("http://news.qq.com/world_index.shtml");
baseurls.add("http://news.qq.com/society_index.shtml");
for (int j=0;j<baseurls.size();j++){
lb.setURL((String)baseurls.get(j));
URL[] urls=lb.getLinks();
for (int i=0;i<urls.length;i++){
doc=new Document();
String title="";
String content="";
String time="";
String author="";
System.out.println("正在提取"+(String)baseurls.get(j)+"第"+i+"个链接("+(int)(100*(i+1)/urls.length)+"%)["+urls[i].toString()+"].....");
if (!(urls[i].toString().startsWith("http://news.qq.com/a/"))){
System.out.println("非新闻链接,忽略......");continue;
}
System.out.println("新闻链接,正在处理");
Parser parser=new Parser(urls[i].toString());
parser.setEncoding("GBK");
String url=urls[i].toString();
NodeFilter filter_title=new TagNameFilter("title");
NodeList nodelist=parser.parse(filter_title);
Node node_title=nodelist.elementAt(0);
title=node_title.toPlainTextString();
System.out.println("标题:"+title);
parser.reset();
NodeFilter filter_auth=new OrFilter(new HasAttributeFilter("class","auth"),new HasAttributeFilter("class","where"));
nodelist=parser.parse(filter_auth);
Node node_auth=nodelist.elementAt(0);
if (node_auth != null) author=node_auth.toPlainTextString();
else author="腾讯网";
node_auth=nodelist.elementAt(1);
if (node_auth != null) author+=node_auth.toPlainTextString();
System.out.println("作者:"+author);
parser.reset();
NodeFilter filter_time=new OrFilter(new HasAttributeFilter("class","info"),new RegexFilter("[0-9]{4}年[0-9]{1,2}月[0-9]{1,2}日[' ']*[0-9]{1,2}:[0-9]{1,2}"));
nodelist=parser.parse(filter_time);
Node node_time=nodelist.elementAt(0);
if (node_time!=null) {
if (node_time.getChildren()!=null) node_time=node_time.getFirstChild();
time=node_time.toPlainTextString().replaceAll("[ |\t|\n|\f|\r\u3000]","").substring(0,16);
}
parser.reset();
NodeFilter filter_content=new OrFilter(new OrFilter(new HasAttributeFilter("style","TEXT-INDENT: 2em"),new HasAttributeFilter("id","Cnt-Main-Article-QQ")),new HasAttributeFilter("id","ArticleCnt"));
nodelist=parser.parse(filter_content);
Node node_content=nodelist.elementAt(0);
if (node_content!=null){
content=node_content.toPlainTextString().replaceAll("(#.*)|([a-z].*;)|}","").replaceAll(" |\t|\r|\n|\u3000","");
}
System.out.println("内容:"+content);
System.out.println("正在索引.....");
Field field=new Field("title",title,Field.Store.YES,Field.Index.TOKENIZED);
doc.add(field);
field=new Field("content",content,Field.Store.YES,Field.Index.TOKENIZED);
doc.add(field);
field=new Field("author",author,Field.Store.YES,Field.Index.UN_TOKENIZED);
doc.add(field);
field=new Field("time",time,Field.Store.YES,Field.Index.NO);
doc.add(field);
field=new Field("url",url,Field.Store.YES,Field.Index.NO);
doc.add(field);
writer.addDocument(doc,new MMAnalyzer());
System.out.println("<"+title+"索引成功>");
}
}
writer.close();
wr.close();
FSDirectory fd=FSDirectory.getDirectory(indexpath);
IndexWriter wi=new IndexWriter(fd,new MMAnalyzer());
wi.addIndexes(new Directory[]{rd});
//内存中文档最大值是80
wi.setMaxMergeDocs(80);
//内存中存储80个文档时写成磁盘一个块
wi.setMergeFactor(80);
wi.close();
System.out.println("<索引建立完毕>");
} catch (ParserException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (CorruptIndexException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.*;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.*;
public class SluceneSearcher extends HttpServlet {
private String indexpath="D:/workspace/testsearch2/indexes";
public void doPost(HttpServletRequest request,HttpServletResponse response){
StringBuffer sb=new StringBuffer("");
try {
request.setCharacterEncoding("GBK");
String phrase=request.getParameter("phrase");
Analyzer analyzer=new MMAnalyzer();
IndexSearcher searcher;
searcher = new IndexSearcher(indexpath);
QueryParser parser=new QueryParser("content",analyzer);
Query q= parser.parse(phrase);
Hits hs=searcher.search(q);
int num=hs.length();
sb.append("<h1>您搜索到的记录数:"+num+"</h1>");
for (int i=0;i<num;i++){
Document doc=hs.doc(i);
if (doc==null){
continue;
}
Field field_title=doc.getField("title");
String title="<br><a href="+doc.getField("url").stringValue()+" target='_blank'>"+field_title.stringValue()+"</a><br>";
Field field_author=doc.getField("author");
String author="<br>author:<br>"+field_author.stringValue();
Field field_time=doc.getField("time");
String time="<br>time:<br>"+field_time.stringValue();
sb.append(title);
sb.append(author);
sb.append(time);
}
searcher.close();
} catch (CorruptIndexException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
PrintWriter out;
try {
response.setContentType("text/html;charset=GBK");
out = response.getWriter();
out.print(sb.toString());
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
public void doGet(HttpServletRequest request,HttpServletResponse response){
doPost(request,response);
}
评论
索引的结果放到硬盘中,这样重启电脑后,仍然可以调取
内存索引的原理是什么呢,大致是什么意思呢?
文件的操作不都是在内存的嘛?
发表评论
-
lucene3.5之Bits
2012-03-27 17:23 1655package org.apache.lucene.util; ... -
lucene3.5之SmallFloat
2012-03-26 09:21 2313package org.apache.lucene.util; ... -
lucene 3.5之SimpleStringInterner
2012-03-23 10:25 2091public class SimpleStringIntern ... -
lucene3.5之ToStringUtils
2012-03-22 17:25 1697package org.apache.lucene.util; ... -
lucene3.5之StringHelper
2012-03-21 14:54 1698这个类主要是完成2个功能: 1、版本号比较 2、生成字符串实例 ... -
lucene3.5之StringInterner
2012-03-21 12:15 1830首先讲解关于java的intern public String ... -
lucene的until包当前lucene的版本号
2012-03-21 11:54 3096首先介绍一下Java中枚举实现: public enum C ... -
LucenePackage 包获取当前lucene包信息
2012-03-21 11:16 1928package org.apache.lucene; /** ... -
linux下的简单中文分词器-dpSegmentation
2010-09-19 15:34 3103deepfuture简单中文分词器(deepfuture ... -
搜狗实验室(Sogou Labs)
2010-03-15 09:49 2798http://www.sogou.com/labs/ 搜狗实 ... -
搜索引擎开发lucene-笔者博客的大部分lucene习作源码
2010-03-01 20:36 6065有一个小小较完整的实例,详见说明.txt 见附件,解压密码: ... -
搜索引擎中网络爬虫的设计分析(转)
2010-02-21 11:56 1995说的简单易懂一些,网络爬虫跟你使用的〖离线阅读〗工具差不多。说 ... -
lucene-索引的优化和索引过程查看
2009-12-23 14:39 1663代码:(索引建立) package bindex; ... -
lucene-索引信息、索引删除、索引删除恢复、索引物理删除
2009-12-23 14:39 2658代码: package bindex; import ja ... -
lucene-内存索引、内存索引保存在硬盘、索引优化
2009-12-23 16:41 1486索引代码 package bindex; import j ... -
lucene-索引文件格式
2009-12-23 16:43 1843索引文件结构 Lucene使 ... -
lucene-对每个字段指定分析器及较复杂搜索页面(对QQ国内新闻搜索)
2009-12-23 16:47 45791、 JAVA代码(索引) package bindex; ... -
lucene-使用lius解析html
2009-12-23 16:53 54621、代码 package liusextract; imp ... -
lucene-使用lius解析pdf、ppt、rtf、txt、xml
2009-12-23 16:54 23651、代码 package liusextract; imp ... -
lucene-使用lius解析word、excel
2009-12-23 17:00 2152下载lius http://sourceforge.net/ ...
相关推荐
赠送jar包:lucene-core-7.2.1.jar; 赠送原API文档:lucene-core-7.2.1-javadoc.jar; 赠送源代码:lucene-core-7.2.1-sources.jar; 赠送Maven依赖信息文件:lucene-core-7.2.1.pom; 包含翻译后的API文档:lucene...
基于JAVA的全文索引引擎Lucene简介(中) - 网站开发初中级代码参考-
Lucene索引工具全套jar包,版本4.7.0
Lucene是一个全文搜索框架...因此它并不像http://www.baidu.com/ 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品,lucene-core:其中包括了常用的文档,索引,搜索,存储等相关核心代码。
lucene-core-4.5.0.jar lucene4.5版本的jar包,可添加到lib目录下使用
Lucene是一套用于全文检索和搜寻的开源程序库,由Apache软件基金会支持和提供,Lucene提供了一个简单却强大的应用程序接口(API),能够做全文索引和搜寻,在Java开发环境里Lucene是一个成熟的免费开放源代码工具,...
索引概念 反向索引 Lucene索引 ◦索引文件格式 总结
Apache Lucene是一个开放源程序的搜索引擎,利用它可以轻易地为Java...Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现 全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
java全文索引,高亮显示,lucene-4.7.0工具类
lucene索引工具包官方开发文档,英文原版,适用版本4.6.1
lucene索引工具包官方开发文档,英文原版,适用版本4.7.0
在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是最受欢迎的免费Java资讯检索程式库。人们经常提到资讯检索程式库,虽然与搜索引擎有关,但不应该将资讯检索程式库与搜索引擎相混淆。 olr是...
Lucene 是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎...
lucene-inmemory-index:使用Lucene在内存中搜索索引
Lucene之删除索引 Lucene之删除索引 Lucene之删除索引 http://blog.csdn.net/nupt123456789/article/details/10666105
该一整套lucene开发jar包包含以下内容: lucene-core-3.0.1.jar(核心包) contrib\analyzers\common\lucene-analyzers-3.0.1.jar(分词器) contrib\highlighter\lucene-highlighter-3.0.1.jar(高亮) contrib\...