• lucene 索引中文档的属性建立与不建立带来的影响总结



    索引中文档的属性建立与不建立带来的影响总结
     
    1.依据文档的某属性去查找索引的话,只会返回带有此属性(如果你对当前属性设定了条件,那么需要满足当前条件)的所有文档,没有建立此属性的文档是不会在返回结果文档中的,不管你的属性值类型是什么(string、date、long、int),结果都是一样的
    2.查找条件满足,排序不会有任何影响(如果排序的属性文档没有,lucene会按文档建立的先后顺序返回且只会按照这个顺序),只需注意说的第一点
    3.索引查找也不会有任何影响,只需注意说的第一点
    4.数量查找条件如果满足,绝对正确,但如果是说的第一点的话,那就有问题了
    5.如果做数据统一整合的话,建议没有属性的填默认属性,牺牲点微小的存储空间换来正确的查找结果
     
     
    理论看不懂?举个例子你就懂了
     
    需求:
    建立3条数据的索引,每条数据包含weibotime(date)、forwardtims(long)、replytimes(int)等属性
     
    数据建立索引后,变成3个文档:文档A、文档B、文档C
              weibotime(date)、forwardtims(long)、replytimes(int)
    文档A:     有                          有                         有
    文档B:     无                          无                         有
    文档C:     无                          无                         有
     
     
    操作:
         Q:查找weibotime并且降序排列
         A:返回有weibotime属性的文档,并且结果顺序是降序的,显示当前索引里只有文档A
     
         Q:查找replytimes,weibotime降序排列
         A:返回当前3文档,并且结果顺序显示是:文档A、文档B、文档C

         Q:查找replytimes,weibotime升序排列
         A:返回当前3文档,并且结果顺序显示是:文档B、文档C、文档A,看到这里你可能会觉得奇怪,文档B、C不都没有属性和值吗,为什么B一定排在C前面?这是lucene实现的,查找的属性有,但操作的属性如排序操作weibotime属性,但两个文档的属性是没有的,那么文档会按建立的先后顺序返回,不管你是升序或者是降序,结果都是一样的
  • 相关阅读:
    P1967 货车运输【最大生成树+倍增LCA】!!!
    P1991 无线通讯网【kruskal】
    P2872 [USACO07DEC]Building Roads S【kruskal】
    最小生成树
    树的直径
    树的重心
    今日英语单词小结
    项目生命周期
    反射reflect(框架的基石),动态导入小技巧 | 元类 | 单例设计模式
    OOP的三大特征之多态 | 面向对象高级知识,内置魔法函数,点语法和[ ]取值的实现,运算符重载,迭代器协议,上下文管理
  • 原文地址:https://www.cnblogs.com/svennee/p/4080650.html
Copyright © 2020-2023  润新知