Elasticsearch学习笔记 - 09: _score(评分)

本文探讨了Elasticsearch中用于文档相关性排序的评分机制,主要涉及TF-IDF和BM25算法。TF-IDF考虑了词频和逆向文档频率,而BM25在此基础上加入了文档长度归一值的调整,降低了常用词的影响,提高了搜索精度。通过对Elasticsearch评分机制的理解,有助于优化搜索结果的相关性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Elasticsearch 默认是按照文档与查询的相关度(匹配度)的得分倒序返回结果的. 得分 (_score) 就越大, 表示相关性越高.

词频/逆向文档频率(TF/IDF)

当匹配到一组文档后,需要根据相关度排序这些文档,不是所有的文档都包含所有词,有些词比其他的词更重要。一个文档的相关度评分部分取决于每个查询词在文档中的 权重 。

词的权重由三个因素决定

词频

词在文档中出现的频度是多少? 频度越高,权重越高 。 5 次提到同一词的字段比只提到 1 次的更相关。词频的计算方式如下:

tf(t in d)=frequency 
词 t 在文档 d 的词频(tf)是该词在文档中出现次数的平方根
由于词频可能非常大,有时需要做一些衰减,可以使用开根号、log、ln
tf(t in d)=√frequency

如果不在意词在某个字段中出现的频次,而只在意是否出现过,则可以在字段映射中禁用词频统计: 

PUT /my_index
{
"mappings": {
  "doc": {
    "properties": {
      "text": {
        "type":"string",
        "index_options": "docs" 
    
### RAMROM的区别及其功能 #### 功能差异 RAM(随机存取存储器)用于暂时存储操作系统、应用程序以及当前正在使用的数据,使得CPU可以快速访问这些信息。当电源关闭时,RAM中的所有数据都会丢失[^1]。 相比之下,ROM(只读存储器)主要用于永久性地保存重要的控制程序,比如BIOS设置等基本输入输出系统的信息,在设备启动过程中起到至关重要的作用。即使机器断电,ROM内的内容也不会受到影响而保持不变[^2]。 #### 结构特点 从物理结构上看,RAM通常由动态(DRAM)或静态(SRAM)两种形式构成,前者依赖于电容器来维持位状态,后者则通过触发器电路实现更稳定但也较贵的解决方案;而ROM则是基于熔丝或者反熔丝技术制造而成,一旦编程完成便难以更改其中的内容[^3]。 #### 使用场景 在实际应用中,每当单片机或其他微控制器需要调用预置好的算法逻辑或是常量表之类的固定资源时就会去查询位于ROM里的相应部分,并把处理过程所需的各种中间变量暂存在速度更快但是易失性的RAM里边直到任务结束为止。 ```python # Python伪代码展示如何模拟RAMROM的行为 class StorageDevice: def __init__(self, is_volatile=True): self.is_volatile = is_volatile def read_data(self, address): pass def write_data(self, address, data): if not self.is_volatile and hasattr(self, 'write_protected'): raise Exception("Cannot modify ROM content.") ... ram_device = StorageDevice(is_volatile=True) rom_device = StorageDevice(is_volatile=False) try: rom_device.write_data(0x00FF, b'\xFF') # 尝试向ROM写入新值可能会失败并抛出异常 except Exception as e: print(e) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值