diff --git a/core/db/elastic.py b/core/db/elastic.py index c77da32..002fe35 100644 --- a/core/db/elastic.py +++ b/core/db/elastic.py @@ -602,24 +602,28 @@ class ElasticsearchBackend(StorageBackend): if isinstance(sentiment_r, dict): return sentiment_r if sentiment_r: + if rule_object is not None: + sentiment_index = "meta.aggs.avg_sentiment.value" + else: + sentiment_index = "sentiment" sentiment_method, sentiment = sentiment_r - range_query_compare = {"range": {"sentiment": {}}} + range_query_compare = {"range": {sentiment_index: {}}} range_query_precise = { "match": { - "sentiment": None, + sentiment_index: None, } } if sentiment_method == "below": - range_query_compare["range"]["sentiment"]["lt"] = sentiment + range_query_compare["range"][sentiment_index]["lt"] = sentiment add_top.append(range_query_compare) elif sentiment_method == "above": - range_query_compare["range"]["sentiment"]["gt"] = sentiment + range_query_compare["range"][sentiment_index]["gt"] = sentiment add_top.append(range_query_compare) elif sentiment_method == "exact": - range_query_precise["match"]["sentiment"] = sentiment + range_query_precise["match"][sentiment_index] = sentiment add_top.append(range_query_precise) elif sentiment_method == "nonzero": - range_query_precise["match"]["sentiment"] = 0 + range_query_precise["match"][sentiment_index] = 0 add_top_negative.append(range_query_precise) # Add in the additional information we already populated diff --git a/core/views/ui/drilldown.py b/core/views/ui/drilldown.py index 187a3b8..0e3d374 100644 --- a/core/views/ui/drilldown.py +++ b/core/views/ui/drilldown.py @@ -81,15 +81,21 @@ def make_graph(results): graph = [] for index, item in enumerate(results): date = str(index) + sentiment = None + if "meta" in item: + if "aggs" in item["meta"]: + if "avg_sentiment" in item["meta"]["aggs"]: + sentiment = item["meta"]["aggs"]["avg_sentiment"]["value"] + else: + if "sentiment" in item: + sentiment = item["sentiment"] graph.append( { - "text": item.get("words_noun", None) - or item.get("msg", None) - or item.get("id"), + "text": item.get("msg", None) or item.get("id"), "nick": item.get("nick", None), "channel": item.get("channel", None), "net": item.get("net", None), - "value": item.get("sentiment", None) or None, + "value": sentiment, "date": date, } )