zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    Git
    linux下利用virtualenv搭建虚拟环境
    Session和Cookie
    Redis
    从零开始学Go之基本(二):包、函数声明与格式化输出
    从零开始学Go之HelloWorld
    C++ vector容器使用
    FIRST集和FOLLOW集的计算
    go编译错误:runnerw.exe:CreateProcess failed with error 216:
    Linux下vi编辑器常用命令
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/15599560.html
Copyright © 2011-2022 走看看