Отправить запрос

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

Подсистема полнотекстового поиска технологической платформы Алтимета предназначена для индексирования и поиска ресурсов по условиям, накладываемым на их атрибуты.

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

На следующем шаге для каждого найденного атрибута при помощи средств используемого объектно-реляционного отображения строится шаблон SQL запроса, который для заданной коллекции идентификаторов возвращает значения этого атрибута, вместе с идентификатором.

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

  • выявляет новые, изменённые и удалённые ресурсы со времени последнего запуска на основе актуальной и сохранённой даты изменения ресурса;
  • если полученный список слишком большой (больше указанного в настройках числа), то лишние элементы отбрасываются — они будут обработаны при следующем запуске;
  • новые и изменённые ресурсы группируются по их типу;
  • для каждой группы ресурсов одного типа выполняется серия запросов, соответствующих атрибутам этого типа, в результате чего мы получаем значения, которые помещаются в индекс, при этом значения полнотекстовых атрибутов предварительно разбираются по термам;
  • из индекса стираются записи об удалённых ресурсах.

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

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

Подсистема поиска для обработки запроса разбирает его в соответствии с существующей грамматикой, и на этой основе строит SQL запрос к индексу. При этом в настоящее время используются операции объединения (UNION) результатов поиска по каждому условию с последующей группировкой таким образом, чтобы в результате группировки было понятно, какие условия для данного ресурса выполняются. Такая техника показала более высокое быстродействие по сравнению с альтернативными подходами (такими, как использование вспомогательных таблиц).

наши
партнёры
отзывы
клиентов

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

А.М. Рыжиков Президент ОАО «Московская фондовая биржа»
Контакты
Тел.: +7 (495) 287-46-09
Email: askultimeta.ru

Подписка на Новости


 


© 2024 год, ООО «Алтимета»
Правовая информация