使用lucene 3.0.0索引和检索中文文件

一. 我本来的程序

其实我本来的程序挺简单, 完全修改自Demo里面的SearchFiles和IndexFiles. 唯一不同的是引用了SmartCN的分词器.

我把修改那一点的代码贴出来.

IndexhChinese.java:

Date start = new Date();
try {
   IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR), 
           new SmartChineseAnalyzer(Version.LUCENE_CURRENT), true, IndexWriter.MaxFieldLength.LIMITED);
   indexDocs(writer, docDir);
   System.out.println("Indexing to directory '" +INDEX_DIR+ "'...");
   System.out.println("Optimizing...");
   //writer.optimize();
   writer.close();

   Date end = new Date();
   System.out.println(end.getTime() - start.getTime() + " total milliseconds");

}
     SearchChinese.java
Analyzer analyzer = new SmartChineseAnalyzer(Version.LUCENE_CURRENT);

BufferedReader in = null;
if (queries != null) {
   in = new BufferedReader(new FileReader(queries));
} else {
   in = new BufferedReader(new InputStreamReader(System.in, "GBK"));
}

在这里, 我制定了输入的查询是采用GBK编码的.

然后我充满信心的运行后......发现无法检索出中文, 里面的英文检索是正常的.

二. 发现问题.

于是我就郁闷了, 由于对于java与lucene都是太熟悉, 而且用的3.0.0版外面的讨论又不是太多, 就瞎折腾了一会儿, 发现我如果把文件的格式另存为ansi就可以检索中文了(以前是utf-8的), 看来是文件编码的问题, 摸索了一下, 在indexChinese.java中发现了如下的代码:

static void indexDocs(IndexWriter writer, File file)
   throws IOException {
   // do not try to index files that cannot be read
   if (file.canRead()) {
     if (file.isDirectory()) {
       String[] files = file.list();
       // an IO error could occur
       if (files != null) {
         for (int i = 0; i < files.length; i++) {
           indexDocs(writer, new File(file, files[i]));
         }
       }
     } else {
       System.out.println("adding " + file);
       try {
         writer.addDocument(FileDocument.Document(file));
       }
       // at least on windows, some temporary files raise this exception with an "access denied" message
       // checking if the file can be read doesn't help
       catch (FileNotFoundException fnfe) {
         ;
       }
     }
   }

时间: 2024-12-29 02:08:56

使用lucene 3.0.0索引和检索中文文件的相关文章

Lucene索引和检索中文文件的问题

问题描述 lucene初学者,基础不好,碰到以下问题,恳请各位大侠指导,小女子感激不尽!用的是IKAnalyzer2012_u6.jar和lucene-core-3.6.2.jar是对本地的文件进行的索引和检索,做的web版的1.能检索英文的,就是检索不了中文的2.英文的检索出来的doc.get("contents")的值是空的,但是文件名和路径能读出来(附件里有代码)IndexUtil1.javapackage com.lium.bean;import java.io.Buffere

使用lucene 3.0.0 索引和检索中文文件

一. 我本来的程序 其实我本来的程序挺简单, 完全修改自Demo里面的SearchFiles和IndexFiles. 唯一不同的是引用了SmartCN的分词器. 我把修改那一点的代码贴出来. IndexhChinese.java: Date start = new Date(); try { IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR), new SmartChineseAnalyzer(Version.LUCE

使用Lucene索引和检索POI数据

1.简介 关于空间数据搜索,以前写过<使用Solr进行空间搜索>这篇文章,是基于Solr的GIS数据的索引和检索. Solr和ElasticSearch这两者都是基于Lucene实现的,两者都可以进行空间搜索(Spatial Search),在有些场景,我们需要把Lucene嵌入到已有的系统提供数据索引和检索的功能,这篇文章介绍下用Lucene如何索引带有经纬度的POI信息并进行检索. 2.环境数据 Lucene版本:5.3.1 POI数据库:Base_Station测试数据,每条数据主要是I

Apache Lucene 5.4.0 发布,Java 搜索引擎

Apache Lucene 5.4.0 发布,此版本包括大量的 bug 修复,优化和改进,现已提供下载: http://lucene.apache.org/core/mirrors-core-latest-redir.html 更新说明:https://lucene.apache.org/core/5_4_0/changes/Changes.html Lucene 5.4.0 值得关注的改进: API 改进 Query.getBoost and Query.setBoost are deprec

Apache Lucene 6.6.0 发布,Java 搜索引擎

Apache Lucene 6.6.0 发布了,值得关注的更新是: 添加一个并发的 SortedSet facets 实现 还包括许多 Bug 修复.改进.优化和其他的更新,详情点此参阅. 下载地址 Lucene 是 Apache 软件基金会的一个开放源代码的全文检索引擎工具包,是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎.Lucene 的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎.

在微软IIS 5.0泄漏索引目录的漏洞

iis|索引|微软 微软IIS 5.0泄漏索引目录的漏洞 发布日期: 2000-10-6 更新日期: 2000-10-6 受影响的系统: Microsoft IIS 5.0 + Microsoft Windows NT 2000 描述: -------------------------------------------------------------------------------- 如果IIS 5.0中的Index Server被允许的话,远程用户就可能察看整个根目录结构以及所有子

Lucene 3.0.0 之样例解析(1)-配置Lucene的源代码

从lucene.apache.org上面下载最新版本的Lucene源代码(目前是3.0.0), IDE我选择的Eclipse, 我也不太懂java, 不过非常想能够看看Lucene的底层的运作机制和一些技巧. 下载的包需要是后缀有src的, 我主要想看看源代码的内容, 所以就没有下载编译好的二进制包 从Eclipse的File->New->Java 选择 Create Project From exsiting Source, 然后选择源代码中的src目录, 自己取一个喜欢的名字, 选择确定后

Lucene 3.0.0细节初窥(1)-深入探索Lucene的consumer与processor

对于Lucene 3.0.0的线程模型我非常的感兴趣, 因为对于多线程我也是最近才接触, 别看我接触程序都快十年了, 有几个地方我一直非常的遗憾 : 没有写过网络相关的代码, 没有写过多线程程序, 没有写过数据库相关的内容, 没有写过Linux相关的程序 . 可能各位会觉得非常奇怪了: 那你这十年干嘛去了? 这不是基本上等同于不懂程序啊! (–_-) 我花了6年的时间巩固了算法和数据结构基础, 另外4年糊里糊涂的搞了很多比如3D游戏, 游戏的人工智能程序等内容, 总体上来说, 没有太多虚度时间

学习 不会用-如何加载Lucene.net3.0.0?

问题描述 如何加载Lucene.net3.0.0? 不会用,刚刚开始学Lucene.net,求教,哪位大神教教我,谢谢大神了