diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index e6088681..79164199 100644 --- a/.code-samples.meilisearch.yaml +++ b/.code-samples.meilisearch.yaml @@ -372,6 +372,10 @@ search_parameter_guide_attributes_to_search_on_1: |- client.index('movies').search('adventure', { 'attributesToSearchOn': ['overview'] }) +distinct_attribute_guide_filterable_1: |- + client.index('products').update_filterable_attributes(['product_id', 'sku', 'url']) +distinct_attribute_guide_distinct_parameter_1: |- + client.index('products').search('white shirt', { distinct: 'sku' }) add_movies_json_1: |- import json diff --git a/tests/index/test_index_search_meilisearch.py b/tests/index/test_index_search_meilisearch.py index 35185276..e41415d1 100644 --- a/tests/index/test_index_search_meilisearch.py +++ b/tests/index/test_index_search_meilisearch.py @@ -1,5 +1,7 @@ # pylint: disable=invalid-name +from collections import Counter + import pytest @@ -506,3 +508,13 @@ def test_vector_search(index_with_documents_and_vectors): "", opt_params={"vector": [0.1, 0.2], "hybrid": {"semanticRatio": 1.0}} ) assert len(response["hits"]) > 0 + + +def test_search_distinct(index_with_documents): + index_with_documents().update_filterable_attributes(["genre"]) + response = index_with_documents().search("with", {"distinct": "genre"}) + genres = dict(Counter([x.get("genre") for x in response["hits"]])) + assert isinstance(response, dict) + assert len(response["hits"]) == 11 + assert genres == {None: 9, "action": 1, "Sci Fi": 1} + assert response["hits"][0]["id"] == "399579"