Поиск строк, содержащих «-», в Когнитивном поиске Azure ⇐ C#
-
Anonymous
Поиск строк, содержащих «-», в Когнитивном поиске Azure
У меня возникла проблема с Когнитивным поиском Azure.
У меня есть индекс, включающий пару сотен документов. Большинство из них имеют заголовки в виде коротких предложений, и каждый из них заканчивается суффиксом «.docx». Начнем с того, что это вызвало у меня проблемы, поскольку было сложно получить высокий балл при поиске слова, если оно было последним словом перед «.docx». Я исправил это, добавив «*» в конце каждого поиска, и это сработало очень хорошо.
Однако теперь я столкнулся с новой проблемой. При поиске слов, содержащих «-», мне приходится удалять «*» с конца, и я не совсем уверен, как это повлияет на результаты, если слово с дефисом находится непосредственно перед «.docx» для пример.
Я хотел бы сохранить функциональность, предоставляемую добавленным знаком «*», но при этом иметь возможность поиска по терминам, содержащим «-». Я подозреваю, что это будет проблемой и для других операторов, поэтому, если бы у меня был запрос, который просто ищет поисковый запрос в виде строки, это было бы очень хорошо.
Я пытался избежать такого оператора, как этот «поисковый термин», кажется, работает, но при добавлении «» в конец это не дает никаких результатов. Как я уже говорил ранее, это могло бы быть решением, но я не уверен, что он получит высокую оценку «это мой поисковый запрос.docx», поскольку в конце у него нет «». Я также пробовал использовать регулярные выражения, например "/search-term./", но это также снижает оценку заголовков типа "...search.docx" при поиске "/search". /"
Я полагаю, что эту проблему можно решить без моего кода, поскольку я получаю те же результаты в пользовательском интерфейсе Когнитивного поиска Azure, но я добавлю его сюда на всякий случай.
public ActionResult GetSearchResults (строковый запрос) { запрос = запрос + "*"; Uri searchEndpointUri = new(SEARCH_ENDPOINT); Клиент SearchClient = новый( поискEndpointUri, SEARCH_INDEX_NAME, новый AzureKeyCredential(SEARCH_KEY)); вар параметры = новые SearchOptions { SearchFields = { "имя_хранилища_метаданных", "контент" }, QueryType = Azure.Search.Documents.Models.SearchQueryType.Full, SearchMode = Azure.Search.Documents.Models.SearchMode.Any, }; var search = client.Search(запрос, параметры, по умолчанию); вар документ = search.GetRawResponse().Content.ToString(); динамический jsonObject = JsonConvert.DeserializeObject(документ); вернуть ОК (jsonObject);
У меня возникла проблема с Когнитивным поиском Azure.
У меня есть индекс, включающий пару сотен документов. Большинство из них имеют заголовки в виде коротких предложений, и каждый из них заканчивается суффиксом «.docx». Начнем с того, что это вызвало у меня проблемы, поскольку было сложно получить высокий балл при поиске слова, если оно было последним словом перед «.docx». Я исправил это, добавив «*» в конце каждого поиска, и это сработало очень хорошо.
Однако теперь я столкнулся с новой проблемой. При поиске слов, содержащих «-», мне приходится удалять «*» с конца, и я не совсем уверен, как это повлияет на результаты, если слово с дефисом находится непосредственно перед «.docx» для пример.
Я хотел бы сохранить функциональность, предоставляемую добавленным знаком «*», но при этом иметь возможность поиска по терминам, содержащим «-». Я подозреваю, что это будет проблемой и для других операторов, поэтому, если бы у меня был запрос, который просто ищет поисковый запрос в виде строки, это было бы очень хорошо.
Я пытался избежать такого оператора, как этот «поисковый термин», кажется, работает, но при добавлении «» в конец это не дает никаких результатов. Как я уже говорил ранее, это могло бы быть решением, но я не уверен, что он получит высокую оценку «это мой поисковый запрос.docx», поскольку в конце у него нет «». Я также пробовал использовать регулярные выражения, например "/search-term./", но это также снижает оценку заголовков типа "...search.docx" при поиске "/search". /"
Я полагаю, что эту проблему можно решить без моего кода, поскольку я получаю те же результаты в пользовательском интерфейсе Когнитивного поиска Azure, но я добавлю его сюда на всякий случай.
public ActionResult GetSearchResults (строковый запрос) { запрос = запрос + "*"; Uri searchEndpointUri = new(SEARCH_ENDPOINT); Клиент SearchClient = новый( поискEndpointUri, SEARCH_INDEX_NAME, новый AzureKeyCredential(SEARCH_KEY)); вар параметры = новые SearchOptions { SearchFields = { "имя_хранилища_метаданных", "контент" }, QueryType = Azure.Search.Documents.Models.SearchQueryType.Full, SearchMode = Azure.Search.Documents.Models.SearchMode.Any, }; var search = client.Search(запрос, параметры, по умолчанию); вар документ = search.GetRawResponse().Content.ToString(); динамический jsonObject = JsonConvert.DeserializeObject(документ); вернуть ОК (jsonObject);
Мобильная версия