python - 如何使用 elasticsearch 获取热门复合搜索词?

标签 python elasticsearch

我需要从 elasticsearch 中获取热门搜索词。我们正在使用 elasticsearch 提供的重要术语功能,但此功能只能获取热门的单个单词搜索术语。相反,我们需要进行多词搜索。

目前在 elasticsearch 中有这样做的方法吗?

以下是我们正在使用的相关查询:

GET /mentions/_search
{
    "size": 0, 
    "query": {
        "match": {
            "snippet": {
                "query": "#Hashtag"
            }
        }
    },
   "aggs": {
        "trends": {
          "significant_terms": {
            "field": "snippet",
            "size": 1000
          }
        }
      }
}

最佳答案

常见的短语问题没有“神奇”的解决方案,

不过,我觉得处理此问题的最佳方法是使用 N-grams概念。

基本上不是为单个单词索引文本(因为顶级术语聚合搜索仅限于索引术语),如果您对如何操作有特定的想法,则创建一个为您量身定制的新分析器,或者创建一个使用Common gram token filter我觉得这对你很有用,因为 elasticsearch 开发人员很聪明(大概),他们的解决方案可能比你或我精心设计的 haSTLey 更有效。

请注意,我不确定您的规模是多少,但此解决方案将使用更多磁盘空间并可能影响其他查询效率。

关于python - 如何使用 elasticsearch 获取热门复合搜索词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55790633/

相关文章:

python - Pandas:从元组生成器创建系列

elasticsearch - Elasticsearch:在脚本中访问嵌套文档属性

elasticsearch - 在ElasticSearch中为文档建立索引时如何重命名字段名称

java - 在ElasticSearch 7.4 java客户端中的geoShapeQuery中使用geojson多边形

elasticsearch - Elasticsearch中的单独索引或使用类型字段

python - 哈希计算与桶演练

python - 只有 for 循环的最后一次迭代存储在 python 中二维数组的每个索引处

python - Cassandra 和 Django

hadoop - 写elasticsearch时Spark不支持arraylist吗?

python - 为什么我们在python中的每个方法都需要对应的类函数?