Use the sentiment aggregation value if present

master
Mark Veidemanis 1 year ago
parent d8cb3a263b
commit fd47a3ddc8
Signed by: m
GPG Key ID: 5ACFCEED46C0904F

@ -602,24 +602,28 @@ class ElasticsearchBackend(StorageBackend):
if isinstance(sentiment_r, dict): if isinstance(sentiment_r, dict):
return sentiment_r return sentiment_r
if 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 sentiment_method, sentiment = sentiment_r
range_query_compare = {"range": {"sentiment": {}}} range_query_compare = {"range": {sentiment_index: {}}}
range_query_precise = { range_query_precise = {
"match": { "match": {
"sentiment": None, sentiment_index: None,
} }
} }
if sentiment_method == "below": 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) add_top.append(range_query_compare)
elif sentiment_method == "above": 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) add_top.append(range_query_compare)
elif sentiment_method == "exact": elif sentiment_method == "exact":
range_query_precise["match"]["sentiment"] = sentiment range_query_precise["match"][sentiment_index] = sentiment
add_top.append(range_query_precise) add_top.append(range_query_precise)
elif sentiment_method == "nonzero": 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_top_negative.append(range_query_precise)
# Add in the additional information we already populated # Add in the additional information we already populated

@ -81,15 +81,21 @@ def make_graph(results):
graph = [] graph = []
for index, item in enumerate(results): for index, item in enumerate(results):
date = str(index) 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( graph.append(
{ {
"text": item.get("words_noun", None) "text": item.get("msg", None) or item.get("id"),
or item.get("msg", None)
or item.get("id"),
"nick": item.get("nick", None), "nick": item.get("nick", None),
"channel": item.get("channel", None), "channel": item.get("channel", None),
"net": item.get("net", None), "net": item.get("net", None),
"value": item.get("sentiment", None) or None, "value": sentiment,
"date": date, "date": date,
} }
) )

Loading…
Cancel
Save