meet up khabarovsk_ifind

19
iFind новая технология для полнотекстового поиска Сергей Кудинов Хабаровск, 2015

Upload: elena-ometova

Post on 16-Aug-2015

14 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Meet up khabarovsk_ifind

iFind – новая технология для полнотекстового поиска Сергей Кудинов

Хабаровск, 2015

Page 2: Meet up khabarovsk_ifind

%Text (с версии 5.2)

• Типы данных %Text.*

• Новые SQL операторы %CONTAINS и %CONTAINSTERM

• Поддержка стемминга для английского, испанского, французского, итальянского,

немецкого, японского, португальского языков

• Поддержка индекса для нескольких слов (n-gram индексы)

• Поддержка «шумовых» слов

Page 3: Meet up khabarovsk_ifind

%Text.Russian (с версии 2007.1)

4

• Тип данных %Text.Russian

• Поддержка стемминга для русского языка на основе словаря А.А. Зализняка

– ~170 000 базовых словоформ

– ~3 000 000 словоформ

– ~ 50 Мб

• Доступен для скачивания (http://intersystems.ru/cache/downloads/files/free_text_rus_search.zip)

Page 4: Meet up khabarovsk_ifind

iKnow (с 2012.1)

iKnow can

create

breakthrough

applications

knowledge

unstructured text

based on

hidden in

iKnow – технология для получения данных из неструктурированного текста

you

with

Page 5: Meet up khabarovsk_ifind

iKnow

Concepts

Relations

Paths

Dominance

Proximity

Summaries

Attributes

Page 6: Meet up khabarovsk_ifind

Что такое iFind

Анализ

НЕТ поиска

%Text

Только поиск

НЕТ анализа

iFind Мощный поиск

Семантический анализ

SQL

Page 7: Meet up khabarovsk_ifind

Типы индексов iFind

Basic

Простой поиск

Стемминг

Декомпозиция

Маска при поиске

Позиционный поиск

Поиск по шаблонам и рег. выражениям

Фактор ~2.5

Semantic

+

Поиск по сущностям (entities)

Маска при поиске по сущностям

Позиционный поиск по сущностям

Фактор ~4.5

Analitic

+

Поиск с использованием данных о Semantic Dominance, Semantic Proximity, Pathway …

Фактор ~6

Page 8: Meet up khabarovsk_ifind

Применение iFind

• Системы документооборота

• CRM системы

• МИС

• Документация

• Поиск по log

• Пример использования %FunctionalIndex

Page 9: Meet up khabarovsk_ifind

Как работает iFind Создается iFind

индекс для

%string

%characterstream

Текст передается в

iKnow

Результаты iKnow обрабатыватся

стеммингом, декомпозицей, сохраняются в

словарях iFind и iFind и индексах

Page 10: Meet up khabarovsk_ifind

Как работает iFind – класс индекса

Class %iFind.Index. Basic Extends (%Library.FunctionalIndex, %Library.CacheEmbedded) [ EmbeddedClass = %iFind.Find.Basic ]

{ Parameter FILER [ Internal ] = "iFind.Filer.Basic";

/// Language

Parameter LANGUAGE = “en";

/// 0 = No compounds and stems

/// 1 = Stems

/// 2 = Compounds

Parameter INDEXOPTION [ Constraint = "0,1,2" ] = 1;

Parameter LOWER = 1;

}

Page 11: Meet up khabarovsk_ifind

Как работает iFind – %FunctionalIndex

Функциональный индекс – это возможность определить пользовательскую структуру индекса и функции поиска по этому индексу, которые будут доступны через SQL.

Необходимо определить 2 интерфейса:

1) Интерфейс сохранения изменений данных в индексе

– InsertIndex

– UpdateIndex

– DeleteIndex

2) Интерфейс поиска, доступный через SQL-процедуры

Page 12: Meet up khabarovsk_ifind

Как работает iFind – SEARCH_INDEX

Синтаксис:

SEARCH_INDEX([[schema-name.]table-name.]index-name[,findparam[,...])

• Используется с предикатом %FIND в выражениях WHERE

• Интерфейс поиска – потомок %SQL.AbstractFind

• SEARCH_INDEX вызывает метод index-nameFind() , возвращающий набор значений.

• В SEARCH_INDEX опционально передаются параметры index-nameFind()

Page 13: Meet up khabarovsk_ifind

Как работает iFind – параметры поиска

Класс %iFind.Index.Basic

ClassMethod Find(pSearch, pOption, pLanguage)

As %Library.Binary [ CodeMode = generator,…, SqlProc ]

Параметры:

pSearch – выражение для поиска

pOption – опция поиска :

0 – поиск без использования стемминга

1 - поиск с использованием стемминга

2 - поиск c использованием декомпозиции

4 – поиск по шаблону pLanguage – язык поиска

Page 14: Meet up khabarovsk_ifind

Использование iFind

Описание индекса iFind

Class iFind.TestIndex Extends %Persistent

{

Property text As %String(MAXLEN = "");

Index iText On (text) As %iFind.Index(INDEXOPTION = 1,LOWER = 1) [ Type = bitmap ];

Property ref As %String(MAXLEN = "");

}

Page 15: Meet up khabarovsk_ifind

Использование iFind - SQL

SELECT ID,text

FROM ifind.testindex

WHERE ID %FIND ifind.testindex_itextfind(‘word',0)

или

SELECT ID,text

FROM ifind.testindex

WHERE ID %FIND SEARCH_INDEX(itextfind,'word',0)

Page 16: Meet up khabarovsk_ifind

Использование iFind

• Опции поиска:

– word ,*word , word* ,*word*

– (word word), (word ? word)

– <word , word> ,<word>

– <*word ,<word* ,<*word*

– *word> , word*> ,*word*>

– <*word> ,<word*> ,<*word*>

– {word word} ,<{word word} ,{word word}> ,<{word word}>

– '[a-zA-Z0-9]+(\.)?[a-zA-Z0-9]*@[a-zA-Z0-9]+\.[a-zA-Z]{2,3}'

Page 17: Meet up khabarovsk_ifind

Использование iFind

По словам и базовым словоформам

word *word, word*, *word*

Позиционный (word ? ? word) {word ? ? word}

Оператор Маска Тип поиска

По сущностям < начало сущности

> конец сущности

<word,<word*word>, *word>

() для слов {} для сущностей

Page 18: Meet up khabarovsk_ifind

iFind - Заключение

iFind = Поиск+ iKnow + SQL

iFind работает со строками и символьными потоками

iFind = Только добавить индекс

Page 19: Meet up khabarovsk_ifind

Сергей Кудинов

Спасибо за внимание ! Вопросы ?

iFind – новая технология для полнотекстового поиска