当前位置: 首页 > 知识库问答 >
问题:

弹性搜索搜索用于在全文搜索期间使用独立搜索词对结果进行优先级排序

田嘉慕
2023-03-14

我有弹性搜索的问题。接缝搜索项在搜索结果中被隔离。

我们有一个使用弹性搜索索引的大型字幕数据库。然而,我们的搜索会在搜索词被隔离的地方对搜索结果进行优先排序。

Ie:搜索“吃”会产生:

哦,跳伞跳伞哦,我找到了疯狂饮食吃,吃传球,传球你们这些家伙真烂那是什么花样游泳

这是我的最后一晚,所以我们要像没有明天一样生活我想我只是想,吃点东西带上所有的食物,不管是麦当劳,还是冰淇淋。

我们需要INSTEAD对搜索结果进行优先排序,而不仅仅是在句子中找到search chTerm。

我需要帮助确定需要修复的内容-映射、过滤器、标记器等。

以下是我的设置:

static public function getSettings(){
    return [
        'number_of_shards' => 1,
        'number_of_replicas' => 1,
        'analysis' => [
            'filter' => [
                'filter_stemmer' => [
                    'type' => 'stemmer',
                    'language' => 'english'
                ]
            ],
            'analyzer' => [
                'text_analyzer' => [
                    'type' => 'custom',
                    "stopwords" => [],
                    'filter' => ['lowercase', 'filter_stemmer','stemmer'],
                    'tokenizer' => 'standard'
                ],
            ]
        ]
    ];
}

这是我的地图:

https://gist.github.com/firecentaur/d0e1e196f7fddbb4d02935bec5592009

这是我的搜寻

https://gist.github.com/firecentaur/5ac97bbd8eb02c406d6eecf867afc13c

我做错了什么?

共有1个答案

斜向文
2023-03-14

此行为必须由TL/IDF算法引起。如果一个查询与一个字段匹配,那么如果该字段中的单词很少,则更重要。如果您想让它适应您的用例,您可以使用function_score查询。这篇文章应该能帮助你找到解决方案。

如何提高弹性搜索函数得分中的字段长度范数?

 类似资料:
  • 我需要对以搜索词开头的搜索结果进行优先级排序。我用了“匹配短语前缀”。我用了“匹配短语前缀”。但它不起作用。 细节: > 质疑 结果

  • 假设我有三个指数:城市、博物馆和景点。 现在我正在查询一个术语的所有索引(),例如“维也纳” 作为结果,我得到: 维也纳:维也纳艺术博物馆 有没有办法优先考虑指数,这样我就可以得到第一个城市,而不是景点,最后是博物馆,就像这样: 维也纳 维也纳的Riesenrad 维也纳:维也纳艺术博物馆 维也纳:维也纳历史博物馆

  • 我在处理一个单词搜索问题。我正确地实现了dfs搜索,但在其他地方有一些琐碎的错误。

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 由于已经有很多关于连字符的问题,我已经尝试了以下解决方案: 使用字符筛选器:ElasticSearch-在名称中使用连字符进行搜索。 所以我做了这个映射: 所以char筛选器似乎没有在搜索字符串上执行?我该怎么做才能让它起作用?

  • 我正在使用批量请求执行弹性搜索完整索引。我在索引过程中遇到了一个问题,结果是空的。由于我正在完整索引期间删除索引,因此如何处理这种情况。 我已经完成了以下步骤: 删除索引 创建索引 创建映射 批量请求 索引属性和映射: } 我有大约7.5万份文件。 谢谢,Sree。