lucene python_对Lucene的总结

一:建立索引和读取索引的过程如下图:

dd6362acebfcb58c26b6901faf4d91ba.png

41771c98c285fc54c761d2202bf6d9fe.png

二:索引在索引库中的存放形式如下图:

883ac8e81fb5d93d1ef95d91668e2741.png

这是内容库                                                                              这是目录库

IndexWriter按加入的顺序为Document指定一个递增的id(从0开始),称为文档id。反向索引中存储的是这个id,文档存储中正向索引也是这个id。 业务数据的主键id只是文档的一个字段。

为从原数据中拿完整数据去展示,一个Document应该包含一个或多个存储字段来唯一标识一条原数据。

三:创建索引以及存储文档的域时的规则如下:

创建好Document后,需要给Document添加Field,不同的Field有不同索引、分词和存储规则。

1:什么样的域需要被存储?

查询时,需要从Document中获取的内容对应的域都应该被存储。

2:什么样的域需要被索引?

要被搜索的域需要被索引。

3:什么样的域需要被分词?

在被搜索时,可能只会输入内容的一部分来查询的域需要被分词,例如:商品名称,商品介绍,文章内容等;相反,在查询时必须输入内容的全部来查询的域不能分词,例如:订单号,电话号码等。

四:使用lucene提高数据库中数据的查询实时度的示意图

20cd2e6f2c9b7ba5d0f3324a0dfb01c8.png

需要注意DB中的哪些数据需要用来创建索引、哪些数据需要存到索引库中的Document中,最终使用Document中能唯一标识DB中一条记录的字段来查询DB,获取记录的详情。

好文章参考链接:

疑问:

1:有关索引的选项中,还有更详细的设置:词频,位置,偏移量等,短语查询、临近查询,高亮显示等功能,和位置、偏移量的关系是什么?

2:IndexableFieldType 中的 docValuesType方法 就是让你来为需要排序、分组、聚合的字段指定如何为该字段创建文档->字段值的正向索引的。那么排序、分组、聚合、分类查询(面查询)的字段到底怎么使用??

3:默认情况下,查询结果的排序是按得分的大小从大到小排序的吗?得分到底是怎么计算的?

4:如果加上排序字段后,得分的排序是不是就不用了,直接用排序字段的排序?

5:lucene的分词器详解?

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值