我需要從 elasticsearch 中獲取熱門搜索詞。我們正在使用 elasticsearch 提供的重要術語功能,但此功能只能獲取熱門單字搜索詞。相反,我們需要頂部的多詞搜索。目前有沒有辦法在彈性搜索中做到這一點?以下是我們正在使用的相關查詢:GET /mentions/_search{ "size": 0, "query": { "match": { "snippet": { "query": "#Hashtag" } } }, "aggs": { "trends": { "significant_terms": { "field": "snippet", "size": 1000 } } }}
2 回答

慕的地8271018
TA貢獻1796條經驗 獲得超4個贊
常用短語問題沒有“神奇”的解決方案,
然而,處理這個問題的最佳方法,我覺得是使用N-gram概念。
基本上不是為單個單詞索引您的文本(因為頂級術語聚合搜索僅限于索引術語)如果您對如何執行此操作有特定想法或使用通用克標記創建一個為您量身定制的新分析器我覺得過濾器對你很有用,因為彈性搜索開發人員很聰明(大概),他們的解決方案可能比你或我精心設計的更有效。
請注意,我不確定您的規模是多少,但此解決方案將使用更多磁盤空間并可能影響其他查詢效率。

繁花不似錦
TA貢獻1851條經驗 獲得超4個贊
我同意 Tom 的回答,因為沒有適用于所有用例的解決方案。Elasticsearch 不知道如何對搜索詞進行排序以便為您提供排名靠前的詞的列表。
例如,如果您在 Elasticsearch 實例中存儲推文,那么最熱門的搜索詞是最喜歡的詞嗎?轉發最多?您是否使用這兩個指標的組合以及最近發布推文的時間?這實際上取決于您的用例。
您可以按頻率獲得最熱門的搜索詞,但您可能會包含諸如“and”或“the”之類的詞,這些詞不是很有用。為了防止這種情況,您必須考慮在存儲搜索短語時刪除停用詞,而不僅僅是在檢索時(請參閱:elasticsearch stopwords)。Elasticsearch 提供了一組開箱即用的語言分析器,提高了文檔語料庫的搜索性能(請參閱:使用 elasticsearch 語言分析器)。
添加回答
舉報
0/150
提交
取消