Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elasticsearch映射配置文件boost字段_Search_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Search,elasticsearch" /> elasticsearch,Search,elasticsearch" />

Elasticsearch映射配置文件boost字段

Elasticsearch映射配置文件boost字段,search,elasticsearch,Search,elasticsearch,我是搜索新手,在解释地图中有关增强字段的文档时遇到困难 我想实现一个简单的提升,其中一些文章的标题比与文章相关联的标签更重要 下面是我在config/[index\u name]/[some\u name]中放置的配置的一次尝试 { "[type]": { "properties": { "_boost": { "name": "title", "null_value": 2.0

我是搜索新手,在解释地图中有关增强字段的文档时遇到困难

我想实现一个简单的提升,其中一些文章的标题比与文章相关联的标签更重要

下面是我在config/[index\u name]/[some\u name]中放置的配置的一次尝试

{
    "[type]": {
        "properties": {
            "_boost": {
                "name": "title",
                "null_value": 2.0
            }
            "title": {
                "type": "string"
            }
        }
    }
}
我可以看出文件正在读取,因为以前尝试读取此文件时出现错误消息。我还一直在删除索引,并在尝试之间重新创建它,以便它将使用此映射

这样行吗?它没有给出任何错误消息,但我无法判断_search或get映射API调用的输出是否有任何效果

以下是_映射调用的结果:

{
    "[type]" : {
        "properties" : {
            "title" : {
                "type" : "string"
            }
            "tags": {
                "type" : "string"
            }
        }
    }
}

请看中的示例

boost字段映射(应用于根对象)允许定义 一个boost字段映射,其内容将控制boost级别 文件的内容

下面的映射定义了一个名为
\u boost
的字段。如果索引的JSON文档中存在
\u boost
字段本身,则其值将控制索引文档的boost级别

{
    "tweet" : {
        "_boost" : {"name" : "_boost", "null_value" : 1.0}
    }
}

没有什么特别的,这个例子只是告诉弹性搜索来考虑<代码>“Booxfield”,当不存在时,给它一个默认的< <代码> 1 >代码>值。但是您正在为特定文档定义一个boost:这意味着当文档与查询匹配时,它的分数将根据您应用于查询的

\u boost
字段映射进行提升。这与场上的助推无关

在映射中,您说的是
标题
字段的内容应该用作
\u boost
,您给出的默认值为
2.0

"_boost": {
    "name": "title",
    "null_value": 2.0
}
这是没有意义的,因为标题包含文本,我想这也不是你想要的

标题
字段中,有不同的方法来提高匹配的重要性

据我从文档中了解,您可以在映射中这样做:

{
    "[type]" : {
        "properties" : {
            "title" : {
                "type" : "string",
                "boost" : 2.0
            }
            "tags": {
                "type" : "string"
            }
        }
    }
}
{
    "query_string" : {
        "fields" : ["title^2", "content"],
        "query" : "this AND that OR thus"
    }
}
"should" : [
    {
        "term" : { "title" : "your query", "boost" : 2.0 }
    }
]
老实说,我以前从未尝试过,也从未使用过,但lucene确实允许您在索引时指定每个字段的提升。该提升成为该领域规范的一部分,并在特定领域出现匹配时予以考虑。这就是你想要的

无论如何,我个人会在查询时而不是索引时进行增强,这样您就不需要修改映射,也可以在不重新索引的情况下更改权重。例如,您可以在不同的字段上使用和搜索,给它们不同的权重,如下所示:

{
    "[type]" : {
        "properties" : {
            "title" : {
                "type" : "string",
                "boost" : 2.0
            }
            "tags": {
                "type" : "string"
            }
        }
    }
}
{
    "query_string" : {
        "fields" : ["title^2", "content"],
        "query" : "this AND that OR thus"
    }
}
"should" : [
    {
        "term" : { "title" : "your query", "boost" : 2.0 }
    }
]
您需要考虑对查询字符串查询进行解析,并允许您使用

此外,您可以使用将不同的查询组合在一起。您可以使用一个包含例如a的should子句来表示标题匹配的提升,并对其进行如下特定提升:

{
    "[type]" : {
        "properties" : {
            "title" : {
                "type" : "string",
                "boost" : 2.0
            }
            "tags": {
                "type" : "string"
            }
        }
    }
}
{
    "query_string" : {
        "fields" : ["title^2", "content"],
        "query" : "this AND that OR thus"
    }
}
"should" : [
    {
        "term" : { "title" : "your query", "boost" : 2.0 }
    }
]

您可以使用任何您想要的查询作为should子句。如果你使用术语查询,你需要记住它不是经过分析的。

我被其他一些帖子所引导,所以我阅读了这些帖子,相信索引时间的增加会更有效。但是在查询中调整boost设置的能力可能是更好的方法。谢谢你的清晰解释。是的,如果你在查询时提高性能,你会付出一点性能代价。我更新了我关于提高场上水平的问题,因为我向上看了看,它确实如你们所期望的那样起作用。这只是一个选择你喜欢的时间的问题:索引时间还是查询时间。根据克林顿·戈姆利和扎卡里·唐的《Elasticsearch:权威指南》一书,不建议使用索引时间提升。例如,如果需要更改索引,则需要增加时间来重新索引所有文档。此外,如果具有索引时间提升的字段具有多个值,则提升将为每个值乘以自身,从而显著增加该字段的权重,这不是您通常想要的。