Lucene学习笔记(1)(来自:竹笋炒肉)

原创 2004年12月30日 12:39:00

Lucene学习笔记(1)

  Lucene是一套全文检索的API,对其介绍的文章和应用的案例都多,可参考lucene及本文的参考文献。
  此次学习,以实用为主,一是简单应用,二是Web应用,三是汉化,四相关应用(Lucene主页上在SandBox中)。

0、准备工作
  去Lucene的主页下载目前的稳定版本lucene-1.2.tar.gz,解压缩,将lucene-1.2目录下的两个jar文件lucene-1.2.jar和lucene-demo2-1.2.jar放到适当的目录下后,并将其加入到CLASSPATH环境变量中。

tar zxvf lucene-1.2.tar.gz <----解压缩
cd lucene-1.2
cp *.jar $DP<---存放jar文件的目录,根据具体工作要求用实际目录替换
CLASSPATH=$CLASSPATH:$DP/lucene-1.2.jar:$DP/lucene-demos-1.2.jar; export CLASSPATH
winclasspath.gif如果不想在每次都登录后,可以编辑/etc/profile或自己目录下的.profile,将上面的最后一行加到文件的最后一行。Windows的设置,右击桌面的“我的电脑”,选“高级”->“环境变量”->选中CLASSPATH->“编辑”,在输入框中加入两个jar文件的全路径名,注意分隔符是分号(;)。参见右图。

1、运行demo

$ java org.apache.lucene.demo.IndexFiles /usr/local/man/man1/ <--对man文件建立索引
adding /usr/local/man/man1/mysql.1
...........
adding /usr/local/man/man1/cvs.1
1614 total milliseconds
$ java org.apache.lucene.demo.SearchFiles <--进行检索
Query: password
Searching for: password
7 total matching documents
0. /usr/local/man/man1/mysql.1
......
6. /usr/local/man/man1/mysqlshow.1
Query:
OK!Lucene自待的demo运行成功
这个demo程序调用的主要API函数:
/*关于索引的主要函数*/
File file=new File(argv[]);
IndexWriter writer = new IndexWriter("index", new StandardAnalyzer(), true);

Document doc = new Document();
doc.add(Field.Text("path", file.getPath()));
doc.add(Field.Keyword("modified",DateField.timeToString(file.lastModified())));
FileInputStream is = new FileInputStream(f);
Reader reader = new BufferedReader(new InputStreamReader(is));
doc.add(Field.Text("contents", reader));

writer.addDocument(doc);

writer.optimize();
writer.close();

/*关于检索的主要函数*/
Searcher searcher = new IndexSearcher("index");
Analyzer analyzer = new StandardAnalyzer();
Query query = QueryParser.parse(lineforsearch, "contents", analyzer);
Hits hits = searcher.search(query);
for (int i = start; i < hits.length(); i++) {
Document doc = hits.doc(i);
String path = doc.get("path");
System.out.println(i + ". " + path);
}


3、运行LuceneWeb
  假定tomcat装在$TOMCATHOME目录下,具体应用时用真实的目录替换$TOMCATHOME。

cd $TOMCATHOME/webapps
mkdir lucenedb
cd lucenedb
java org.apache.lucene.demo.IndexHTML -create -index $TOMCAT/webapps/lucenedb ../examples<--用相对路径“..”,一来指明被索引的文件的位置,二来用来显示被索引文件的URL,因为检索的jsp程序在luceneweb子目录下.examples可用其它的真实应用的目录名来替换
cd ..
cp ~/lucene-1.2/luceneweb.war . <--luceneweb.war在你解压缩生成的lucene-1.2目录下
../bin/shudown.sh
../bin/startup.sh

然后通过客户端访问http://yourdomain.com:8080/luceneweb,如果顺利浏览器应出现右边所示的内容。luceneweb-1.gif.再到服务器端
cd luceneweb
vi configuration.jsp <--将indexLocation 的值改为 "$TOMCATHOME/webapps/lucenedb";
cd ..
jar -ur luceneweb.war luceneweb
再到客户端,刷新刚才的页面,然后就可以输入单词进行检索了。遗憾的是,此是只能检索英文单词。且如果命中的html页面的title是汉字的话,显示也有问题。如图。
luceneweb-2.gif
  此处的IndexHTML,可以对htm、html和txt类型的文件进行索引,用的是一个HTMLParser,除此以外与上一例基本相同。

Lucene学习笔记(2)

参考文献
1、Lucene FAQ, http://lucene.sourceforge.net/cgi-bin/faq/faqmanager.cgi?file=chapter.indexing&toc=faq#q1

2、Getting Started,http://jakarta.apache.org/lucene/docs/gettingstarted.html

Lucene5 学习笔记(1) —— Hello World

这是第1节的内容,让我们对 lucene 全文搜索引擎有一个大概的认识。 对应 孔浩老师 01_lucenc简介和创建索引初步 这1节视频的内容。全文搜索引擎存在的意义:根据索引来查找,提高效率。方...
  • lw_power
  • lw_power
  • 2015年03月01日 22:05
  • 1837

Lucene学习笔记之(六)lucene的中文查询

步骤一:创建maven现目 步骤二:配置pom.xml文件 junit junit ...
  • yang307511977
  • yang307511977
  • 2016年07月30日 11:16
  • 3372

Lucene学习笔记之(四)特定项进行搜索

步骤一:创建maven现目 步骤二:配置pom.xml文件,代码如下: junit junit ...
  • yang307511977
  • yang307511977
  • 2016年07月30日 10:35
  • 1216

myBatis学习笔记(1)——快速入门

在项目中使用myBatis 导入jar包 在src下创建配置文件
  • u010837612
  • u010837612
  • 2015年05月12日 11:06
  • 891

豆角炒肉---美食杰

食材: 豆角、猪肉 辅料:
  • yangshuodianzi
  • yangshuodianzi
  • 2014年10月05日 19:52
  • 988

1.zabbix学习笔记:zabbix的安装

zabbix的安装为什么需要监控随着互联网公司业务不断增长,硬件规模不断扩大,作为SA我们需要清楚每一台服务器的状态(温度、CPU使用率、内存使用率、磁盘使用率等),如果使用人为的方式将会极大增加工作...
  • linux_player_c
  • linux_player_c
  • 2015年11月13日 14:30
  • 1684

lucene学习笔记-1

package com.xuyw; import java.io.File; import java.io.FileReader; import org.apache.lucene.analysi...
  • a714115852
  • a714115852
  • 2014年07月22日 21:42
  • 400

Lucene学习笔记(1)

搜索引擎是信息检索的工具,一个好的搜索引擎将为用户带来极大的便利。在目下大多数的网站、软件、app中都能看到搜索引擎的存在。有了搜索引擎,用户可以在网站等中快速获取信息。此外,搜索引擎常与网络爬虫配合...
  • wwb44444
  • wwb44444
  • 2017年07月18日 15:15
  • 135

Lucene5 学习笔记(2) —— 简单介绍 Lucene 搜索功能和索引的修改、删除

孔浩老师Lucene学习笔记 第3讲 Lucene索引 这一节课孔老师为我们写了一个用户创建索引的工具类IndexUtil.java。 其实我们的Lucene就是创建索引,分词,然后搜索,我们就...
  • lw_power
  • lw_power
  • 2015年02月28日 21:56
  • 1404

lucene 学习笔记 1

1、索引过程中所涉及到的核心类 1)IndexWriter:负责创建新索引或者打开已有索引,以及向索引中添加、删除或更新被索引文档的信息。它提供对索引文件的写入操作,但是不能用于读取或搜索索引。In...
  • u010437896
  • u010437896
  • 2013年06月09日 13:36
  • 805
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Lucene学习笔记(1)(来自:竹笋炒肉)
举报原因:
原因补充:

(最多只允许输入30个字)