gpt4 book ai didi

elasticsearch - elasticsearch中的映射

转载 作者:行者123 更新时间:2023-12-03 01:53:29 25 4
gpt4 key购买 nike

早上好,在我的代码中,我无法搜索包含单独单词的数据。如果我搜索一个词都很好。我认为映射有问题。我用 postman 。当我输入 URL http://192.168.1.153:9200/sport_scouts/video/_mapping并使用方法 GET 我得到:

{
"sport_scouts": {
"mappings": {
"video": {
"properties": {
"hashtag": {
"type": "string"
},
"id": {
"type": "long"
},
"sharing_link": {
"type": "string"
},
"source": {
"type": "string"
},
"title": {
"type": "string"
},
"type": {
"type": "string"
},
"user_id": {
"type": "long"
},
"video_preview": {
"type": "string"
}
}
}
}
}
}

所有好的标题都有字符串类型,但是如果我搜索两个或更多的单词,我会得到大量的空白。我在 Trait 中的代码:
public function search($data) {

$this->client();

$params['body']['query']['filtered']['filter']['or'][]['term']['title'] = $data;
$search = $this->client->search($params)['hits']['hits'];
dump($search);
}

然后我在我的 Controller 中调用它。你能帮我解决这个问题吗?

最佳答案

无法找到您的索引数据的原因是索引期间的分析不匹配以及查询数据时严格的术语过滤器造成的。

使用您的映射配置,您正在使用默认分析哪个(除了许多其他操作)进行标记化。因此,您插入的每个多字数据都会在标点符号或空格处拆分。例如,如果您插入“some great sentence”,elasticsearch 会将以下术语映射到您的文档:“some”、“great”、“sentence”,而不是术语“great sentence”。因此,如果您对“好句子”或包含空格的原始值的任何其他部分进行术语过滤,您将不会得到任何结果。

请参阅 elasticsearch 文档,了解如何在不分析的情况下配置您的映射以进行索引 (https://www.elastic.co/guide/en/elasticsearch/guide/current/mapping-intro.html#_index_2) 或考虑执行 match query而不是 term filter在现有映射 (https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-match-query.html) 上。

请注意,如果您切换到 not_analyzed您将禁用许多出色的模糊全文查询功能。当然,您可以设置一个在不同字段中同时进行分析和未分析的映射。然后由您决定要查询哪个字段。

关于elasticsearch - elasticsearch中的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38452137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com