diff --git a/sdk/search/azure-search-documents/CHANGELOG.md b/sdk/search/azure-search-documents/CHANGELOG.md index 2f839b94b92e..874bf1cde56a 100644 --- a/sdk/search/azure-search-documents/CHANGELOG.md +++ b/sdk/search/azure-search-documents/CHANGELOG.md @@ -2,6 +2,9 @@ ## 11.2.0b4 (Unreleased) +**New features** + +- Added `create_from_file` for `SynonymMap` ## 11.2.0b3 (2021-05-11) diff --git a/sdk/search/azure-search-documents/azure/search/documents/indexes/models/_models.py b/sdk/search/azure-search-documents/azure/search/documents/indexes/models/_models.py index f80dbdc8f6ef..a48ac6dee0dc 100644 --- a/sdk/search/azure-search-documents/azure/search/documents/indexes/models/_models.py +++ b/sdk/search/azure-search-documents/azure/search/documents/indexes/models/_models.py @@ -403,7 +403,7 @@ class SynonymMap(msrest.serialization.Model): :vartype format: str :param synonyms: Required. A series of synonym rules in the specified synonym map format. The rules must be separated by newlines. - :type synonyms: str + :type synonyms: list[str] :param encryption_key: A description of an encryption key that you create in Azure Key Vault. This key is used to provide an additional level of encryption-at-rest for your data when you want full assurance that no one, not even Microsoft, can decrypt your data in Azure Cognitive @@ -463,6 +463,16 @@ def _from_generated(cls, synonym_map): e_tag=synonym_map.e_tag ) + @classmethod + def create_from_file(cls, name, file_path): + with open(file_path, "r") as f: + solr_format_synonyms = f.read() + synonyms = solr_format_synonyms.split("\n") + return cls( + name=name, + synonyms=synonyms + ) + class SearchIndexerDataSourceConnection(msrest.serialization.Model): """Represents a datasource connection definition, which can be used to configure an indexer. diff --git a/sdk/search/azure-search-documents/samples/async_samples/sample_synonym_map_operations_async.py b/sdk/search/azure-search-documents/samples/async_samples/sample_synonym_map_operations_async.py index 9ce962b1fdf1..677a8b9690b5 100644 --- a/sdk/search/azure-search-documents/samples/async_samples/sample_synonym_map_operations_async.py +++ b/sdk/search/azure-search-documents/samples/async_samples/sample_synonym_map_operations_async.py @@ -32,11 +32,11 @@ async def create_synonym_map(): # [START create_synonym_map_async] - solr_format_synonyms = "\n".join([ + synonyms = [ "USA, United States, United States of America", "Washington, Wash. => WA", - ]) - synonym_map = SynonymMap(name="test-syn-map", synonyms=solr_format_synonyms) + ] + synonym_map = SynonymMap(name="test-syn-map", synonyms=synonyms) result = await client.create_synonym_map(synonym_map) print("Create new Synonym Map 'test-syn-map succeeded") # [END create_synonym_map_async] diff --git a/sdk/search/azure-search-documents/samples/sample_synonym_map_operations.py b/sdk/search/azure-search-documents/samples/sample_synonym_map_operations.py index 607d56dadfe9..c390d2ec7625 100644 --- a/sdk/search/azure-search-documents/samples/sample_synonym_map_operations.py +++ b/sdk/search/azure-search-documents/samples/sample_synonym_map_operations.py @@ -31,11 +31,11 @@ def create_synonym_map(): # [START create_synonym_map] - solr_format_synonyms = "\n".join([ + synonyms = [ "USA, United States, United States of America", "Washington, Wash. => WA", - ]) - synonym_map = SynonymMap(name="test-syn-map", synonyms=solr_format_synonyms) + ] + synonym_map = SynonymMap(name="test-syn-map", synonyms=synonyms) result = client.create_synonym_map(synonym_map) print("Create new Synonym Map 'test-syn-map succeeded") # [END create_synonym_map] diff --git a/sdk/search/azure-search-documents/tests/synonym_map.txt b/sdk/search/azure-search-documents/tests/synonym_map.txt new file mode 100644 index 000000000000..96f535332c9a --- /dev/null +++ b/sdk/search/azure-search-documents/tests/synonym_map.txt @@ -0,0 +1,2 @@ +USA, United States, United States of America +Washington, Wash. => WA \ No newline at end of file diff --git a/sdk/search/azure-search-documents/tests/test_synonym_map.py b/sdk/search/azure-search-documents/tests/test_synonym_map.py new file mode 100644 index 000000000000..c47bd1fa2881 --- /dev/null +++ b/sdk/search/azure-search-documents/tests/test_synonym_map.py @@ -0,0 +1,14 @@ +# ------------------------------------ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT License. +# ------------------------------------ +from os.path import dirname, join, realpath +from azure.search.documents.indexes.models import SynonymMap + +def test_create_synonym_map_from_file(): + CWD = dirname(realpath(__file__)) + path = join(CWD, "synonym_map.txt") + synonym_map = SynonymMap.create_from_file('test', path) + assert len(synonym_map.synonyms) == 2 + assert synonym_map.synonyms[0] == 'USA, United States, United States of America' + assert synonym_map.synonyms[1] == 'Washington, Wash. => WA' \ No newline at end of file