0 0

在使用lucene4.3的试试 中文不能搜索 求帮助!5

1 这个是 createIndex类:
public class CreateIndex {

public void index(){
IndexWriter writer = null;
try {
//索引保存的地方
Directory directoey = FSDirectory.open(new File("F:/lucene/index01"));
//修改索引
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43, new StandardAnalyzer(Version.LUCENE_43));
iwc.setOpenMode(OpenMode.CREATE);
writer = new IndexWriter(directoey, iwc);
//为Document 添加field
File file = new File("F:/lucene/example");
indexDirectory(writer, file);
writer.commit();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public void indexDirectory(IndexWriter writer, File file){
for (File f : file.listFiles()) {
if (f.isDirectory()) {
indexDirectory(writer, f);
} else {
createDoc(writer, f);
}
}
}

public void createDoc(IndexWriter writer, File file){
Document doc = new Document();
try {
doc.add(new Field("content", new FileReader(file)));
doc.add(new Field("fileName", file.getName(), Field.Store.YES, Field.Index.ANALYZED));
doc.add(new Field("path", file.getAbsolutePath(), Field.Store.YES, Field.Index.NOT_ANALYZED));
//通过IndexWriter添加文档到索引中
writer.addDocument(doc);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}

这个是createSearcher类:
public void searcher(String keyword){
try {
//创建Directory:去哪里搜索
Directory directory = FSDirectory.open(new File("F:/lucene/index01"));

//创建IndexReader
IndexReader reader = IndexReader.open(directory);
// 根据indexReader 创建indexSearcher
IndexSearcher searcher = new IndexSearcher(reader);
//StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_43);
SmartChineseAnalyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_43);
//Analyzer analyzer = new IKAnalyzer();

//创建搜索的Query
    //创建parser来确定要搜索文件的内容,第二个参数表示搜索的域
QueryParser parser = new QueryParser(Version.LUCENE_43, "content", analyzer);

//创建Query,表示搜索域为content中包含java的文档
Query query = parser.parse(keyword);

// Term term = new Term("content", keyword);
// TermQuery query = new TermQuery(term);

//关键词高亮显示
// SimpleHTMLFormatter formatter = new SimpleHTMLFormatter("<read>","</read>");
// Highlighter highlighter = new Highlighter(formatter, new QueryScorer(query));
// highlighter.setTextFragmenter(new SimpleFragmenter(100));

//根据searcher搜索并且返回TopDocs   并取出前2条
TopDocs tds = searcher.search(query, 5);
System.out.println("总共有【" + tds.totalHits + "】条匹配结果");
ScoreDoc[] sds = tds.scoreDocs;
for (ScoreDoc sd : sds) {
Document d = searcher.doc(sd.doc);
System.out.println(d.get("fileName") + "["+d.get("path")+"]");
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


最后是main:

public static void main(String[] args) {
CreateIndex index = new CreateIndex();
index.index();
Searcher searcher = new Searcher();
searcher.searcher("书");
}


中文 搜索不到! 英文可以!
2013年5月23日 14:09

4个答案 按时间排序 按投票排序

0 0

支持1楼
0 0 在使用lucene4.3的试试 中文不能搜索 求帮助!5
1 这个是 createIndex类:
public class CreateIndex {

public void index(){
IndexWriter writer = null;
try {
//索引保存的地方
Directory directoey = FSDirectory.open(new File("F:/lucene/index01"));
//修改索引
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43, new StandardAnalyzer(Version.LUCENE_43));
改为
SmartChineseAnalyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_43);
因为分词器不一样。所以分出来的结果会不一样。这样就匹配不到了。

2013年8月05日 11:59
0 0

引用
//修改索引
IndexWriterConfig iwc = new IndexWriterConfig(Version.LUCENE_43, new StandardAnalyzer(Version.LUCENE_43));

你在建立索引的时候,不能用StandardAnalyzer了呀,改为中文分词器对应的Analyzer吧

2013年5月29日 14:55
0 0

doc.add(new Field("content", new FileReader(file))); 改为:
FileInputStream fis = new FileInputStream(curFile);
doc.add(new Field("content", new BufferedReader(new InputStreamReader(fis, "UTF-8"))));

2013年5月23日 16:33
0 0

中文分词一般用IKAnalyzer或者PaodingAnalyzer但是这两个,目前都停留在lucene3.5,4.0不支持,网上说的一些办法,但是我试了不行,索引重新倒回用lucene3.5吧

2013年5月23日 16:29

相关推荐

    lucene4.3源码

    Lucene是apache软件基金会4 jakarta项目组的一个子项目,是一个开放源代码的全文检索引擎工具包,但它不是一个完整的...人们经常提到信息检索程序库,虽然与搜索引擎有关,但不应该将信息检索程序库与搜索引擎相混淆。

    lucene4.3 按坐标距离排序

    在"lucene4.3 按坐标距离排序"这个主题中,我们将探讨如何在Lucene 4.3版本中利用地理位置信息进行文档排序,特别是在处理地理空间搜索时的应用。 首先,Lucene 4.3引入了对地理空间搜索的支持,这允许我们根据地理...

    lucene4.3工具类

    lucene4.3增删改查的的一个工具类,对新手来说是一份不可多得的入门资料。

    lucene 4.3所用到的包

    全文检索lucene 4.3 所用到的3个jar包,包含lucene-queryparser-4.3.0.jar、 lucene-core-4.3.0.jar、lucene-analyzers-common-4.3.0.jar。

    lucene-4.3.1资源

    在使用Lucene进行项目开发时,我们首先需要获取其资源文件,这通常是一个包含多个JAR包的压缩文件,例如"lucene-4.3.1"。这个压缩包中包含了Lucene的核心库和其他相关模块,如分析器、查询解析器等。 为了在项目中...

    Lucene4.3src 源代码

    lucene4.3源代码 censed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information ...

    lucene的IKAnalyzer以及兼容4.3

    3. **使用桥接类**:有时,开发者可以利用Lucene提供的桥接类来兼容旧版API,使IKAnalyzer能在新版本上运行。 4. **查阅官方文档**:仔细阅读Lucene和IKAnalyzer的官方文档,了解新版本的变更和推荐的迁移策略。 **...

    基于lucene4.3的知识图谱搜索引擎XunTa(一种用"知识点"来找人的搜人引擎).zip

    1.XunTa是在lucene4.3上创建的通过“知识点”来找人的搜人引擎。  输入一个关键词(或组合),XunTa返回一个排名列表,排在前面的人是与该关键词(组合)最相关的“达人”。  可访问 http://www.xunta.so立即体验...

    lucene 3.0 API 中文帮助文档 chm

    lucene 3.0 API中文帮助,学习的人懂得的

    lucene 3.0 API 中文帮助文档

    本篇将深入探讨Lucene 3.0 API的中文帮助文档,帮助开发者更好地理解和使用这个强大的搜索引擎。 首先,Lucene 3.0 API是Lucene的一个重要版本,它包含了丰富的类和接口,用于索引、查询和管理文本数据。这个版本的...

    Lucene.net中文帮助文档

    **Lucene.NET中文帮助文档详解** Lucene.NET是一款开源全文搜索引擎库,它是Apache Lucene项目在.NET框架下的实现。这个库提供了高级的信息检索服务,包括文本分析、索引和搜索功能,广泛应用于各种需要高效搜索...

    如何使用Lucene的中文分词搜索

    **标题:“如何使用Lucene的中文分词搜索”** 在信息检索和文本处理领域,Apache Lucene是一个强大的全文搜索引擎库,它提供了高级的索引和搜索功能。在处理中文文本时,由于中文句子是由词语组成的,而非单个字符...

    Lucene.net学习帮助文档

    这个压缩包包含了Lucene.net的源码和中文学习文档,旨在帮助开发者深入理解并利用Lucene.net来构建高效、功能强大的网站内部搜索引擎。 **一、Lucene.net基础** Lucene.net提供了对文本数据的索引和搜索功能,它...

    lucene.NET 中文分词

    在Lucene.NET中,高亮显示搜索结果是一项常用功能,它可以帮助用户快速定位搜索关键词。高亮通常通过Highlighter类实现,以下是一般流程: 1. **创建Highlighter实例**:`var highlighter = new ...

    使用Lucene.net进行全文搜索

    在IT行业中,全文搜索引擎的使用越来越广泛,特别是在大数据和内容检索领域。Lucene.NET是Apache Lucene项目的一个.NET版本,它提供了一个高效、可扩展的全文搜索库,适用于各种应用程序。本文将深入探讨如何使用...

    lucene 搜索中文PDF文档

    在本篇文章中,我们将深入探讨如何使用Lucene来搜索中文PDF文档,以及在这个过程中可能遇到的关键技术和挑战。 首先,我们要了解Lucene的核心概念。Lucene通过建立倒排索引来实现快速文本搜索。倒排索引是一种数据...

    Lucene 搜索方法(模糊搜索)

    在IT领域,搜索引擎技术是不可或缺的一部分,而Apache Lucene是一个高性能、全文本搜索库,它为开发者提供了构建自定义搜索引擎应用程序所需的所有工具。本篇我们将深入探讨如何在Lucene中实现模糊搜索,以及相关的...

    中文搜索分词lucene包+paoding包

    使用Lucene和Paoding结合的方式,可以在保持Lucene强大搜索功能的同时,利用Paoding优秀的中文分词性能,提高搜索的准确性。具体步骤通常包括以下几点: 1. **预处理**:首先,需要将输入的中文文本通过Paoding进行...

    Lucene使用代码实例之搜索文档

    《Lucene使用代码实例之搜索文档》 Lucene是一个高性能、全文检索库,它提供了强大的文本分析和索引功能,广泛应用于搜索引擎开发和其他需要高效文本处理的场景。本篇文章主要面向初学者,通过实例详细解释如何使用...

    Lucene全文搜索_LuceneJava全文搜索_

    总之,Lucene作为Java全文搜索的基石,提供了强大的功能和灵活性,可以帮助开发者构建高效、精准的搜索功能,无论是简单的关键词搜索还是复杂的模糊和智能查询,都能游刃有余地应对。结合"用户管理手册.docx"的学习...

Global site tag (gtag.js) - Google Analytics