by Alex
--------
前几天写了个文本自动分类的小程序, 用到了Lucene,用向量空间夹角的方式经过对大量英文文本测试能达到70%左右的识别率。因为对Lucene不太熟悉, 不过程序本身有进一步的优化空间,正在尝试优化, 另一方面用神经网络来再做一个分类器,做完之后再贴测试结果的比照吧。
网上搜到的似乎都是早点版本的Lucene文章, 先记一下3.x后的Lucene用到的一些API
1,建立index
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
......
doc.add(new Field("content", new FileReader(f), Field.TermVector.WITH_POSITIONS_OFFSETS));
doc.add(new Field("category", getClass(f), Field.Store.YES, Field.Index.NOT_ANALYZED));
doc.add(new Field("filename", f.getName(), Field.Store.YES, Field.Index.NOT_ANALYZED));
2,获取TermFreqVector(i为doc的idx)
TermFreqVector termFreqVector = reader.getTermFreqVector(i, "content");
3,分析器获取分词
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_30);
TokenStream stream = analyzer.tokenStream("content", new StringReader(content));
stream.addAttribute(TermAttribute.class);
while(stream.incrementToken()) {
TermAttribute a = stream.getAttribute(TermAttribute.class);
}
4, 补充个计算TFIDF的
Directory dir = new SimpleFSDirectory(new File(LuceneUtils.INDEX_BASE));
IndexReader reader = IndexReader.open(dir);
TermEnum enums = reader.terms();
Similarity similarity = new DefaultSimilarity();
int docs = reader.maxDoc();
while(enums.next()){
Term term = enums.term();
if (term.field().equals("content")) {
int freq = enums.docFreq();
double tfidf = similarity.idf(freq,docs) * similarity.tf(freq);
}
}
分享到:
相关推荐
经典的Lucene实例代码及详细解析以及Lucene结构流程介绍 Lucene是一个功能强大且灵活的开源搜索引擎库,它提供了一个简单易用的API,允许开发者快速构建搜索应用程序。下面将对Lucene的实例代码和结构流程进行详细...
标题中的".NET Lucene 源代码"表明我们将探讨的是如何在.NET环境下利用Lucene进行搜索引擎的开发,并且会涉及到源代码层面的解析。描述中提到的“简单易用”,揭示了Lucene的核心特性之一,即它对开发者友好,易于...
Lucene常用代码详解 Lucene是一款功能强大且高效的搜索引擎,广泛应用于各种搜索应用程序中。为了更好地使用Lucene,需要了解其核心API和常用代码。本文将对Lucene部分常用代码进行详细解释,包括多字段搜索、多...
《Lucene使用代码实例之搜索文档》 Lucene是一个高性能、全文检索库,它提供了强大的文本分析和索引功能,广泛应用于搜索引擎开发和其他需要高效文本处理的场景。本篇文章主要面向初学者,通过实例详细解释如何使用...
Lucene是Apache软件基金会的一个开放源代码项目,它是一个全文搜索引擎库,主要用Java编写,但也有其他语言的版本。Lucene提供了高级的文本分析、索引和搜索功能,是构建高效、可扩展的信息检索应用的基础。在Java的...
《Lucene源代码剖析》是一本深度探讨Java版本Lucene搜索引擎库的专业书籍。Lucene是Apache软件基金会的一个开源项目,广泛应用于全文检索和信息检索领域。本书旨在通过深入解析其源代码,帮助开发者理解Lucene的工作...
本文将对Lucene的基本原理及其实现的代码进行分析。 首先,全文检索的基本原理包括索引的创建与搜索过程。在索引创建过程中,文档首先经过分词组件Tokenizer拆分成词元Token,然后经过语言处理组件...
《深入剖析Lucene.NET:基于源代码的实例解析》 Lucene.NET,作为Apache Lucene的.NET版本,是一个高性能、全文检索库,为.NET开发者提供了强大的文本搜索功能。本实例将带您深入理解Lucene.NET的内部机制,通过源...
《Lucene-2.3.1 源代码阅读学习》 Lucene是Apache软件基金会的一个开放源码项目,它是一个高性能、全文本搜索库,为开发者提供了在Java应用程序中实现全文检索功能的基础架构。本篇文章将深入探讨Lucene 2.3.1版本...
《Lucene简单代码实例解析》 Lucene是一个高性能、全文本搜索库,由Apache软件基金会开发,被广泛应用于各种搜索引擎的构建。它提供了一个简单的API,使得开发者可以方便地在自己的应用程序中集成全文检索功能。...
【标题】"传播智课Lucene+代码"指的是一个关于Lucene的教程资源包,它包含了一套由传智播客提供的课程代码和相关的学习资料。Lucene是Apache软件基金会的一个开源项目,它是一个高性能、全文本搜索库,被广泛用于...
《Lucene原理与代码分析》深入探讨了几乎最新版本的Lucene的工作机制和代码实现细节,为理解全文搜索引擎的核心技术提供了宝贵的资源。以下是对该文件关键知识点的详细解析: ### 全文检索的基本原理 #### 总论 ...
《构建搜索引擎:剖析Lucene2.0与Heritrix源代码》 在信息化时代,搜索引擎已经成为我们日常获取信息的重要工具。本章节将深入探讨如何利用Lucene2.0和Heritrix这两个开源项目构建一个基本的搜索引擎。首先,我们要...
这是一篇公司的内部培训教材,其中中的内容涵盖LUCENE的方方面面,从源代码角度深入剖析LUCENE,如果要对LUCENE有更加深入的了解(专家级别),这篇技术文档必不可少。 前提:对LUCENE有一定程度的了解,否则会让你云...
### Lucene原理与代码分析概览 #### 一、全文检索基本原理 全文检索是一种能够检索文档中任意词语的信息检索技术。与简单的关键词查询不同,全文检索不仅关注文档标题、元数据,还深入到文档的实际内容中去。这种...
首先,我们来了解一下Lucene的核心概念。全文检索引擎的核心包括了索引和查询两个主要部分。在Lucene中,索引是通过分析文档内容,将其转化为一系列可快速检索的结构,这个过程称为倒排索引。倒排索引将每个单词映射...
在深入理解Lucene的源代码之前,我们需要先了解一下Lucene的基本概念和工作原理。 1. **Lucene基本组件**: - **索引(Indexing)**: Lucene首先将文档内容转化为可搜索的结构——索引。这个过程包括分词...
《深入剖析Lucene 4.9.0:最全源代码解析》 Lucene是一个开源的全文搜索引擎库,由Apache软件基金会开发并维护。在Java编程语言中,它提供了强大的文本搜索功能,广泛应用于各种信息检索系统。这次我们关注的是...
用java写的图形分词测试的小东西,用的分词器是: 来自“猎图网 www.richmap.cn”基于IKAnalyzer分词算法的准商业化Lucene中文分词器,其使用“正向全切分算法”,42万汉字...但是没有源代码下载,只能联系作者索要。