public abstract class Analyzer {
public abstract TokenStream tokenStream(String fieldName, Reader reader);
*
* @param fieldName Field name being indexed.
* @return position increment gap, added to the next token emitted from {@link #tokenStream(String,Reader)}
*/
public int getPositionIncrementGap(String fieldName)
{
return 0;
}
}
String content = "...";
StringReader reader = new StringReader(content);
Analyzer analyzer = new ....();
TokenStream ts = analyzer.tokenStream("",reader);
//開始分詞
Token t = null;
while ((t = ts.next()) != null){
System.out.println(t.termText());
}
分析器由兩部分組成。一部分是分詞器,被稱Tokenizer, 另一部分是過濾器,TokenFilter. 它們都繼承自TokenStream。一個分析器往由一個分詞器和多個過濾器組成。
public abstract class Tokenizer extends TokenStream {
/** The text source for this Tokenizer. */
protected Reader input;
/** Construct a tokenizer with null input. */
protected Tokenizer() {}
/** Construct a token stream processing the given input. */
protected Tokenizer(Reader input) {
this.input = input;
}
/** By default, closes the input Reader. */
public void close() throws IOException {
input.close();
}
}
public abstract class TokenFilter extends TokenStream {
/** The source of tokens for this filter. */
protected TokenStream input;
/** Construct a token stream filtering the given input. */
protected TokenFilter(TokenStream input) {
this.input = input;
}
/** Close the input TokenStream. */
public void close() throws IOException {
input.close();
}
}
StandardAnalyer的tokenStream方法,除了使用StatandTokenizer進行分詞外,還使用了3個Filtter:
- StandardFilter 標準過濾器,主要對切分出來的省略語(如He's的's),和以"."號分隔的縮略語進行處理。
- LowerCaseFilter 大小寫轉換器,將大寫轉為小寫
- StopFilter 忽略詞過濾器,構造其實例時,需傳入一個忽略詞集合。
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = new StandardTokenizer(reader);
result = new StandardFilter(result);
result = new LowerCaseFilter(result);
result = new StopFilter(result, stopSet);
return result;
}
stopSet在構造StandardAnalyer時指定,無構造參加時,使用默認的StopAnalyzer.ENGLISH_STOP_WORDS提供的過濾詞。
分享到:
相关推荐
### Lucene3源码分析知识点概述 #### 一、全文检索的基本原理 ##### 1. 总论 全文检索系统是一种高效的信息检索技术,能够帮助用户在海量文档中快速找到包含特定关键词的信息。Lucene是Java领域内最受欢迎的全文...
**正文** Lucene是一个强大的全文搜索引擎库,由Apache软件基金会开发并维护。...通过理解Lucene的工作原理,掌握查询分析器的使用,以及灵活地调整和优化,可以在各种项目中实现强大的搜索体验。
Lucene即全文检索。做全文检索功能时,可能要用到的最新jar包,希望对你们有用。
总体来说,文章提出了一种融合潜在语义分析、贝叶斯分类和关联规则采掘的BBS文档鉴别方法,通过自然语言处理技术抽取典型短语,利用LSA减少同义词的影响,再通过关联规则采掘提高短语独立性,最后由贝叶斯分类器完成...
**Lucene索引器实例详解** Lucene是一个高性能、全文本搜索库,由Apache...在实际项目中,可以根据需求选择合适的存储(如硬盘目录或分布式存储)、优化分析器配置、处理大量文档的批量索引以及实现复杂的查询逻辑。
我们需要定义一个Analyzer(分析器)来处理文本,如使用StandardAnalyzer进行英文分词。然后,使用Directory(目录)对象(如FSDirectory)指定存储索引的位置,最后使用IndexWriter创建索引。例如: ```csharp ...
**标题:“Lucene实现全文检索”** 在信息技术领域,全文检索是一种从大量文本数据中查找相关信息的关键技术。Apache Lucene是Java开发的一款开源全文搜索引擎库,它为开发者提供了构建高效、可扩展的搜索功能的...
为了高效地处理和检索存储的词项(term),Lucene使用了FST(有限状态转换器,Finite State Transducer)这一核心算法构建内存索引。FST算法不仅可以用于快速检索term信息存储的位置,而且还支持判断一个term是否...
分词是关键步骤,它将文本分解为可搜索的单元,通常由词汇分析器(Analyzer)完成,如标准分词器(StandardAnalyzer)。 WebMagic则扮演了数据获取的角色。它提供了配置简单、可扩展的网页抓取功能。我们可以定义...
- **模糊搜索**:支持部分匹配或同义词搜索,可以通过设置查询分析器的同义词扩展或使用模糊查询。 - **排序与评分**:根据相关性(如TF-IDF)对结果进行排序,可以自定义评分函数。 - **过滤与聚合**:通过Filter和...
《Lucene原理与代码分析》深入探讨了Lucene——一款高性能、全功能的文本搜索引擎库——的核心机制与实现细节。本书不仅提供了理论上的全面解析,还辅以丰富的代码实例,帮助读者从源码层面理解Lucene的工作流程。...
`Lucene.Net.Analysis.China.dll`这个库很可能包含了实现HMM中文分析器的类和方法,为开发者提供了开箱即用的中文分词功能。 `Lucene.Net.dll`是Lucene.Net的核心库,包含了搜索引擎的主要功能,如索引创建、查询...
本篇文章将深入探讨如何基于Lucene 5.5版本构建一个同义词分析器,以及它对理解Lucene内部分析构造的重要性。 首先,我们要明白同义词分析器在文本处理中的作用。在信息检索系统中,同义词分析器能够识别并处理具有...
- **分词与分析**:内置多种分词器和分析器,用于处理不同语言和格式的文本。 **2.2 应用场景** - **文档管理**:对大量的文档进行索引,方便用户快速查找所需信息。 - **网站搜索**:为网站添加搜索功能,提高...
通过创建IndexWriter实例,开发者可以指定索引目录、分析器以及其它设置。 以下是一个简单的Lucene索引创建示例: ```java Directory indexDir = FSDirectory.open(new File(INDEXDIR)); IndexWriter writer = new...
源码分析方面,`FuzzyQuery`类在Lucene的`org.apache.lucene.search`包下,其内部实现了模糊匹配的逻辑。`defaultMinSimilarity`和`defaultPrefixLength`是预设的默认值,可以根据实际应用的需求进行调整。此外,`...
- **分析器(Analyzer)**:Lucene.Net 使用分析器对输入的查询和索引字段进行分词,不同的分析器会有不同的分词规则。选择合适的分析器对于搜索性能和准确性至关重要。 - **性能优化**:考虑到效率,可以采用多线程...
- 初始化 Analyzer:选择适合的语言分析器,如中文使用 `SmartChineseAnalyzer`,处理不同语言的分词问题。 - 创建 Directory 对象:作为索引的存储位置,可以选择 RAMDirectory(内存)或 FSDirectory(磁盘)。 ...
本文将对Lucene的基本原理及其实现的代码进行分析。 首先,全文检索的基本原理包括索引的创建与搜索过程。在索引创建过程中,文档首先经过分词组件Tokenizer拆分成词元Token,然后经过语言处理组件...
《Lucene原理与代码分析》深入探讨了几乎最新版本的Lucene的工作机制和代码实现细节,为理解全文搜索引擎的核心技术提供了宝贵的资源。以下是对该文件关键知识点的详细解析: ### 全文检索的基本原理 #### 总论 ...