美文网首页
小记一些Lucene系搜索引擎的实用技巧

小记一些Lucene系搜索引擎的实用技巧

作者: Ombres | 来源:发表于2019-05-24 21:25 被阅读0次
  1. 排序是在获取文档docidset之后的操作,这时会通过id获取排序字段的docvalues。对于需要排序,分组的字段,尽量使用启用docvalues来加速排序,而且docvalues是建立在磁盘上的,使用的是文件系统的缓存,并不会占用jvm的内存,能合理利用计算机的资源。
  2. 请尽量使用数值类型的字段进行排序。
  3. 对于store和docvalues,虽然两者都能存储字段的值,但是我这里强烈建议,尽量不要对只需要存储的字段用docvalues来进行存储。因为docvalues中设计了几种不同的数据结构,对于字符串类型的docvalues,在lucene的底层的使用中,会有一个originalmap来做值和文档的映射,如果docvalues中的值特别多,尤其是绝大多数都不重复的情况下,重建这个map的性能消耗特别大。而且docvalues是面向列的,store本质还是行的。所以结合上述,从使用的角度去考虑,在存储需求的情况下请尽量使用store。
  4. 如果有些功能需要用到级联的查询,可以自己写一个相应规则的分词器,以满足不同规则的搜索需求。比如有时候需要省市区县的级联查询,这样呢,我们可以定义好一种数据结构来进行标记,可以用前两位表示省级地区,比如01代表北京,02代表河北,0201代表河北石家庄市,020101代表石家庄市新华区,这样的话我们就能能按照这样的规则进行分词,将020101拆成三个部分02,0201,020101这样在索引中就会索引三个term,每个级别的term都能查询出相应的结果,也不需要在搜索的时候进行更多的操作。
  5. 不要把Lucene及其衍生引擎作为一个实时的存储数据库使用。
  6. 索引文件是不可变的,只能合并。
  7. 删除文档时只是标记为删除,只有合并段的时候才会真正的删除。所以更新频繁的情况下,可能占用更多的磁盘空间。

相关文章

  • 小记一些Lucene系搜索引擎的实用技巧

    排序是在获取文档docidset之后的操作,这时会通过id获取排序字段的docvalues。对于需要排序,分组的字...

  • Elasticsearch routing功能

    Elasticsearch是一个搭建在Lucene搜索引擎库基础之上的搜索服务平台。它在单机的Lucene搜索引擎...

  • Elasticsearch 入门(一)

    零、 Basic Concept Elasticsearch 是基于Lucene 的搜索引擎。Lucene 是一个...

  • ES简介

    ES是什么 基于 Lucene 的搜索引擎,Lucene 被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库...

  • ES 分布式搜索入门

    1 主流分布式搜索引擎 1.1 Lucene Lucense官网地址: http://lucene.apache....

  • Elasticsearch实战 简介

    ES底层使用Lucene,Lucene是个高性能的搜索引擎,默认情况下会将所有的数据全部进行索引。Lucene使用...

  • ElasticSearch原理

    es的索引搜索是以lucene为底层的,但是lucene是没有实现分布式,lucene提供了核心的索引和搜索引擎,...

  • Lucene入门

    参考 Lucene学习总结之一:全文检索的基本原理Lucene就是这么简单Lucene思维导图,让搜索引擎不再难懂...

  • Lucene7.2.1系列(三)查询及高亮

    系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系...

  • Lucene7.2.1系列(一)快速入门

    系列文章: Lucene系列(一)快速入门 Lucene系列(二)luke使用及索引文档的基本操作 Lucene系...

网友评论

      本文标题:小记一些Lucene系搜索引擎的实用技巧

      本文链接:https://www.haomeiwen.com/subject/ylfozqtx.html