• solr查询score机制


    首先,solr使用的是默认的评分机制,要搞明白lucene默认评分机制,需要首先了解一下lucene的查询对象。

    1、termquery

    2、boolean query

    3、rangequery

    其中最重要的是termquery。是lucene的最基本的原子查询。每个查询最后内部都转化为一个个的原子查询。

    example:

    TermQuery term = new TermQuery("text", "test");

    TermQuery term = new TermQuery("title", "test");

    记住,term query是针对指定域进行查询的。记住这一点有利于理解lengthNorm()

    另外,需要明确一点,lucene会先用bool模型来拿到所有符合条件的document,再将q转化为多个should拼接的termquery去和符合条件的doc进行相似度计算。

    lucene的打分公式如下:

    score(q,d) =  queryNorm(q)  · coord(q,d)  · ∑ (  tf(t in d)  · idf(t)²  · t.getBoost()  · norm(t,d) ) (t in q) 

    其中最后一部分求和解释一下:(是对每个termquery,计算其得分最后累加)

    tf:对指定域的temquery,在dcoument中出现的次数。

    idf:是term在所有文档出现的次数

    t.getboost():对每个termquery都可以赋予一个boost

    norm:d.getboost()*f.getboost()*lengthNorm(f)其中f是term指定的域

    下面是简单获取score。注:条件q千万不要带默认的条件*:*,如果是*:*那么相当于条件都一样,score全为1.0。

  • 相关阅读:
    java 数组
    数组(二)
    JVM内存分配策略
    JVM垃圾收集算法
    LINUX 查看硬件配置命令
    遗传算法
    svn简单使用
    Several concepts in Data Mining
    JVM判断对象存活的算法
    JVM运行时数据区
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/15599560.html
Copyright © 2020-2023  润新知