def test_search_bad_argument(self): client = SearchClient("endpoint", "index name", CREDENTIAL) with pytest.raises(TypeError) as e: client.search(10) assert str( e) == "Expected a SuggestQuery for 'query', but got {}".format( repr(10))
def test_get_search_simple(self, api_key, endpoint, index_name, **kwargs): client = SearchClient(endpoint, index_name, AzureKeyCredential(api_key)) results = list(client.search(search_text="hotel")) assert len(results) == 7 results = list(client.search(search_text="motel")) assert len(results) == 2
def test_get_search_counts(self, api_key, endpoint, index_name, **kwargs): client = SearchClient(endpoint, index_name, AzureKeyCredential(api_key)) results = client.search(search_text="hotel") assert results.get_count() is None results = client.search(search_text="hotel", include_total_count=True) assert results.get_count() == 7
def test_get_search_coverage(self, api_key, endpoint, index_name, **kwargs): client = SearchClient(endpoint, index_name, AzureKeyCredential(api_key)) results = client.search(search_text="hotel") assert results.get_coverage() is None results = client.search(search_text="hotel", minimum_coverage=50.0) cov = results.get_coverage() assert isinstance(cov, float) assert cov >= 50.0
def search(rootdir, Query, index_name, endpoint, key, fnames, vertical): field_names = ['FileName', 'FilePath', 'Score'] # Create a client credential = AzureKeyCredential(key) client = SearchClient(endpoint=endpoint, index_name=index_name, credential=credential) results = client.search(search_text=Query) df = pd.read_csv('TrackerFiles/{}.csv'.format(vertical)) r = [] for result in results: if result['FileName'] in fnames: d = { 'FileName': result['FileName'], 'FilePath': result['FilePath'], 'Score': result['@search.score'] } r.append(d) if df.loc[df['FileName'] == str(result['FileName']), 'Intent'].isnull().any(): df.loc[df['FileName'] == str(result['FileName']), 'Intent'] = str(Query) else: df.loc[df['FileName'] == str(result['FileName']), 'Intent'] = df.loc[df['FileName'] == str(result['FileName']), 'Intent'] + "," + str(Query) df.to_csv('TrackerFiles/{}.csv'.format(vertical), index=False) with open(rootdir + 'result.csv', 'w') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=field_names) writer.writeheader() writer.writerows(r) return rootdir + 'result.csv'
def search_query(search_text, filter_by=None, sort_order=None): try: # Create a search client azure_credential = AzureKeyCredential(search_key) search_client = SearchClient(search_endpoint, search_index, azure_credential) # Submit search query results = search_client.search( search_text, search_mode="all", include_total_count=True, filter=filter_by, order_by=sort_order, facets=['metadata_author'], highlight_fields='merged_content-3,imageCaption-3', select= "url,metadata_storage_name,metadata_author,metadata_storage_size," "metadata_storage_last_modified,language,sentiment,merged_content," "keyphrases,locations,imageTags,imageCaption") return results except Exception as ex: raise ex
class SearchDocumentsTest(PerfStressTest): def __init__(self, arguments): super().__init__(arguments) api_key = self.get_from_env("AZURE_SEARCH_API_KEY") service_endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT") index_name = os.getenv("AZURE_SEARCH_INDEX_NAME") key = os.getenv("AZURE_SEARCH_API_KEY") self.service_client = SyncClient(service_endpoint, index_name, AzureKeyCredential(api_key)) self.async_service_client = AsyncClient(service_endpoint, index_name, AzureKeyCredential(api_key)) @staticmethod def add_arguments(parser): super(SearchDocumentsTest, SearchDocumentsTest).add_arguments(parser) parser.add_argument( '--num-documents', nargs='?', type=int, help='The number of results expect to be returned.', default=-1) async def global_setup(self): await super().global_setup() async def close(self): await self.async_service_client.close() await super().close() def run_sync(self): if self.args.num_documents == -1: results = len(self.service_client.search(search_text="luxury")) else: results = len( self.service_client.search(search_text="luxury", top=self.args.num_documents)) async def run_async(self): if self.args.num_documents == -1: results = await self.async_service_client.search( search_text="luxury") else: results = await self.async_service_client.search( search_text="luxury", top=self.args.num_documents) count = 0 async for result in results: count += count
def test_get_search_facets_none(self, api_key, endpoint, index_name, **kwargs): client = SearchClient(endpoint, index_name, AzureKeyCredential(api_key)) select = ("hotelName", "category", "description") results = client.search(search_text="WiFi", select=",".join(select)) assert results.get_facets() is None
def simple_text_query(): # [START simple_query] from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchClient search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) results = search_client.search(query="spa") print("Hotels containing 'spa' in the name (or other fields):") for result in results: print(" Name: {} (rating {})".format(result["HotelName"], result["Rating"]))
def test_get_count_reset_continuation_token(self, mock_search_post): client = SearchClient("endpoint", "index name", CREDENTIAL) result = client.search(search_text="search text") assert isinstance(result, ItemPaged) assert result._page_iterator_class is SearchPageIterator search_result = SearchDocumentsResult() search_result.results = [ SearchResult(additional_properties={"key": "val"}) ] mock_search_post.return_value = search_result result.__next__() result._first_page_iterator_instance.continuation_token = "fake token" result.get_count() assert not result._first_page_iterator_instance.continuation_token
def test_get_search_facets_result(self, api_key, endpoint, index_name, **kwargs): client = SearchClient( endpoint, index_name, AzureKeyCredential(api_key) ) query = SearchQuery(search_text="WiFi", facets=["category"]) query.select("hotelName", "category", "description") results = client.search(query=query) assert results.get_facets() == { "category": [ {"value": "Budget", "count": 4}, {"value": "Luxury", "count": 1}, ] }
def filter_query(): # [START facet_query] from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchClient search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) results = search_client.search( search_text="WiFi", facets=["Category,count:3", "ParkingIncluded"]) facets = results.get_facets() print("Catgory facet counts for hotels:") for facet in facets["Category"]: print(" {}".format(facet))
def test_search_query_argument(self, mock_search_post): client = SearchClient("endpoint", "index name", CREDENTIAL) result = client.search(search_text="search text") assert isinstance(result, ItemPaged) assert result._page_iterator_class is SearchPageIterator search_result = SearchDocumentsResult() search_result.results = [ SearchResult(additional_properties={"key": "val"}) ] mock_search_post.return_value = search_result assert not mock_search_post.called next(result) assert mock_search_post.called assert mock_search_post.call_args[0] == () assert (mock_search_post.call_args[1]["search_request"].search_text == "search text")
def filter_query(): # [START filter_query] from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchClient from azure.search.documents.models import SearchQuery search_client = SearchClient(service_endpoint, index_name, AzureKeyCredential(key)) query = SearchQuery(search_text="WiFi") query.filter("Address/StateProvince eq 'FL' and Address/Country eq 'USA'") query.select("HotelName", "Rating") query.order_by("Rating desc") results = search_client.search(query=query) print("Florida hotels containing 'WiFi', sorted by Rating:") for result in results: print(" Name: {} (rating {})".format(result["HotelName"], result["Rating"]))
def semantic_ranking(): # [START semantic_ranking] from azure.core.credentials import AzureKeyCredential from azure.search.documents import SearchClient endpoint = os.getenv("AZURE_SEARCH_SERVICE_ENDPOINT") index_name = os.getenv("AZURE_SEARCH_INDEX_NAME") api_key = os.getenv("AZURE_SEARCH_API_KEY") credential = AzureKeyCredential(api_key) client = SearchClient(endpoint=endpoint, index_name=index_name, credential=credential) results = list( client.search(search_text="luxury", query_type="semantic", query_language="en-us")) for result in results: print("{}\n{}\n)".format(result["HotelId"], result["HotelName"]))
def test_get_search_filter(self, api_key, endpoint, index_name, **kwargs): client = SearchClient(endpoint, index_name, AzureKeyCredential(api_key)) select = ("hotelName", "category", "description") results = list( client.search(search_text="WiFi", filter="category eq 'Budget'", select=",".join(select), order_by="hotelName desc")) assert [x["hotelName"] for x in results] == sorted([x["hotelName"] for x in results], reverse=True) expected = { "category", "hotelName", "description", "@search.score", "@search.highlights", } assert all(set(x) == expected for x in results) assert all(x["category"] == "Budget" for x in results)
def query_func(search_query): endpoint = "https://chatbotsearchservice.search.windows.net/" admin_key = "4CF0B5C911347AE7BBCBF5B3B8D9212C" index_name = "hotels-sample-index" search_client = SearchClient(endpoint=endpoint, index_name=index_name, credential=AzureKeyCredential(admin_key)) features = { "search_fields":"HotelName", "select":"HotelName, Rating", "filter":"Rating gt 4", "order_by":"Rating desc"} query_result = search_client.search( include_total_count=True, search_text=f"{search_query}", search_fields=f"{features['search_fields']}", select=f"{features['select']}", filter=f"{features['filter']}", order_by=f"{features['order_by']}") return query_result
search_index = os.getenv( "AZURE_SEARCH_INDEX_NAME") # Feel free to use > 1 and switch them out search_api_key = os.getenv("AZURE_SEARCH_ADMIN_API_KEY") # UI title = os.getenv("APPLICATION_NAME") st.header(title) q = st.text_input("Search query", "Type your search query here") st.write("The current search query is:", q) # Query processing search_client = SearchClient( endpoint=search_endpoint, index_name=search_index, credential=AzureKeyCredential(search_api_key), ) results = search_client.search(search_text=q, include_total_count=True) st.text(f"Total Documents Matching Query: {results.get_count()}") st.subheader("Results found:") # print(type(results)) # spoiler: custom Azure Search pagedItem object for result in results: # print(result.keys()) # Inspect what you can display st.text(result[str(list(result.keys())[0])]) # Show first available item