代码如下
public void testIndex() throws IOException, SQLException {
NewsDao ndao = new NewsDao();
List<News> newsList = ndao.getNewsListAll();
Analyzer analyzer = new IKAnalyzer(true);
Directory directory = FSDirectory.open(new File(INDEX_DRICTORY));
IndexWriterConfig config = new IndexWriterConfig(MatchVersion, analyzer);
config.setOpenMode(IndexWriterConfig.OpenMode.CREATE);
IndexWriter writer = new IndexWriter(directory, config);
TokenStream ts = null;
TokenStream content_ts = null;
StringField idField = new StringField("nid", String.valueOf(0),
Field.Store.YES);
Document doc = null;
for (News n : newsList) {
doc = new Document();
idField.setStringValue(String.valueOf(n.getId()));
ts = analyzer.tokenStream("title", new StringReader(n
.getNewsTitle()));
// getTokens(ts);
TextField title = new TextField("title", ts);
content_ts = analyzer.tokenStream("content", new StringReader(
HTMLFilter.delHTMLTag(n.getNewsContext())));
TextField content = new TextField("content", content_ts);
// getTokens(content_ts);
doc.add(idField);
doc.add(title);
doc.add(content);
writer.addDocument(doc);
}
if (ts != null) {
try {
ts.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (content_ts != null) {
try {
content_ts.close();
} catch (IOException e) {
e.printStackTrace();
}
}
writer.close(true);
directory.close();
}
在writer.addDocument(doc);时报空指针异常,我想获取每个Field的分词结果,所以使用TokenStream来创建Field,没想到居然出现这错误。小弟初学lucene,忘各位大神帮忙解决该问题。如果有其他方法可以在建立索引时返回分词也过也请告诉我,谢谢。
问题补充:错误提示如下:
Exception in thread "main" java.lang.NullPointerException
at org.wltea.analyzer.core.AnalyzeContext.fillBuffer(AnalyzeContext.java:124)
at org.wltea.analyzer.core.IKSegmenter.next(IKSegmenter.java:122)
at org.wltea.analyzer.lucene.IKTokenizer.incrementToken(IKTokenizer.java:78)
at org.apache.lucene.index.DocInverterPerField.processFields(DocInverterPerField.java:102)
at org.apache.lucene.index.DocFieldProcessor.processDocument(DocFieldProcessor.java:254)
at org.apache.lucene.index.DocumentsWriterPerThread.updateDocument(DocumentsWriterPerThread.java:256)
at org.apache.lucene.index.DocumentsWriter.updateDocument(DocumentsWriter.java:376)
at org.apache.lucene.index.IndexWriter.updateDocument(IndexWriter.java:1473)
at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1148)
at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:1129)
at manage.lucene.LuceneTools.testIndex(LuceneTools.java:133)
at manage.lucene.LuceneTools.main(LuceneTools.java:95)
相关推荐
**标题:“Lucene建立索引”** **描述分析:** Lucene是一个开源的全文检索库,由Apache软件基金会开发。它的主要功能是提供高效的文本搜索引擎,尤其在处理大量数据时,其性能表现突出。倒排索引是Lucene实现搜索...
### Lucene对XML文档建立索引的技术解析与实践 #### 一、引言 随着互联网技术的迅猛发展,非结构化数据(如XML文档)在企业和组织中的应用日益广泛。如何高效地处理这些非结构化的数据,特别是进行快速检索成为了一...
《Lucene全文检索:简单索引与搜索实例详解》 Lucene是Apache软件基金会的开源项目,是一款强大的全文检索库,被广泛应用于Java开发中,为开发者提供了构建高性能搜索引擎的能力。在本文中,我们将深入探讨如何基于...
在创建索引时,需要注意以下关键点: 1. **资料的准确性**:由于网络上的信息繁多且质量参差不齐,使用Lucene时要确保所参考的教程或文档是最新的,因为版本更新可能导致某些方法或功能的改变。例如,旧版本中可能...
在建立索引时,Lucene会对输入的文档进行分析,将其拆分成一个个的词汇,并为每个词汇创建一个倒排表,记录该词汇出现在哪些文档以及在文档中的位置信息。lucene-core-3.0.0.jar是Lucene的核心库,包含了构建和查询...
- 在MyEclipse10中开发Lucene应用时,确保JDK版本与Lucene版本兼容,避免出现运行时问题。 通过上述步骤,你可以在MyEclipse10环境下使用Lucene快速建立和搜索索引,为你的应用程序添加强大的全文检索功能。
全文检索的关键在于通过建立索引,将原本非结构化的文本数据转化为结构化的表示,使得搜索过程可以高效进行。在Lucene中,这个过程包括分析文本、创建倒排索引等步骤,使得搜索操作从线性时间复杂度转变为对数时间...
**Lucene创建索引与搜索"java"关键字的示例代码** Apache Lucene是一个高性能、全功能的文本搜索引擎库,广泛应用于各种系统中用于实现高效、精准的全文检索功能。这个示例代码将向我们展示如何使用Lucene来创建一...
本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 【该源码由51aspx提供】 源码 " onerror="this.src='/images/ifnoimg.gif'" src="/uploads/allimg/090904/1039152O5-0.jpg...
本文将深入探讨如何利用Lucene实现增量索引,这是一种在数据库或文件系统更新时仅对新数据或变化数据进行索引的技术,以降低资源消耗并保持搜索性能。 **1. Lucene基础知识** Lucene首先需要理解的是它的核心概念,...
iTextPDFExtractor.java ------ ...--PDFBox创建PDF文件的Lucene索引 PDFBoxPathIndex.java ------- --PDFBox创建指定目录PDF文档索引 POIOfficeExtractor.java ----- -- POI处理Excel和Word文档代码
7. **写入Document并建立索引**:调用`IndexWriter.addDocument()`方法将Document写入索引。 8. **优化索引**:`IndexWriter.optimize()`可以合并索引段,提高查询性能。 9. **关闭索引写入器**:完成所有操作后,...
Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个...本源码演示了Lucene结合Sql建立索引,把Sql中的数据通过建立索引用Lucene来检索 支持简单的中文分词,同时提供了Lucene.Net-2.0-004版本的源码给大家
在Lucene中,索引过程包括分词、建立倒排索引以及存储相关元数据。倒排索引是Lucene的核心,它允许快速定位包含特定词汇的文档。搜索则通过查询解析、评分以及结果排序来实现,提供高效的检索性能。 2.2.3 Web...
倒排索引的基本思想是为每个文档中的每个词建立索引,并记录该词出现在哪些文档中及其位置信息。 - **倒排索引**:对于每个单词或词条,都会有一个包含该词条出现过的所有文档ID的列表。这种方式与传统的文档索引...
在使用 Lucene 进行信息检索时,有时我们需要对建立的索引进行查看、调试或分析,这时就需要借助 Lucene 的索引查看工具。 Luke 是一个非常实用的 Lucene 索引浏览器,全称为 Lucidworks Luke。它允许用户以图形化...
《使用Lucene.NET对数据库建立索引及搜索》 在信息技术领域,搜索引擎是不可或缺的一部分,尤其是在处理大量数据时。Lucene.NET是一个强大的全文搜索引擎库,它允许开发人员在应用程序中集成高级搜索功能。本文将...
Lucene结合Sql建立索引Demo源码 Lucene(这里用到的是Lucene.net版本也成为DotLucene)是一个信息检索的函数库(Library),利用它你可以为你的应用加上索引和搜索的功能. Lucene的使用者不需要深入了解有关全文检索的...