From 3bba555e8c434fc63065e5c7455e89397987f0e5 Mon Sep 17 00:00:00 2001 From: Adam Weidner Date: Sun, 18 Aug 2024 19:35:51 -0400 Subject: [PATCH 1/5] translates distinct code samples --- .code-samples.meilisearch.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index e6088681..0360426e 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').updateFilterableAttributes(['product_id', 'sku', 'url']) +distinct_attribute_guide_distinct_parameter_1: |- + client.index('products').search('white shirt', { distinct: 'sku' }) add_movies_json_1: |- import json From b5a2eea3a421e426b1cb578e91abaae5434eb423 Mon Sep 17 00:00:00 2001 From: Adam Weidner Date: Sun, 18 Aug 2024 19:42:59 -0400 Subject: [PATCH 2/5] adds integration test case for distinct --- .code-samples.meilisearch.yaml | 2 +- tests/index/test_index_search_meilisearch.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/.code-samples.meilisearch.yaml b/.code-samples.meilisearch.yaml index 0360426e..79164199 100644 --- a/.code-samples.meilisearch.yaml +++ b/.code-samples.meilisearch.yaml @@ -373,7 +373,7 @@ search_parameter_guide_attributes_to_search_on_1: |- 'attributesToSearchOn': ['overview'] }) distinct_attribute_guide_filterable_1: |- - client.index('products').updateFilterableAttributes(['product_id', 'sku', 'url']) + 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: |- diff --git a/tests/index/test_index_search_meilisearch.py b/tests/index/test_index_search_meilisearch.py index 35185276..f66a8381 100644 --- a/tests/index/test_index_search_meilisearch.py +++ b/tests/index/test_index_search_meilisearch.py @@ -506,3 +506,11 @@ 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("How to train your dragin", {"distinct": "genre"}) + assert isinstance(response, dict) + assert len(response["hits"]) == 1 + assert response["hits"][0]["id"] == "166428" \ No newline at end of file From e01d5be5efddfa81a332a8ed7e586aef8e7b3975 Mon Sep 17 00:00:00 2001 From: Adam Weidner Date: Sun, 18 Aug 2024 19:44:35 -0400 Subject: [PATCH 3/5] formats and sorts imports --- tests/index/test_index_search_meilisearch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/index/test_index_search_meilisearch.py b/tests/index/test_index_search_meilisearch.py index f66a8381..925757ee 100644 --- a/tests/index/test_index_search_meilisearch.py +++ b/tests/index/test_index_search_meilisearch.py @@ -513,4 +513,4 @@ def test_search_distinct(index_with_documents): response = index_with_documents().search("How to train your dragin", {"distinct": "genre"}) assert isinstance(response, dict) assert len(response["hits"]) == 1 - assert response["hits"][0]["id"] == "166428" \ No newline at end of file + assert response["hits"][0]["id"] == "166428" From 60a28fd48752fe46c9e60ca6a5e72bb0775b9fd8 Mon Sep 17 00:00:00 2001 From: Adam Weidner Date: Mon, 19 Aug 2024 17:41:47 -0400 Subject: [PATCH 4/5] updates test case based on feedback --- tests/index/test_index_search_meilisearch.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/index/test_index_search_meilisearch.py b/tests/index/test_index_search_meilisearch.py index 925757ee..1eddb5eb 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 typing import Counter + import pytest @@ -510,7 +512,9 @@ def test_vector_search(index_with_documents_and_vectors): def test_search_distinct(index_with_documents): index_with_documents().update_filterable_attributes(["genre"]) - response = index_with_documents().search("How to train your dragin", {"distinct": "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"]) == 1 - assert response["hits"][0]["id"] == "166428" + assert len(response["hits"]) == 11 + assert genres == {None: 9, "action": 1, "Sci Fi": 1} + assert response["hits"][0]["id"] == "399579" From c92439bbff694af1b06a95a0e667485f1df230af Mon Sep 17 00:00:00 2001 From: Adam Weidner Date: Mon, 19 Aug 2024 21:07:41 -0400 Subject: [PATCH 5/5] Update tests/index/test_index_search_meilisearch.py Co-authored-by: Paul Sanders --- tests/index/test_index_search_meilisearch.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/index/test_index_search_meilisearch.py b/tests/index/test_index_search_meilisearch.py index 1eddb5eb..e41415d1 100644 --- a/tests/index/test_index_search_meilisearch.py +++ b/tests/index/test_index_search_meilisearch.py @@ -1,6 +1,6 @@ # pylint: disable=invalid-name -from typing import Counter +from collections import Counter import pytest