Добавление нового типа результатов

Elasticsearch найдет все!

Мы продолжаем погружаться в Elasticsearch. Сегодня займемся одной из главных возможностей, предоставляемых этой базой данных. Речь идет о полнотекстовом поиске. Такой тип поиска позволяет находить документы не по точному совпадению имен или применению агрегирования к каким-либо полям, а по текстовому содержимому. Мы разберемся как работает поиск в Elasticsearch и продолжим развлекаться с датасетом Jeopardy.

Немного теории

Полнотекстовый поиск в Elasticsearch основан на понятии инвертированного индекса. Он представляет собой структуру данных, содержащую в себе все слова из датасета и списки с документами, в которых встречаются эти слова. Говоря “слова” я имею ввиду термы, те самые термы, которые выдает анализатор после обработки входного текста. Если вы плохо представляете о чем идет речь, обратитесь к первому посту серии про Elasticsearch.

Так как при полнотекстовом поиске движок обращается только к инвертированному индексу, то он не сможет найти точное совпадение фразы, если только поле не отказывается от анализаторов, храня строки целиком. Поэтому еще на этапе создания маппинга для вашего индекса нужно предусмотреть для каких целей будут использоваться различные поля. Так, например, числа или даты стоит индексировать без применения анализаторов, в то время как к текстовым полям, которые не являются перечислением небольшого набора значений, стоит тщательно выбирать какой анализ применять. От этого напрямую зависят результаты поиска!

Обновление маппинга

Теперь, когда мы еще поднабрались теории, самое время обновить маппинг для нашего индекса. Напомню, что мы работает с датасетом Jeopardy, в котором содержатся данные о вопросах и ответах с различных игр этой популярной американской телевикторины. Итак, мы индексируем следующие поля:

  • Категория. Над этим полем мы уже изрядно поработали. Анализатор настроен на работу с автокомплитом и опечаточниками, так что ничего менять не будем.
  • Вопрос. Сегодня мы направим свой взор в первую очередь именно на это поле. Наша задача обеспечить качественный полнотекстовый поиск по вопросам датасета. В Elasticsearch есть целый набор языковых анализаторов для текстовых полей. Так как набор данных у нас англоязычный, будем использовать english analyzer. Он дополняет стандартный анализатор стеммером Портера, исключением стоп-слов и пометкой определенных слов языка, не подвергающихся стеммингу.
  • Ответ. Не будем ничего придумывать, установим тот же анализатор, что и на предыдущем поле.
  • Дата игры. Поле типа date. К этому типу не применяются анализаторы. Установим конкретное представление индексируемых дат(format) и возможность игнорировать нераспарсенные значения (ignore_malformed).
  • Цена вопроса. Как и в “Своей Игре” в Jeopardy разным заданиям присваиваются различные суммы денег. Это обычное числовое поле integer, не требующее никакого анализа.
  • Раунд. Для этого поля возможно всего 3 значения: Jeopardy!, Double Jeopardy! и Final Jeopardy. Для него идеально подходит тип keywords. Этот текстовый тип не применяет никакие преобразования к содержимому и позволяет выполнять поиск по точному значению.

Так выглядит обновленный маппинг:

Query & Filter контексты

В Elasticsearch существует два контекста, в которых работает поиск. Первый из них при выборе документов для формирования результата определяет насколько хорошо документ соответствует запросу. При работе во втором контексте Elasticsearch задается вопросом “Удовлетворяет документ запросу или нет?”.

Первый контекст носит название Query. Именно он работает как полнотекстовый поиск и позволяет находить похожие на запрашиваемые пользователем значения в больших объемах текста. Благодаря применению анализаторов query запросы позволяют искать по словоформам, исключать стоп-слова и многое другое. При выполнении запросов в этом контексте для каждого документа вычисляется рейтинг (score) — численное значение того, насколько документ подходит под запрос. Результаты в выдаче сортируются в порядке убывания этого рейтинга.

Второй контекст называется Filter и позволяет выполнять поиск по точному значению. Этот контекст используется для фильтрации документов. Так как для каждого документа ответом на такие запросы может быть только “да” или “нет”, в выдаче результатов отсутствует поле _score. Filter запросы кешируются и, как правило, отрабатывают быстрее, чем запросы в контексте query.

Поиск по точному значению

Начнем с более привычного для взаимодействующих с реляционными базами людей контекста filter. Сделаем выборку документов, удовлетворяющих следующим условиям:

  1. Игра проходила в 2008 году.
  2. Стоимость вопроса была выше 1000 долларов.
  3. Вопрос прозвучал в первом или втором раунде.

Для того, чтобы строить запросы из нескольких условий, в Elasticsearch используется конструкция bool. Она может включать себя четыре типа условий:

  • must — аналог конъюнкции (И), то есть документы должны удовлетворять этой части запроса, чтобы оказаться среди результатов. Выполняется в query контексте.
  • filter — отличается от предыдущего типа только тем, что выполняются в контексте filter.
  • should — дизъюнкция (ИЛИ). Если в запросе есть must или filter условия, то документ, который прошел их проверку, будет в ответе, даже если не удовлетворяет should условию. Если более жестких условий нет, то требуется выполнение хотя бы одного из условий такого типа. Контекст — query.
  • must_not — среди результатов документы, не удовлетворяющие условию. Выполняется в filter контексте.
Читайте также:  Этапы выполнения программы Электронная Россия и предполагаемые результаты

Мы хотим найти документы, которые удовлетворяют набору условий, поэтому будем выполнять поиск в контексте filter. Для этого существует набор запросов уровня термов (полный список приведен в документации). Нам достаточно воспользоваться запросом range, который позволяет делать выборку данных в диапазоне, и term, благодаря которому можно сравнивать содержимое поля с конкретным значением.

Ниже частично приведен ответ на запрос. Результаты располагаются в объекте hits. В поле total отображается количество документов, удовлетворивших запросу. Обратите внимание на то, что _score у всех документов равен нулю. Это подтверждает тот факт, что поиск проводился в filter контексте.

Полнотекстовый поиск

Наконец перейдем к самому интересному. Будем искать документы по содержимому вопросов, используя query контекст.

match

Первоначально запрос match применяет к строке анализатор, который используется полем, в котором ищем совпадения. В результате этой процедуры получается набор термов. Далее формируется boolean запрос, содержащий все эти термы. По умолчанию, оператором запроса является ключевое слово OR, то есть, среди результатов будут все документы, в которых встретился хотя бы один из образованных термов. Однако, эту логику можно изменить, установив оператор AND. При этом, в дефолтном случае все равно более приоритетными документами будут те, в которых встретилось большее число термов из запроса. Это возможно, благодаря тому, что match действует в query контексте и начисляет каждому документу score. Так выглядит простейший запрос:

Теперь изменим поведение match запроса, установив оператор AND. На анимации выше видно, что Elasticsearch не находил термы с опечатками. Мы можем установить параметр fuzziness с числом возможных несовпадающих символов в терме.

Количество результатов значительно уменьшилось. Это произошло из-за того, что теперь в выдаче присутствуют только те документы, в которых встретились все 3 терма. Кроме того, теперь при поиске позволительна одна опечатка в слове.

match_phrase

Главное отличие match_phrase от предыдущей конструкции в том, что в match порядок термов в запросе не имеет значения. В результаты же нового запроса попадут только те документы, в которых есть все термы из запроса, и они расположены в тексте в том же порядке. Так выглядит запрос:

Напоследок напишем запрос, который учитывает и документы, содержащие одиночные термы из запроса, и те в которых встречаются несколько слов, но отдает максимальный рейтинг тем, в которых термы стоят в том же порядке, что и в запросе. Для этого необходимо написать bool конструкцию с оператором should, в которую поместить наши match и match_phrase запросы. Чтобы документы с правильным порядком термов имели наибольший приоритет, добавим к запросу match_phrase параметр boost — число, на которое будет умножен score в случае успеха.

Заключение

Elasticsearch предоставляет богатые возможности для полнотекстового поиска, в чем мы сегодня убедились. При этом в нем также присутствуют все необходимые конструкции для создания сложных агрегированных запросов.

Источник

Управление типами результатов

Как администратор или владелец коллекции сайтов можно создавать и использовать типы результатов для настройки отображения результатов для определенных типов документов.

В SharePoint есть как классический, так и современный интерфейс поиска. Для классического поиска используется тип результатов для указания шаблона отображения, который система поиска должна использовать для определенного типа документа или результата поиска. Поскольку документы не одинаковы, результаты поиска также не должны быть одинаковыми. С помощью типов результатов и шаблонов отображения пользователям гораздо проще найти результаты, которые они ищут. Вы не можете настроить отображение результатов для современного поиска. Узнайте о различиях между классическими современным опытом поиска в SharePoint .

Тип результатов указывает одно или несколько условий для сравнения результатов поиска с такими, как тип или источник результатов результата поиска, и действие, необходимое, если результат поиска соответствует этим условиям. Действие указывает шаблон отображения, который используется для результата поиска.

Например, предварительно заданный тип результатов с именем Person указывает, что если результат поиска поступает из источника результатов Local People Results, то используйте шаблон отображения элемента People. Шаблон отображения элемента "Люди" отображает сведения на панели наведении, например документы, автором которых является человек, и предоставляет быстрый доступ к этим документам.

Другой пример — это тип результатов, который сгореет, если свойство ContentType содержит отчет о продажах, а затем имеет определенный шаблон отображения отчетов о продажах. Пользователи сразу же определят результат поиска как отчет о продажах.

Дополнительные сведения см. в дополнительных сведениях об изменении результатов поиска с помощью типов результатов и шаблонов отображения.

Существует множество преднастроиженных типов результатов, из них можно также создать новые настраиваемые типы результатов. Можно настроить типы результатов на уровне коллекции сайтов и на уровне сайта.

Читайте также:  35 Понятие финансовых результатов и действующий порядок их формирования

Добавление нового типа результатов

  1. Перейдите на страницу Управление типами результатов для коллекции сайтов или сайта:

Для коллекции сайтов в своей коллекции сайтов выберите значок Параметры Параметры. И затем выберите  параметры сайта. Если вы не видите параметры сайта, выберите сведения о сайте, а затем выберите Просмотр всех параметров сайта. В статье Администрирование коллекций сайтов выберите типы результатов поиска.

Для сайта выберите значок Параметры Параметры. и выберите  параметры сайта. Если вы не видите параметры сайта, выберите сведения о сайте, а затем выберите Просмотр всех параметров сайта. В рамках поиска выберите типы результатов.

  1. На странице Управление типами результатов сделайте одно из следующих:

Щелкните новый тип результатов или

В списке существующих типов результатов щелкните имя типа, например Человек, и выберите команду Копировать, чтобы изменить копию и создать новый тип результата.

В разделе Общие сведения в поле Give it a name введите имя для типа результатов.

В разделе Условия в первом списке выберите источник результатов, который должен соответствовать результатам.

В разделе Условия во втором списке выберите, какие типы контента должны соответствовать. Чтобы соответствовать всем содержимым, пропустите правило. Чтобы добавить больше типов контента, нажмите кнопку Добавить значение.

Чтобы добавить дополнительные условия, связанные с управляемыми свойствами, раздвигайте показать больше условий.

В первом списке выберите свойство, чтобы соответствовать.

Выберите, как свойство должно относиться к одному или более значениям.

Введите одно или несколько значений для свойства в поле. Раздельно с помощью зайколонов.

Чтобы добавить дополнительные свойства для совпадения, нажмите кнопку Добавить свойство.

В разделе Действия выберите шаблон отображения. URL-адрес шаблона отображения отображается в URL-адресе шаблона Display.

Проверьте поле Оптимизируйте частое использование, если тип результатов будет одним из наиболее часто используемых типов результатов.

Источник

Настроить поиск

Чтобы найти нужную информацию, просто введите запрос в поисковой строке. Если вы хотите сделать поиск точнее, используйте фильтры расширенного поиска (значок  в поисковой строке) или язык запросов непосредственно при наборе запроса.

Чтобы перейти к настройкам, прокрутите страницу с результатами поиска вниз и нажмите Настройки .

Настроить поисковые подсказки

Чтобы подсказывать вам любимые сайты и показывать в результатах поиска персональные ответы, Яндекс использует вашу историю поиска и переходов на сайты из поисковой выдачи. Настройте нужные опции:

Исключить из выдачи страницы «для взрослых»

Из результатов поиска можно исключить документы, содержащие ненормативную лексику и контент «для взрослых» . Для этого внизу страницы в блоке Фильтрация поиска выберите нужный режим:

Еще безопасный поиск можно настроить с помощью следующих ресурсов:

Как Яндекс располагает результаты поиска

Яндекс анализирует, насколько найденный документ соответствует запросу пользователя. Чем полезнее ответ, тем выше он располагается на странице поисковой выдачи.

Результаты ранжируются автоматически. При этом учитывается удобство навигации по сайту, его структура, качество текстов, загроможденность рекламой и другие свойства сайта.

Подробнее см. в разделе Принципы ранжирования поиска Яндекса. Информация для вебмастеров о размещении сайтов в результатах поиска представлена в разделах Индексирование сайта и Ранжирование сайта Справки Вебмастера.

Источник



Типы результатов и шаблоны отображения, используемые для отображения классических результатов поиска в SharePoint Server

ПРИМЕНЯЕТСЯ К:  да 2013  да 2016  да 2019  нет SharePoint в Microsoft 365

SharePoint Сервер содержит множество функций поиска по умолчанию, которые отлично помогают пользователям находить то, что они ищут. Однако, у вас может возникнуть необходимость отображения результатов определенным образом, например, вывода только сведений, касающихся вашей компании или деятельности. Чтобы настроить способ отображения результатов поиска и содержащуюся в них информацию, вы можете создать новые типы результатов и шаблоны отображения или изменить существующие. В этой статье не описывается, как это можно сделать, но предоставляется обзор типов результатов по умолчанию и шаблонов отображения, которые используются для отображения результатов поиска.

О типах результатов

При осуществлении поиска на сайте SharePoint очень часто отображается большое количество результатов. По умолчанию результаты поиска группируются таким образом, чтобы вы смогли легко различить их типы. Например, просто взглянув на изображение под результатами поиска, вы можете увидеть, что первые два из них являются презентациями PowerPoint, третий результат является документом Word и так далее.

Результаты поиска, отображаемые в зависимости от типа результата

Для такого группирования результаты поиска сортируются по типам результатов. Тип результата является классификацией результата поиска. Например, если результат поиска найден в презентации Microsoft PowerPoint, такой результат принадлежит к типу результатов Microsoft PowerPoint. Если результат поиска найден в PDF-файле, такой результат принадлежит к типу результатов PDF.

В следующей таблице приведены типы результатов по умолчанию.

Тип результата Источник результата поиска
Человек Источник Локальные результаты поиска людей
Microsoft Access Файл Microsoft Access
Microsoft Excel Файл Microsoft Excel
Microsoft OneNote Файл Microsoft OneNote
Microsoft PowerPoint Файл Microsoft PowerPoint
Microsoft Publisher Файл Microsoft Publisher
Microsoft Visio Файл Microsoft Visio
Microsoft Word Файл Microsoft Word
Обсуждение Сообщение на сайте сообщества
Ответ Ответ на почтовое сообщение
Почтовое сообщение Почтовое сообщение
Изображение Файл изображения
PDF PDF-файл
Текст TXT-файл
Видео Видеофайл
XML XML-файл
ZIP ZIP-файл
Блог о SharePoint Сайт блога SharePoint
Сообщество SharePoint Сайт сообщества SharePoint
Доска обсуждений SharePoint Библиотека доски обсуждений SharePoint
Библиотека документов SharePoint Библиотека документов SharePoint
Список SharePoint Список SharePoint
Запись микроблога SharePoint Запись в блоге на сайте блога SharePoint
Библиотека изображений SharePoint Библиотека изображений SharePoint
Сайт SharePoint Сайт SharePoint
Опрос SharePoint Опрос SharePoint
Вики-сайт SharePoint Вики-сайт SharePoint Enterprise
Элемент списка библиотеки изображений SharePoint Элемент из библиотеки изображений SharePoint
Элемент списка SharePoint Элемент из списка SharePoint
Веб-страница Внешние веб-страницы, например, страницы HTML или ASPX
Тип результата по умолчанию Результаты, которые не принадлежат к другим типам результатов, например, файлы Java, C++ или C#

Взаимосвязь типов результатов и шаблонов отображения

В центре поиска SharePoint результаты поиска отображаются в веб-части "Результаты поиска". Для управления отображением результатов поиска используются два типа шаблонов отображения:

Шаблон отображения элемента

Шаблон отображения меняющейся панели

Шаблон отображения элемента определяет способ отображения каждого результата. Шаблон отображения меняющейся панели отображает дополнительные сведения при наведении пользователем указателя мыши на результат поиска.

В следующей схеме показана взаимосвязь типов результатов с шаблонами отображения.

Каждый тип результата связан с шаблоном отображения.

В каждом шаблоне отображения элемента содержится переменная, связанная с шаблоном отображения меняющейся панели. Эта переменная — var hoverUrl .

Следующая таблица демонстрирует связь типов результатов по умолчанию с шаблонами отображения элемента и меняющейся панели.

Тип результата Заголовок шаблона отображения элемента в интерфейсе пользователя Имя файла шаблона отображения элемента в Коллекции главных страниц Имя файла шаблона отображения меняющейся панели в Коллекции главных страниц
Человек Элемент "Люди" Item_Person Item_Person_HoverPanel
Microsoft Access Элемент документа Office Item_OfficeDocument Item_OfficeDocument_HoverPanel
Microsoft Excel Элемент Excel Item_Excel Item_Excel_HoverPanel
Microsoft OneNote Элемент OneNote Item_OneNote Item_OneNote_HoverPanel
Microsoft PowerPoint Элемент PowerPoint Item_PowerPoint Item_PowerPoint_HoverPanel
Microsoft Publisher Элемент документа Office Item_OfficeDocument Item_OfficeDocument_HoverPanel
Microsoft Visio Элемент документа Office Item_OfficeDocument Item_OfficeDocument_HoverPanel
Microsoft Word Элемент Word Item_Word Item_Word_HoverPanel
Обсуждение Обсуждение Item_Discussion Item_Discussion_HoverPanel
Ответ Элемент ответа Item_Reply Item_Reply_HoverPanel
Почтовое сообщение Элемент по умолчанию Item_Default Item_Default_HoverPanel
Изображение Элемент по умолчанию Item_Default Item_Default_HoverPanel
PDF Элемент PDF Item_PDF Item_PDF_HoverPanel
Текст Элемент по умолчанию Item_Default Item_Default_HoverPanel
Видео Элемент "Видео" Item_Video Item_Video_HoverPanel
XML Элемент по умолчанию Item_Default Item_Default_HoverPanel
ZIP Элемент по умолчанию Item_Default Item_Default_HoverPanel
Блог о SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Сообщество SharePoint Элемент сообщества Item_Community Item_Community_HoverPanel
Доска обсуждений SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Библиотека документов SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Список SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Запись микроблога SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Библиотека изображений SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Сайт SharePoint Элемент сайта Item_Site Item_Site_HoverPanel
Опрос SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Вики-сайт SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Элемент списка библиотеки изображений SharePoint Элемент изображения Item_Picture Item_Picture_HoverPanel
Элемент списка SharePoint Элемент по умолчанию Item_Default Item_Default_HoverPanel
Веб-страница Элемент веб-страницы Item_WebPage Item_WebPage_HoverPanel
Тип результата по умолчанию Элемент по умолчанию Item_Default Item_Default_HoverPanel

Общие шаблоны отображения, используемые всеми типами результатов

В дополнение к шаблонам отображения, перечисленным в предыдущем разделе, существуют также шаблоны отображения, которые используются всеми типами результатов. Они называются общими шаблонами отображения. К общим шаблонам отображения обращаются как шаблоны отображения элемента, так и шаблоны отображения меняющейся панели. В следующей схеме показан порядок такого обращения.

Каждый шаблон отображения элемента ссылается на Общее тело элемента шаблона отображения элемента. Ссылкой является _#=ctx.RenderBody(ctx)=#_ .

В каждом шаблоне отображения меняющейся панели содержится три ссылки на три общих шаблона отображения меняющейся панели. Ссылки _#=ctx.RenderHeader(ctx)=#_, _#=ctx.RenderBody(ctx)=#_ и _#=ctx.RenderFooter(ctx)=#_ .

В следующей таблице представлены общие шаблоны отображения.

Заголовок шаблона отображения в интерфейсе пользователя Имя шаблона отображения в Коллекции главных страниц Описание
Общее тело элемента Item_CommonItem_Body Отображает информацию в теле веб-части "Результаты поиска".
Общий заголовок меняющейся панели Item_CommonHoverPanel Отображает информацию в заголовке меняющейся панели.
Общее тело меняющейся панели Item_CommonPanel_Body Отображает информацию в теле меняющейся панели.
Общие действия меняющейся панели Item_CommonHoverPanel_Actions Отображает действия в нижней части меняющейся панели, например "Изменить" или "Отправить".

Шаблон отображения результатов повышенного уровня

С помощью правила запросов можно повысить уровень отдельных результатов, чтобы они отображались в верхней части списка результатов поиска. Результаты повышенного уровня отображаются с использованием специального шаблона отображения элемента, не связанного с типом результата. Таким образом, он используется для отображения всех результатов поиска повышенного уровня. Этот шаблон отображения не связан с шаблоном отображения меняющейся панели.

В следующей таблице представлен шаблон отображения результатов повышенного уровня.

Источник