lucene4.10.2入门

1、首先到官网下载lucene的jar包是必须的

2、下载完的jar中其中有一个demo 有一个是lucene-xml-query-demo.war可以放到tomcat 安装目录的webapps中

3、将tomcat服务器开启输入localhost:8080/lucene-xml-query-demo将会出现界面但是点击查询会报java.lang.ClassNotFoundException: org.apache.lucene.xmlparser.webdemo.FormBasedXmlQueryDemo这个错误。这个原因是新版本中FormBasedXmlQueryDemo的路径

变了,这时你就需要到该项目的web.xml中将<servlet-class>org.apache.lucene.xmlparser.webdemo.FormBasedXmlQueryDemo</servlet-class>

更改为<servlet-class>org.apache.lucene.demo.xmlparser.FormBasedXmlQueryDemo</servlet-class>

然后把lucene-4.1.0解压包下analysis\common\lucene-analyzers-common-4.10.2.jar 和sandbox\lucene-sandbox-4.10.2.jar

这两个文件拷贝到WEB-INF\lib文件夹下面,这时在点击查询就不会出现问题了 输入java查询结果如下

3、上面的lucene中的附带的例子下面开始进入lucene简单的学习

lucene基本工作原理简单可以理解为创建索引,而根据索引查询

下面是简单的例子

TxtFileInderxer作用是将D:/luceneData中所有的.txt文件建立索引并将所有的索引存放在D:/luceneIndex中

public class TxtFileIndexer {

public static void main(String[] args) throws Exception {

// indexDir is the directory that hosts Lucene‘s index files

File indexDir = new File("D:\\luceneIndex");

// dataDir is the directory that hosts the text files that to be indexed

File dataDir = new File("D:\\luceneData");

// Analyzer luceneAnalyzer = new

// StandardAnalyzer(Version.LUCENE_4_10_2);

// 对文档进行分词

Analyzer luceneAnalyzer = new StandardAnalyzer();

File[] dataFiles = dataDir.listFiles();

IndexWriterConfig indexWriterConfig = new IndexWriterConfig(

Version.LUCENE_4_10_2, luceneAnalyzer);

// 创建索引

IndexWriter indexWriter = new IndexWriter(FSDirectory.open(indexDir),

indexWriterConfig);

// IndexWriter indexWriter = new IndexWriter(indexDir, luceneAnalyzer,

// true);

long startTime = new Date().getTime();

for (int i = 0; i < dataFiles.length; i++) {

if (dataFiles[i].isFile()

&& dataFiles[i].getName().endsWith(".txt")) {

System.out.println("Indexing file "

+ dataFiles[i].getCanonicalPath());

// 封装document对象

Document document = new Document();

Reader txtReader = new FileReader(dataFiles[i]);

document.add(new TextField("path", dataFiles[i]

.getCanonicalPath(), Store.YES));

// document.add(Field.Text("contents", txtReader));

document.add(new TextField("contents", txtReader));

indexWriter.addDocument(document);

}

}

indexWriter.commit();

// indexWriter.optimize();

indexWriter.close();

long endTime = new Date().getTime();

System.out.println("It takes " + (endTime - startTime)

+ " milliseconds to create index for the files in directory "

+ dataDir.getPath());

}

}

TxtFileSearcher作用是从D:/luceneIndex中读取索引并查询.txt文件中含有lucene的文件

public class TxtFileSearcher {

public static void main(String[] args) throws Exception {

String queryStr = "lucene";

// This is the directory that hosts the Lucene index

File indexDir = new File("D:\\luceneIndex");

Directory directory = FSDirectory.open(indexDir);

// FSDirectory fsDirectory = FSDirectory.open(indexDir);

IndexReader indexReader = IndexReader.open(directory);

// FSDirectory directory = FSDirectory.getDirectory(indexDir,false);

// IndexReader indexReader = IndexReader.open(fsDirectory);

IndexSearcher indexSearcher = new IndexSearcher(indexReader);

// IndexSearcher searcher = new IndexSearcher(indexReader);

if (!indexDir.exists()) {

System.out.println("The Lucene index is not exist");

return;

}

Term term = new Term("contents", queryStr.toLowerCase());

TermQuery luceneQuery = new TermQuery(term);

// Hits hits = searcher.search(luceneQuery);

TopDocs topDocs = indexSearcher.search(luceneQuery, 1000);

ScoreDoc[] scoreDocs = topDocs.scoreDocs;

if (scoreDocs == null || scoreDocs.length == 0) {

System.out.println("The  Lucene index is not exist");

}

for (int i = 0; i < scoreDocs.length; i++) {

Document document = indexSearcher.doc(scoreDocs[i].doc);

System.out.println("File: " + document.get("path"));

}

indexReader.close();

}

}

时间: 2024-10-27 10:03:35

lucene4.10.2入门的相关文章

lucene4.10.3入门

最近在研究搜索殷勤的全文索引,刚刚有了点眉目,发现还是很实用的,这里放出入门秘籍,大家一起分享! 一,Lucene 简介 Lucene 是一个基于 Java 的全文信息检索工具包,它不是一个完整的搜索应用程序,而是为你的应用程序提供索引和搜索功能.Lucene 目前是 Apache Jakarta 家族中的一个开源项目.也是目前最为流行的基于 Java 开源全文检索工具包. 目前已经有很多应用程序的搜索功能是基于 Lucene 的,比如 Eclipse 的帮助系统的搜索功能.Lucene 能够为

Apache Shiro系列三:10分钟入门

一.            介绍 看完这个10分钟入门之后,你就知道如何在你的应用程序中引入和使用Shiro.以后你再在自己的应用程序中使用Shiro,也应该可以在10分钟内搞定. 二.            概述 关于Shiro的废话就不多说了,详情可以看http://www.cnblogs.com/strinkbug/p/6117353.html Apache Shiro可以做什么?http://shiro.apache.org/features.html 答案是很多,但是在这里我们就不展开

10分钟入门opengl投影变换推导(内含mathjax公式)

*/ pre code { display: block; padding: 0.5em; color: #333; background: #f8f8ff } pre .comment, pre .template_comment, pre .diff .header, pre .javadoc { color: #998; font-style: italic } pre .keyword, pre .css .rule .keyword, pre .winutils, pre .javas

lucene4.10.2实例(增删改查)

最新jar和src免费下载:http://download.csdn.net/detail/u011518709/8248403 lucene 包的组成结构:对于外部应用来说索引模块(index)和检索模块(search)是主要的外部应用入口 org.apache.Lucene.search/ 搜索入口 org.apache.Lucene.index/ 索引入口 org.apache.Lucene.analysis/ 语言分析器 org.apache.Lucene.queryParser/ 查询

大数据10小时入门Hadoop+HDFS+YARN+MapReduce+Spark视频教程

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

10分钟入门微信小程序开发:从环境搭建到开发出第一个程序。

小程序简介 小程序是一种不需要下载安装即可使用的快速应用,它实现了应用“触手可及”的操作:用户扫一扫或搜一下即可打开应用,完全不需要安装,因此小程序不仅可提高的用户的应用体验,也方便应用的传扩散. 本文带大家快速入门小程开发,了解从环境搭建到开发出一个简单hello world程序,从而上手小程序开发,让你快速成功小程序开发人员.之后,想开发什么样的小程序,就可以自己研究和努力了. 下面,是循序渐经的步骤: ?1.注册小程序 在开发之前,当然需要先注册一个小程序账号. 进入“微信公众平台”进行注

全文检索(二)-基于lucene4.10的增删改查

今天 用lucene完成了 一个简单的web应用,提取了早期编写的一个测试类, 首先简介下lucene几个常用包; lucene 包的组成结构:对于外部应用来说索引模块(index)和检索模块(search)是主要的外部应用入口 org.apache.Lucene.search/ 搜索入口 org.apache.Lucene.index/ 索引入口 org.apache.Lucene.analysis/ 语言分析器 org.apache.Lucene.queryParser/ 查询分析器 org

全文检索(二)-基于lucene4.10的增删改查

今天 用lucene完毕了 一个简单的web应用.提取了早期编写的一个測试类. 首先简单介绍下lucene几个经常使用包; lucene 包的组成结构:对于外部应用来说索引模块(index)和检索模块(search)是基本的外部应用入口 org.apache.Lucene.search/ 搜索入口 org.apache.Lucene.index/ 索引入口 org.apache.Lucene.analysis/ 语言分析器 org.apache.Lucene.queryParser/ 查询分析器

Pandas 10分钟入门(官方文档注释版二)

本文接续注释版1,前文重点讲述了如何创建一个panads对象,本文重点讲述如何查看这些已经创建的对象. [查看数据] See the top & bottom rows of the frame(查看frame头部和尾部的行) >>> import pandas as pd >>> long_series = pd.Series(np.random.randn(1000)) >>> import numpy as np >>>