一、先去网上Down下来 paoding-analysis-2.0.4-beta,解压,在lib目录找到lucene-core-2.2.0.jar,lucene-highlighter-2.2.0.jar,commons-logging.jar 这几个Jar包放到项目当中。
二、添加Paoding。 在项目中使用发现,直接添加paoding-analysis.jar会发生异常。所以我们不直接添加这个Jar,而是把Src目录下的所有文件(也就是源代码) copy 都我们项目的Src目录下;
三、把dic(词典)目录也copy 到我们项目的src下,并在Src目录新建一个包data.index,主要是用来存放生成的索引文件;
四、修改 paoding-dic-home.properties 这个属性文件
#values are "system-env" or "this";
#if value is "this" , using the paoding.dic.home as dicHome if configed!
#paoding.dic.home.config-fisrt=system-env
#dictionary home (directory)
#"classpath:xxx" means dictionary home is in classpath.
#e.g "classpath:dic" means dictionaries are in "classes/dic" directory or any other classpath directory
#paoding.dic.home=dic
#seconds for dic modification detection
#paoding.dic.detector.interval=60
paoding.dic.home=classpath:dic // dic 所在目录
paoding.dic.home.config-fisrt=this //应用当前的配置
五、在 package net.paoding.analysis.knife 下找到PaodingMaker类, Ctrl + S + O 定位到
private static void setDicHomeProperties(Properties p) 这个方法,修改
private static void setDicHomeProperties(Properties p) {
String dicHomeAbsultePath = p
.getProperty("paoding.dic.home.absolute.path");
if (dicHomeAbsultePath != null) {
return;
}
// 获取词典安装目录配置:
// 如配置了PAODING_DIC_HOME环境变量,则将其作为字典的安装主目录
// 否则使用属性文件的paoding.dic.home配置
// 但是如果属性文件中强制配置paoding.dic.home.config-first=this,
// 则优先考虑属性文件的paoding.dic.home配置,
// 此时只有当属性文件没有配置paoding.dic.home时才会采用环境变量的配置
String dicHomeBySystemEnv = null;
try {
dicHomeBySystemEnv = getSystemEnv(Constants.ENV_PAODING_DIC_HOME);
} catch (Error e) {
log.warn("System.getenv() is not supported in JDK1.4. ");
}
String dicHome = getProperty(p, Constants.DIC_HOME);
if (dicHomeBySystemEnv != null) {
String first = getProperty(p, Constants.DIC_HOME_CONFIG_FIRST);
if (first != null && first.equalsIgnoreCase("this")) {
if (dicHome == null) {
dicHome = dicHomeBySystemEnv;
}
} else {
dicHome = dicHomeBySystemEnv;
}
}
// 如果环境变量和属性文件都没有配置词典安转目录
// 则尝试在当前目录和类路径下寻找是否有dic目录,
// 若有,则采纳他为paoding.dic.home
// 如果尝试后均失败,则抛出PaodingAnalysisException异常
if (dicHome == null) {
File f = new File("dic");
if (f.exists()) {
dicHome = "dic/";
} else {
URL url = PaodingMaker.class.getClassLoader()
.getResource("dic");
if (url != null) {
dicHome = "classpath:dic/";
}
}
}
if (dicHome == null) {
throw new PaodingAnalysisException(
"please set a system env PAODING_DIC_HOME or Config paoding.dic.home in paoding-dic-home.properties point to the dictionaries!");
}
// 规范化dicHome,并设置到属性文件对象中
dicHome = dicHome.replace('\\', '/');
if (!dicHome.endsWith("/")) {
dicHome = dicHome + "/";
}
p.setProperty(Constants.DIC_HOME, dicHome);// writer to the properites
//修改部分
String path="";
try {
path = URLDecoder.decode(getFile(dicHome).getPath(), "utf-8");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// object
// 将dicHome转化为一个系统唯一的绝对路径,记录在属性对象中
File dicHomeFile = getFile(path);
//修改部分结束
if (!dicHomeFile.exists()) {
throw new PaodingAnalysisException(
"not found the dic home dirctory! "
+ dicHomeFile.getAbsolutePath());
}
if (!dicHomeFile.isDirectory()) {
throw new PaodingAnalysisException(
"dic home should not be a file, but a directory!");
}
p.setProperty("paoding.dic.home.absolute.path", dicHomeFile
.getAbsolutePath());
}
六、创建一个Servlet:AnalyzerServlet
package com.lunceneTest.servlet;
import java.io.IOException;
import java.net.URLDecoder;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.paoding.analysis.analyzer.PaodingAnalyzer;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.store.FSDirectory;
import com.lunceneTest.Model.News;
import com.lunceneTest.db.NewsDao;
public class AnalyzerServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -822638045647816348L;
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try
{
this.createIndex();
} catch (Exception e)
{
e.printStackTrace();
}
}
public void createIndex() throws Exception
{
//实例化分词器,使用中文分词器
Analyzer analyzer =new PaodingAnalyzer();
String path = URLDecoder.decode(AnalyzerServlet.class.getResource("/data/index").toString(),"UTF-8").replace("file:/","");
System.out.println(path);
FSDirectory directory = FSDirectory.getDirectory(path);
// true表示覆盖原来已经创建的索引,如果是false表示不覆盖,而是继续添加索引
IndexWriter writer = new IndexWriter(directory,analyzer,true);
List<News> list = NewsDao.getAllNews(); // Dao层获取数据库新闻列表的方法
for (News news : list) {
Document doc = new Document();
//Field.Index.UN_TOKENIZED 不分词
Field id_filed = new Field(News.ID,String.valueOf(news.getId()),Field.Store.YES,Field.Index.UN_TOKENIZED);
Field title_field = new Field(News.TITLE,news.getTitle(),Field.Store.YES,Field.Index.TOKENIZED);
Field content_field = new Field(News.CONTENT,news.getContent(),Field.Store.YES,Field.Index.TOKENIZED);
doc.add(id_filed);
doc.add(title_field);
doc.add(content_field);
writer.addDocument(doc);
}
writer.optimize();
writer.close();
}
}
到这里就基本完成了,运行后会发现data.index这个目录下多了很多文件
http://apps.hi.baidu.com/share/detail/24048347
分享到:
相关推荐
1. **索引创建**:Luncene 提供了 API 来创建和更新索引。你可以通过添加文档、字段和文本内容来构建索引。 2. **倒排索引**:Luncene 使用倒排索引来快速查找包含特定词汇的文档。每个词项关联一个列表,包含所有...
Luncene 是一款强大的全文搜索引擎库,而 Heritrix 是一个网络抓取工具,它们共同为创建一个完整的搜索解决方案提供了基础。 **Luncene 2.0** Luncene 2.0 是 Apache Software Foundation 的一个项目,它提供了高效...
- **索引**:Lucene的核心操作之一是创建索引。索引是一种数据结构,它存储了文档的内容以及元数据,便于后续的搜索操作。 - **Analyzer**:分析器用于解析文档内容并将其转换为一系列可被索引的词条。例如,`...
1. **索引构建**:Lucene的核心功能之一是创建倒排索引,这是一种数据结构,可以快速查找包含特定词汇的文档。开发者需要了解如何将文本数据转化为这种索引形式,包括文档的分词、词频计算以及如何存储这些信息。 2...
lucene 建索引的基本实例 Lucene 是一个高性能的、基于 Java 的全文搜索引擎,广泛应用于搜索引擎、文档管理系统、电子商务平台等领域。在 Lucene 中,索引是搜索引擎的核心组件,负责将文档转换为可被搜索的格式...
Luncene的API,详细接受了Luncene的使用方法
luncene in action中文版 doc格式
索引创建 在使用Lucene.Net时,首先需要对要搜索的数据进行索引。这通常涉及以下几个步骤: - 分词:将原始文本拆分成有意义的单元,称为“词元”(Token)。 - 字段定义:将数据组织成多个字段,如标题、内容等。...
- 可以选择在内存中或磁盘上创建索引,以平衡性能和资源消耗。 6. **实时性和持久性**: - Lucene提供近乎实时的搜索,即索引更新后,新的文档或修改后的文档在很短时间内可被搜索到。 - 索引的持久性是通过定期...
支持lucene4.0的paoding分词
当两者结合时,可以为中文文本的索引和搜索提供强大支持。本文将详细介绍mmseg4j和Lucene5.x的基本概念,以及如何将它们整合在一起,同时提供mmseg4j的源码解析。 **mmseg4j简介** mmseg4j基于Maxent Minimum Error...
在实际开发中,首先需要在ASP.NET应用中引入Lucene.NET的库,然后创建一个索引器类,该类负责读取数据并用Lucene.NET建立索引。索引完成后,可以创建一个搜索服务类,用于接收用户的查询,执行查询操作,并返回结果...
luncene 简单的开原项目
2. **创建索引写入器(IndexWriter)**:使用 Analyzer 创建 IndexWriter 实例,设置索引目录和其他配置参数。 3. **添加文档(Document)**:每个要索引的文件被视为一个 Document 对象,包含多个 Field,每个 ...
- 使用`IndexWriter`类来创建或更新索引。 - 选择合适的分析器,对文档进行分析并写入索引。 2. **搜索文档** - 使用`IndexSearcher`和`Query`来执行搜索操作。 - 可以设置搜索参数,如返回结果的数量、排序...
【标题】"java+lucene)1236.rar_Lucene 搜索_Luncene_lucene_lucene web" 提供的信息表明这是一个使用Java和Lucene框架实现的搜索系统,特别是针对公交数据的搜索。Lucene是Apache软件基金会的一个开源全文检索库,...
- **创建索引**:这通常涉及读取源数据(如文件或数据库),将它们转换为Lucene的Document对象,然后将这些Document添加到IndexWriter,最终生成索引。 - **搜索索引**:学习如何使用Analyzer构建查询,调用...
### 基于Java的Luncene的Compass框架说明使用技术文档 #### 一、原理描述 Compass是一款优秀的开源Java搜索引擎框架,它能够帮助应用程序实现更为强大的搜索引擎语义能力。Compass依赖于顶级的Lucene搜索引擎,并...
在这个版本中,Lucene提供了对文本的分词、索引和搜索能力,包括倒排索引的创建、优化和查询解析等。开发者可以使用它来建立全文索引,实现快速、高效的全文搜索。同时,Lucene还支持多种分词器,可以处理不同语言的...