当Sorting, faceting时, 通过设置DocValues来保存记录域值的方式是非常高效的。
Solr通过倒排建立索引, 首先建立term list, 然后每个term对应一个document list。 这样
因为传统的Solr建立Index是通过倒排索引建立的Index, 首先建立term list, 然后每个term对应一个document list, 这样的结构使得查询能够非常快速, 因为terms在内存中有已经准备好的term-to-documentList.
对于其它的我们的搜索, 如sorting, faceting, 和highlighting, 倒排索引并不是非常有效。 比如对faceting来讲, 必须先得到在每一个document中的term组装成结果集, 再得到document IDs. 这些所有操作都是在内存中, 当数据量大的时候 , 会使速度减慢, 并且会占用宝贵的内存资源。
在Lucene4.0以后,DocValue 以面向列的存储方式被引用。这是以document-to-value mapping 的方式在index时被创建。 减轻了fieldCache的内存需求, 使faceting, sorting, grouping更加快速。
- 启动DocValues
<field name="manu_exact" type="string" indexed="false" stored="false" docValues="true" />
如果没有添加DocValues之前索引已经建好, 现在又需要DocValues则需要重新创建。
DocValues只有在特定的field types中起作用, 不同的filed type决定不同的Lucene docValue 类型。可用的Solr field 类型有:
- StrField and UUIDField.
- field is single-valued (i.e., multi-valued is false), Lucene will use the SORTED type.
- field is multi-valued, Lucene will use the SORTED_SET type.
- 以Trie开头的 numeric fields, date fields and EnumField.
- field is single-valued (i.e., multi-valued is false), Lucene will use the NUMERIC type.
- If the field is multi-valued, Lucene will use the SORTED_SET type.
相关推荐
DocValues 是一种用于存储字段值的数据结构,它能够显著提高排序和聚合操作的速度。文档中详细介绍了 DocValues 的特性和使用方法。 #### 无模式模式 无模式模式允许在索引文档时不预先定义模式,使得索引更加灵活...
“Doc Values”是Solr中的一个功能,它允许索引结构化数据,这部分在“Doc Values”章节中有详细介绍。 在“Schemaless Mode”部分,介绍了Solr的无模式(schemaless)模式,这种方式在不预先定义架构的情况下,...
SolrPost过滤器具有三个不同版本的基本 Solr 后置过滤器。 1_Basic - 每个 42 的倍数的 id 将留在结果集中2_Adjustable - 现在可以更改模数3_DocValues - 使用 DocValues 访问 id 字段
- Lucene 5.x引入了新的DocValues格式,提高了索引的压缩率和查询速度。同时,支持更强大的多字段搜索和聚合功能。 - Lucene 6.x进一步优化了内存使用,增强了查询性能,并提供了更丰富的分析器选项,如标准分析器...
5. Join操作:虽然Lucene本身不支持JOIN,但通过DocValues或ExternalFileSorter等技术,可以实现跨文档的相关联查询。 四、分布式搜索 1. Solr或Elasticsearch:这两个基于Lucene的高级框架提供了分布式搜索能力,...
6. **缓存(Caching)**: 为了提高搜索性能,Lucene 引入了多种缓存机制,如 DocValues 缓存、Filter 缓存等。 **应用场景** Lucene 应用于各种需要全文搜索的场合,如内容管理系统、知识库、论坛、电子商务网站、...
5. **高级话题**:涵盖复杂的数据结构如DocValues和Stored Fields,以及倒排索引的压缩技术。同时,也会讨论实时搜索、近实时搜索和分布式搜索场景下的解决方案。 6. **Lucene扩展与集成**:介绍如何在实际项目中...
7. **优化技巧**:理解FieldCache和DocValues对于性能的影响,合理使用 norms 和 term vectors,以及掌握如何调整缓存策略,都是提升Lucene性能的关键。 8. **实战经验**:实际项目中,你可能需要考虑如何设计适合...
此外,Lucene还提供了缓存机制以提高性能,比如字段值缓存和DocValues缓存。为了应对大数据量的索引,Lucene支持多线程索引和分布式搜索,例如通过Solr或Elasticsearch这样的分布式搜索引擎平台。 在实际应用中,...
- **倒排索引优化**: 如位图过滤(Bitset Filter)和DocValues,可以减少搜索过程中的I/O操作。 总结来说,Lucene是一个强大且灵活的全文搜索引擎库,其核心在于高效的索引和搜索机制。通过熟练掌握Lucene,开发者...
3. DocValues:存储文档的数值型或唯一标识字段,支持排序和过滤。 4. Norms:存储每个文档的长度规范化值,用于调整TF-IDF的得分。 5. postings:倒排列表,存储词项及其对应文档的编号。 五、高级特性 1. N-...
9. **内存缓存**:Lucene 使用 DocValues 和 FieldCache 功能来缓存某些字段的数据,提高搜索性能。4.0.0 版本对此进行了优化,增强了缓存的稳定性和效率。 10. **分布式搜索**:虽然 Lucene 本身不直接支持分布式...
- **DocValues**:用于存储字段的不可变值,如日期、分类标签等,提供高效的排序和过滤功能。 - **块级压缩**:改进了存储效率,降低了磁盘空间的占用。 3. **Lucene的使用** - **创建索引**:使用`IndexWriter`...
1. **缓存机制**:使用 TermVector 和 DocValues 可以缓存某些字段信息,加快搜索速度。 2. **多线程支持**:IndexWriter 支持多线程写入,提高索引构建效率。 3. **近实时搜索**:通过 NRT(Near Real Time)管理...