首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用elasticsearch获得排名靠前的复合搜索词?

如何使用elasticsearch获得排名靠前的复合搜索词?
EN

Stack Overflow用户
提问于 2019-04-22 15:19:59
回答 2查看 285关注 0票数 3

我需要从elasticsearch中获取最热门的搜索词。我们使用的是elasticsearch提供的重要词条功能,但该功能只能获取排名靠前的单字搜索词条。取而代之的是,我们需要对多个单词进行搜索。

目前有没有办法在elasticsearch中做到这一点?

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

代码语言:javascript
复制
GET /mentions/_search
{
    "size": 0, 
    "query": {
        "match": {
            "snippet": {
                "query": "#Hashtag"
            }
        }
    },
   "aggs": {
        "trends": {
          "significant_terms": {
            "field": "snippet",
            "size": 1000
          }
        }
      }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-27 03:54:24

常见短语问题没有“魔法”解决方案,

然而,我认为处理这个问题的最好方法是使用N-grams概念。

基本上,不是为你的文本建立单个单词的索引(因为顶级词汇聚合搜索仅限于索引词汇),要么创建一个新的分析器,如果你有具体的想法如何做的话,它是为你量身定做的;或者使用Common gram token filter创建一个分析器,我觉得这对你很有用,因为elasticsearch开发人员很聪明(大概),他们的解决方案可能比你我匆忙制定的更有效。

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

票数 1
EN

Stack Overflow用户

发布于 2019-05-13 05:40:15

我同意Tom的回答,没有适用于所有用例的解决方案。Elasticsearch没有关于如何对搜索到的词条进行排序的概念,以便为您提供一个排名靠前的词条列表。

例如,如果你在Elasticsearch实例中存储Tweet,那么最热门的搜索词是不是点赞最多的?最多的转发?你是否使用了这两个指标的组合,以及这条推文是多久发布的?这真的取决于你的用例。

你可以通过频率来获得最热门的搜索词,但是你可能会包含像'and‘或者'the’这样不太有用的词。为了防止这种情况,你必须考虑在存储搜索短语时删除停用词,而不仅仅是在检索时(参见:elasticsearch stopwords)。Elasticsearch提供了一组开箱即用的语言分析器,提高了对文档语料库的搜索性能(参见:using elasticsearch language analyzers)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55790633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档