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。

  • 相关阅读:
    Flashback version/Transaction Query,FlashbackTable
    Flashback Query(函数示例)
    FlashbackQuery:SCN与timestamp示例
    Flashback Drop实例操作
    Flashback Recovery Area的设置与取消
    flashback database操作步骤
    Oracle-nomount/mount/open
    oracle开启/关闭归档模式
    Eclipse 设置代码风格
    Eclipse 打包Web项目
  • 原文地址:https://www.cnblogs.com/cuihongyu3503319/p/15599560.html
Copyright © 2011-2022 走看看