5.1 Filed的Cache
有时,存在这样的需求:快速的访问每个Document的Field,但是Lucene只是做了反向索引,因此这种正向索引非常耗时。
Stored fields是一种解决方法,但是也很慢,特别当量大的时候,占用很多内存。
Field的Cache能很好地解决这个问题。
要求
Document必须只有一个Token!
用法
float[] weights = FieldCache.DEFAULT.getFloats(reader, “[......]
5.1 Filed的Cache
有时,存在这样的需求:快速的访问每个Document的Field,但是Lucene只是做了反向索引,因此这种正向索引非常耗时。
Stored fields是一种解决方法,但是也很慢,特别当量大的时候,占用很多内存。
Field的Cache能很好地解决这个问题。
要求
Document必须只有一个Token!
用法
float[] weights = FieldCache.DEFAULT.getFloats(reader, “[......]
简单来说,Analysis就是把field Text转化成基本的Term的形式。
通过分词,将Text转化为Token,Token+对应的Field即为Term。
分词的处理包括:萃取、丢弃标点、移除发音、小写、移除常用单词、去除变形(去掉过去时等)等。
本章将介绍如何使用内置的分词器,以及如何根据语言、环境等特点创建自己的分词器。
4.1 使用Analysis
分词用于所有需要将Text转化成Term的场合,在Lucene中主要有两个:
1、Index(索引)[......]
主要的类
IndexSearcher:搜索的主类。
Query(及具体子类):被传入IndexSearcher的search方法,用于逻辑上的搜索。
QueryParser:将人工输入的查询字符串转化成Query对象。
TopDocs:存储着得分最高的那些文档,由IndexSearcher的search方法返回。
ScoreDoc:TopDocs中的每一个文档,他们只保留着Document的引用。
3.1 实现简单的索引功能
可以通过符合Lucene的字符串或者[......]
2.1 从概念理解Lucene的Index(索引)文档模型
Lucene主要有两种文档模型:Document和Field,一个Document可能包含若干个Field。
每一个Field有不同的策略:
1.被索引 or not,将该字段(Field)经过分析(Analyisi)后,加入索引中,并不是原文。
2.如果被索引,可选择是否保存“term vector”(向量),用于相似检索。
3.可选择是否存储(store),将原文直接拷贝,不做索引,用于检索后的取出。[......]