import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Date;
Browsing the archives for the Lucene tag
lucene实现搜索引擎的建立索引数据库,处理搜索结果.
一,创建索引
public boolean createIndex() throws IOException {
//.......
Directory fsDirectory = FSDirectory.getDirectory(Constant.INDEX_DIR, true);
Analyzer analyzer = new IK_CAnalyzer();//分析器
IndexWriter indexWriter = new IndexWriter(fsDirectory, analyzer, true);
for (int i = 0; i < htmls.length; i++) {
String htmlPath = htmls[i].getAbsolutePath();
if (htmlPath.endsWith(".html") || htmlPath.endsWith(".htm")) {
//添加 Document
addDocument(htmlPath, indexWriter);
}
}
indexWriter.optimize();
indexWriter.close();
}
lucene爬数据库中的数据无非也是查询数据。所有我们用lucene搜索数据主要有下面几个步骤:(代码紧供参考)
一 , 从数据库中查数据 ====爬数据 -------------
用 lucene 建立索引不可能每次都重新开始建立,而是按照新增加的记录,一次次的递增
建立索引的IndexWriter类,有三个参数
IndexWriter writer = new IndexWriter(path, new StandardAnalyzer(),isEmpty);
其中第三个参数是bool型的,指定它可以确定是增量索引,还是重建索引.
对于从数据库中读取的记录,譬如要为文章建立索引,我们可以记录文章的id号,然后下次再次建立索引的时候读取存下的id号,从此id后往下继续增加索引,逻辑如下.
public class SqlCon {
public static void main(String[] args) {
Date date1 = new Date();
String connectionUrl = "jdbc:sqlserver://localhost:1433;"
+ "databaseName=pubs;user=sa;password=";
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try {
....
}
本文主要讨论Lucene的系统结构,希望对其结构的初步分析,更深入的了解Lucene的运作机制,从而实现对Lucene的功能扩展。 Lucene的包结构 如上图所示,Lucene源码中共包括7个子包,每个包完成特定的功能: <!--[if !supportEmptyParas]--> <!--[endif]--> Lucene包结构功能表 包名 功能 org.apache.lucene.analysis 语言分析器,主要用于的切词,支持中文主要是扩展此类 org.apache.lucene.document 索引存储时的文档结构管理,类似于关系型数据库的表结构 org.apache.lucene.index 索引管理,包括索引建立、删除等 org.apache.lucene.queryParser 查询分析器,实现查询关键词间的运算,如与、或、非等 org.apache.lucene.search 检索管理,根据查询条件,检索得到结果 org.apache.lucene.store 数据存储管理,主要包括一些底层的I/O操作 org.apache.lucene.util 一些公用类 <!--[if !supportEmptyParas]--> <!--[endif]--> <!--[if !supportLists]-->2. <!--[endif]-->Lucene的主要逻辑图 <!--[if !supportEmptyParas]--> <!--[endif]--> Lucene功能强大,但从根本上说,主要包括两块:一是文本内容经切词后索引入库;二是根据查询条件返回结果。 以下是上述两大功能的逻辑图: STORAGE (存储器) ACCESS INDEX (访问索引) SERACHER (查询器) ANALYZER (语言分析器) QUERY PARSER (查询分析器) DOCUMENT (文档结构) SEARCHER (查询) INDEXER (入库) FS BDD RAM [...]
一,信息检索的过程简介
全文检索和数据库应用最大的不同在于:让最相关的头100条结果满足98%以上用户的需求
1,构建文本库
在开发功能前,一个信息检索系统需要做些准备工作,首先,必须要构建一个文本数据库,这个文本数据库用来保存所有用户可能检索的信息。在这些信息的基础上,确定索引中的文本类型,文本类型是被系统所认可的一种信息格式,这种格式应当具有可识别,冗余程度低的特点。一旦文本模型确定下来后,就不应当对其进行大的行动。
Lucene,作为一种全文搜索的辅助工具,为我们进行条件搜索,无论是像Google,Baidu之类的搜索引擎, 还是论坛中的搜索功能,还是其它C/S架构的搜索,都带来了极大的便利和比较高的效率。本文主要是利用Lucene对MS Sql Server 2000进行建立索引,然后进行全文索引。至于数据库的内容,可以是网页的内容,还是其它的。本文中数据库的内容是图书馆管理系统中的某个作者表- Authors表。
因为考虑到篇幅的问题,所以该文不会讲的很详细,也不可能讲的很深。
本文以这样的结构进行:
1.介绍数据库中Authors表的结构
2.为数据库建立索引
1运行环境lucene2.4.1,下载地址:http://apache.etoak.com/lucene/java/lucene-2.4.1.zip
2Lucene 简介 (文档参照http://www.ibm.com/developerworks/cn/java/j-lo-lucene1/ )
Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能。Lucene 目前是 Apache Jakarta 家族中的一个开源项目。也是目前最为流行的基于 Java 开源全文检索工具包。
3 索引和搜索
索引是现代搜索引擎的核心,建立索引的过程就是把源数据处理成非常方便查询的索引文件的过程。
Lucene环境配置:
在这里输入检索内容环境变量还是附上
CLASSPATH :.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\lucene-core-2.0.0.jar;%JAVA_HOME%\lib\lucene-demos-2.0.0.jar
JAVA_HOME C:\Program Files\Java\jdk1.5.0
path 加上 %JAVA_HOME%\bin