Python 如何使用elasticsearch获取顶级复合搜索词?
我需要从elasticsearch中获取最热门的搜索词。我们正在使用elasticsearch提供的重要术语功能,但此功能只能获取顶级单词搜索术语。相反,我们需要搜索最热门的多词搜索 目前在elasticsearch中是否有这样做的方法 以下是我们正在使用的相关查询:Python 如何使用elasticsearch获取顶级复合搜索词?,python,
elasticsearch,Python,
elasticsearch,我需要从elasticsearch中获取最热门的搜索词。我们正在使用elasticsearch提供的重要术语功能,但此功能只能获取顶级单词搜索术语。相反,我们需要搜索最热门的多词搜索 目前在elasticsearch中是否有这样做的方法 以下是我们正在使用的相关查询: GET /mentions/_search { "size": 0, "query": { "match": { "snippet": {
GET /mentions/_search
{
"size": 0,
"query": {
"match": {
"snippet": {
"query": "#Hashtag"
}
}
},
"aggs": {
"trends": {
"significant_terms": {
"field": "snippet",
"size": 1000
}
}
}
}
普通短语问题没有“神奇”的解决方案 然而,我觉得处理这个问题的最佳方法是使用这个概念 基本上,不是为单个单词的文本编制索引(因为顶级术语聚合搜索仅限于索引术语),而是创建一个新的分析器,如果您有具体的想法,可以为您量身定做,或者创建一个我认为可以为您使用的分析器,因为elasticsearch开发人员很聪明(大概是这样的)他们的解决方案可能比你我草率制定的更有效
请注意,我不确定您的规模,但此解决方案将使用更多的磁盘空间,并可能影响其他查询的效率。我同意Tom的回答,因为没有任何解决方案适用于所有用例。Elasticsearch不知道如何对搜索到的词进行排序,以便为您提供顶级词的列表 例如,如果您正在Elasticsearch实例中存储推文,那么顶级搜索词是否是最受欢迎的?转发次数最多?您是否将这两个指标结合使用,以及推文的发布时间?这实际上取决于您的用例
你可以通过频率来获得最热门的搜索词,但可能你包含了像“and”或“the”这样的词,它们不是很有用。为了防止这种情况,你必须考虑在搜索短语的存储过程中移除停止词,而不仅仅是检索(参见:)。Elasticsearch提供了一套开箱即用的语言分析器,提高了文档语料库的搜索性能(请参见:)。您是否介意分享您的数据?具体来说,“平均”代码段字段是什么样子的?它是否有一定数量的词头?@tomslabbaert它包含推特的文本或新闻文章的内容。例子:爱上网站\无论你是否喜欢板球,请支持它在传递和平信息中所扮演的角色…