![](/img/trans.png)
[英]Elasticsearch: Search over most frequent matches / terms without TF or IDF adjustment
[英]ElasticSearch most-frequent terms over time
我們正在研究技術選擇,這些選擇將使我們能夠對數百萬個文檔進行最常見的術語查詢。 我們對早期版本的ES經驗很少,但絕不是專家。 通過閱讀ES文檔,我尚不清楚它是否可以做到這一點。
想象一下來自10,000個不同人群的數百萬條推文的數據集。 我們希望執行以下操作:
對於10,000個高音揚聲器中的每一個,在過去的一個小時,最后一天,去年,他們在Twitter上最常出現的前10個術語是什么?
同樣且類似地,如果每個推文記錄包含提到的主題標簽的數組,則為最常見的主題標簽計算相同的統計信息。
如果一種選擇是僅在最終用戶通過用戶界面要求時按需進行這些計算,那么這也是一種選擇。 我們只希望這些計算中的一小部分能夠實際使用。
可以在ES上以有效的方式完成此操作嗎? 您能否提供一個粗略的示例,以便我們知道如何相應地使用API? 謝謝
如果我正確理解您的要求,則希望獲得用戶的熱門詞匯
POST /tweets/tweet
{
"text": "We're researching technology",
"user": 1,
"hasttags": ["hastag", "hastag1"]
}
POST /tweets/tweet
{
"text": "We have a little experience with an older version of ES #hastag",
"user": 1,
"hasttags": ["hastag", "hastag2"]
}
POST /tweets/tweet
{
"text": "For each one of the 10,000 tweeters, what are the top-10 most #hastag",
"user": 2,
"hasttags": ["hastag", "hastag3"]
}
POST /tweets/_search
{
"size": 0,
"query": {
"terms": {
"user": [
"1"
]
}
},
"aggs": {
"users": {
"terms": {
"field": "user",
"size": 10
},
"aggs": {
"terms": {
"terms": {
"field": "text",
"size": 10
}
},
"hasttags": {
"terms": {
"field": "hasttags",
"size": 10
}
}
}
}
}
}
這是示例,因為這里的問題是它僅限於10個用戶,因為在ES 1.4中,沒有辦法進行聚合上的分頁。 另外,您還可以將大小指定為10,000,但是您需要嘗試查看它在實際數據和群集計算機上的工作方式,因為它將需要更多的內存。 我正在搜索引擎中建立最常用的搜索詞,其中我將1000設置為聚合,並且效果非常好。
待辦事項:尋找停用詞以排除諸如“ a”,“ in”之類的術語
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.