Lucene_构建一个简单的 WEB 搜索程序
lucene
2.3.2
tomcat
6.0.16
je-analysis
1.4.0
lukeall
0.7.1
Mysql jdbc driver
3.1.13
Tidy
04aug2000r7
MyEclipse
6.0M1_E3.3
项目周期
3-4 天
目标
Lucene 入门
全文检索的概念,倒排索引的概念
建立索引
搜索
中文分词的实现
Nutch 入门
串知识点 Html,css,javascript,servlet,jsp,mysql,
介绍 MVC 的概念
演示借用一些 javascript 的成熟的框架实现页面的特殊效果。例如:rico
学会使用 myeclipse
熟悉 mysql 数据库的用法
什么时候用 lucene
数据库大量数据,文本字段内容很多
非结构化文档
1. 安装 myeclipse
建立工程web project
工程名称 lucene
如何配置 tomcat 服务器
好处自动部署
Windowshow viewservers
如何部署 web app
Deploy 按钮,添加 tomcat 项目
Web browser 窗口
最好不用此 browser
Show viewweb browser
引入 jar 包Lucene 工程文件夹下,建立 lib 目录,拷贝如下 jar 包到 lib 目录
lucene-core-2.2.0.jar
Tidy.jar
lucene-2.2.0\lucene-2.2.0\contrib\analyzerslucene-analyzers-2.2.0.jar
je-analysis-1.4.0.jar
mysql-connector-java-3.1.13-bin.jar
显示 line number
Alt/自动完成快捷键效果出不来
.快捷键效果出不来
2. 为一个文件建立索引(英文)
确认已经引入包 lucene-core-2.2.0.jar
Field.Store.YES 和 Field.Store.NO 区别
termVector 是 Lucene 1.4.3 新增的它提供一种向量机制来进行模糊查询,很少用。
DateTools.timeToString
IndexHTML.java
import java.io.File;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
public class IndexHTML {
static String index = "D:\\share\\05_Servlet_JSP\\tomcat\\apache-tomcat-5.5.17\\index";
static String root = "D:\\share\\lucene\\soft\\lucene-2.2.0\\lucene-2.2.0\\docs\\api\\index.html";
public static void main(String args [])throws Exception{
IndexWriter writer = new IndexWriter(index,new StandardAnalyzer(),true);
Document doc = new Document();
File f = new File(root);
doc.add(new Field ("path",f.getPath(),Field.Store.YES,Field.Index.UN_TOKENIZED));
doc.add(new Field ("content","我们是共产主义接班人",Field.Store.NO,Field.Index.TOKENIZED));
writer.addDocument(doc);
writer.optimize();
writer.close();
}
}
3. 如何确认索引已经正确建立?
java -jar lukeall-0.7.1.jar
4. tomcat 配置
\WEB-INF\lib\
lucene-core-2.2.0.jar
je-analysis-1.4.0.jar
确保 8080 端口可用
reloadable
C:\tomcat\conf\context.xml<Context reloadable="true">
5. 为一个文件建立索引(递归)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
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.LockObtainFailedException;
public class IndexHTML1 {
static IndexWriter writer;
public static void main(String[] args) throws Exception {
String root = "D:\\share\\01_J2SE\\soft\\html_zh_CN\\html\\zh_CN\\api\\java\\lang";
String index = "D:\\share\\tools\\apache-tomcat-6.0.14\\apache-tomcat-6.0.14\\index_cn";
writer = new IndexWriter(index,new StandardAnalyzer(),true);
File f = new File(root);
indexDocs(f);
writer.optimize();
writer.close();
}
private static void indexDocs(File f) throws Exception {
if(f.isDirectory()){
File [] subs = f.listFiles();
for (int i = 0; i < subs.length; i++) {
indexDocs(subs[i]);
}
}else{
indexDoc(f);
}
}
private static void indexDoc(File f) throws Exception {
System.out.println(f.getPath());
Document doc = new Document();
doc.add(new Field("path",f.getPath(),Field.Store.YES,Field.Index.UN_TOKENIZED));
doc.add(new Field("content",new FileReader(f)));
writer.addDocument(doc);
}
}
6. 为一个文件建立索引(使用 Tidy)
确认已经引入包 Tidy.jar
确认已经引入包 je-analysis-1.4.0.jar
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.text.DecimalFormat;
import jeasy.analysis.MMAnalyzer;
import org.apache.lucene.document.DateTools;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.w3c.tidy.Tidy;
public class IndexHTMLTidy {
// 索引建立到那个目录
static String index = "C:\\tomcat\\index_cn";
// 英文内容
// static String root =
// "G:\\lessons\\lucene\\student\\soft\\lucene-2.2.0\\lucene-2.2.0\\docs\\api\\index.html";
// 中文内容,java.lang下面的内容即可
static String root = "E:\\app\\develop\\java\\api\\html_zh_CN\\html\\zh_CN\\api\\java\\lang";
static Document doc = null;
static IndexWriter writer = null;
public static void main(String[] args) throws Exception {
writer = new IndexWriter(index, new MMAnalyzer(), true);
File f = new File(root);
indexDocs(f);