diff --git a/pyeqs/queryset.py b/pyeqs/queryset.py index 368d073..ad7de8f 100644 --- a/pyeqs/queryset.py +++ b/pyeqs/queryset.py @@ -20,6 +20,7 @@ def __init__(self, host, query=None, index=''): self._wrappers = [] self._post_query_actions = [] self._count = None + self._max_score = None self._conn = None self._finalized_query = None self._aggregations = None @@ -70,6 +71,9 @@ def post_query_actions(self, action): def count(self): return self._count + def max_score(self): + return self._max_score + def aggregations(self): return self._aggregations @@ -138,11 +142,15 @@ def _search(self, start, end): pagination_kwargs = self._get_pagination_kwargs(start, end) raw_results = conn.search(index=self._index, body=self._query, **pagination_kwargs) self._count = self._get_result_count(raw_results) + self._max_score = self._get_max_score(raw_results) return raw_results def _get_result_count(self, results): return int(results["hits"]["total"]) + def _get_max_score(self, results): + return results.get("hits", {}).get("max_score") + def _get_pagination_kwargs(self, start, end): size = end - start kwargs = { diff --git a/tests/functional/test_queryset.py b/tests/functional/test_queryset.py index a337634..b16da50 100644 --- a/tests/functional/test_queryset.py +++ b/tests/functional/test_queryset.py @@ -258,6 +258,7 @@ def test_search_with_iterator(context): len(t).should.equal(5) t.count().should.equal(5) + t.max_score().should_not.be(None) @scenario(prepare_data, cleanup_data) diff --git a/tests/unit/test_queryset.py b/tests/unit/test_queryset.py index 2deba9b..261732c 100644 --- a/tests/unit/test_queryset.py +++ b/tests/unit/test_queryset.py @@ -504,6 +504,17 @@ def test_queryset_count(): t.count().should.equal(None) +def test_queryset_max_score(): + """ + Get QuerySet Max Score + """ + # When I create a query block + t = QuerySet("foobar") + + # Then I get an appropriate max score + t.max_score().should.equal(None) + + def test_queryset_string(): """ Create QuerySet with String query @@ -641,6 +652,7 @@ def test_queryset_getitem_with_wrapper(): results = t[0:1] len(results).should.equal(1) t.count().should.equal(1) + t.max_score().should.equal(10) int(results[0]).should.equal(1)