SlideShare a Scribd company logo
1 of 19
Download to read offline
iFind – новая технология
для полнотекстового поиска
Сергей Кудинов
Хабаровск, 2015
%Text (с версии 5.2)
• Типы данных %Text.*
• Новые SQL операторы %CONTAINS и %CONTAINSTERM
• Поддержка стемминга для английского, испанского, французского, итальянского,
немецкого, японского, португальского языков
• Поддержка индекса для нескольких слов (n-gram индексы)
• Поддержка «шумовых» слов
%Text.Russian (с версии 2007.1)
4
• Тип данных %Text.Russian
• Поддержка стемминга для русского языка на основе словаря А.А. Зализняка
– ~170 000 базовых словоформ
– ~3 000 000 словоформ
– ~ 50 Мб
• Доступен для скачивания
(http://intersystems.ru/cache/downloads/files/free_text_rus_search.zip)
iKnow (с 2012.1)
iKnow
can
create
breakthrough
applications
knowledge
unstructured text
based on
hidden in
iKnow – технология для получения данных из
неструктурированного текста
you
with
iKnow
Concepts
Relations
Paths
Dominance
Proximity
Summaries
Attributes
Что такое iFind
Анализ
НЕТ поиска
%Text
Только поиск
НЕТ анализа
iFind
Мощный поиск
Семантический анализ
SQL
Типы индексов iFind
Basic
Простой поиск
Стемминг
Декомпозиция
Маска при
поиске
Позиционный
поиск
Поиск по
шаблонам и рег.
выражениям
Фактор ~2.5
Semantic
+
Поиск по
сущностям
(entities)
Маска при
поиске по
сущностям
Позиционный
поиск по
сущностям
Фактор ~4.5
Analitic
+
Поиск с
использованием
данных о
Semantic
Dominance,
Semantic
Proximity, Pathway
…
Фактор ~6
Применение iFind
• Системы документооборота
• CRM системы
• МИС
• Документация
• Поиск по log
• Пример использования %FunctionalIndex
Как работает iFind
Создается iFind
индекс для
%string
%characterstream
Текст
передается в
iKnow
Результаты iKnow
обрабатыватся
стеммингом,
декомпозицей,
сохраняются в
словарях iFind и
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;
…
}
Как работает iFind – %FunctionalIndex
Функциональный индекс – это возможность определить пользовательскую структуру
индекса и функции поиска по этому индексу, которые будут доступны через SQL.
Необходимо определить 2 интерфейса:
1) Интерфейс сохранения изменений данных в индексе
– InsertIndex
– UpdateIndex
– DeleteIndex
2) Интерфейс поиска, доступный через SQL-процедуры
Как работает iFind – SEARCH_INDEX
Синтаксис:
SEARCH_INDEX([[schema-name.]table-name.]index-name[,findparam[,...])
• Используется с предикатом %FIND в выражениях WHERE
• Интерфейс поиска – потомок %SQL.AbstractFind
• SEARCH_INDEX вызывает метод index-nameFind() , возвращающий набор
значений.
• В SEARCH_INDEX опционально передаются параметры index-nameFind()
Как работает iFind – параметры поиска
Класс %iFind.Index.Basic
ClassMethod Find(pSearch, pOption, pLanguage)
As %Library.Binary [ CodeMode = generator,…, SqlProc ]
Параметры:
pSearch – выражение для поиска
pOption – опция поиска :
0 – поиск без использования стемминга
1 - поиск с использованием стемминга
2 - поиск c использованием декомпозиции
4 – поиск по шаблону
pLanguage – язык поиска
Использование 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 = "");
}
Использование 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)
Использование 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}'
Использование iFind
По словам и
базовым словоформам
word
*word, word*, *word*
Позиционный
(word ? ? word)
{word ? ? word}
Оператор МаскаТип поиска
По сущностям
< начало сущности
> конец сущности
<word,<word*word>,
*word>
() для слов
{} для сущностей
iFind - Заключение
iFind = Поиск+ iKnow + SQL
iFind работает со строками и символьными потоками
iFind = Только добавить индекс
Сергей Кудинов
Спасибо за внимание !
Вопросы ?
iFind – новая технология для полнотекстового
поиска

More Related Content

Similar to Meet up khabarovsk_ifind

Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаSQALab
 
Cфинкс и поиск терабайта
Cфинкс и поиск терабайтаCфинкс и поиск терабайта
Cфинкс и поиск терабайтаMedia Gorod
 
Apache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchApache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchVitebsk Miniq
 
Python в ядре Яндекс.Диска
Python в ядре Яндекс.ДискаPython в ядре Яндекс.Диска
Python в ядре Яндекс.ДискаYandex
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальBadoo Development
 
Роман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонРоман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонDataArt
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумоеTimur Rakhmatillaev
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.Igor Shkulipa
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумоеAlexander Byndyu
 
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python Meetup
 
3 шаблон яндекс 1920х1080_arial
3 шаблон яндекс 1920х1080_arial3 шаблон яндекс 1920х1080_arial
3 шаблон яндекс 1920х1080_arialYandex
 
CodeFest 2014. Панин А. — Распознавание речи c Yandex.SpeechKit
CodeFest 2014. Панин А. — Распознавание речи c Yandex.SpeechKitCodeFest 2014. Панин А. — Распознавание речи c Yandex.SpeechKit
CodeFest 2014. Панин А. — Распознавание речи c Yandex.SpeechKitCodeFest
 
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)Ontico
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroAnton Moiseenko
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты7bits
 

Similar to Meet up khabarovsk_ifind (20)

Современный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проектаСовременный подход к локализации на примере одного проекта
Современный подход к локализации на примере одного проекта
 
Sphinx
SphinxSphinx
Sphinx
 
Cфинкс и поиск терабайта
Cфинкс и поиск терабайтаCфинкс и поиск терабайта
Cфинкс и поиск терабайта
 
Ruwikt
RuwiktRuwikt
Ruwikt
 
Apache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate SearchApache Lucene + Hibernate = Hibernate Search
Apache Lucene + Hibernate = Hibernate Search
 
Python в ядре Яндекс.Диска
Python в ядре Яндекс.ДискаPython в ядре Яндекс.Диска
Python в ядре Яндекс.Диска
 
Sphinx
SphinxSphinx
Sphinx
 
Как мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон ДовгальКак мы делаем модули PHP в Badoo – Антон Довгаль
Как мы делаем модули PHP в Badoo – Антон Довгаль
 
Роман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слонРоман Еникеев - PHP или откуда взялся слон
Роман Еникеев - PHP или откуда взялся слон
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумое
 
C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.C++ Базовый. Занятие 01.
C++ Базовый. Занятие 01.
 
Индексируй неиндексирумое
Индексируй неиндексирумоеИндексируй неиндексирумое
Индексируй неиндексирумое
 
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]
 
диплом
дипломдиплом
диплом
 
Реализация метода автоматического разрешения лексической многозначности
Реализация метода автоматического разрешения лексической многозначностиРеализация метода автоматического разрешения лексической многозначности
Реализация метода автоматического разрешения лексической многозначности
 
3 шаблон яндекс 1920х1080_arial
3 шаблон яндекс 1920х1080_arial3 шаблон яндекс 1920х1080_arial
3 шаблон яндекс 1920х1080_arial
 
CodeFest 2014. Панин А. — Распознавание речи c Yandex.SpeechKit
CodeFest 2014. Панин А. — Распознавание речи c Yandex.SpeechKitCodeFest 2014. Панин А. — Распознавание речи c Yandex.SpeechKit
CodeFest 2014. Панин А. — Распознавание речи c Yandex.SpeechKit
 
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
Поиск на своем сайте, обзор Open source решений (Алексей Рагозин)
 
Java Core. Lecture# 1. Intro
Java Core. Lecture# 1. IntroJava Core. Lecture# 1. Intro
Java Core. Lecture# 1. Intro
 
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотестыСпецкурс 2014, занятие 4. Конфиги, сборка, автотесты
Спецкурс 2014, занятие 4. Конфиги, сборка, автотесты
 

More from Elena Ometova

Д.Засыпкин, Региональный мастер-индекс пациентов
Д.Засыпкин, Региональный мастер-индекс пациентовД.Засыпкин, Региональный мастер-индекс пациентов
Д.Засыпкин, Региональный мастер-индекс пациентовElena Ometova
 
владивосток форум Isc community
владивосток форум Isc communityвладивосток форум Isc community
владивосток форум Isc communityElena Ometova
 
владивосток форум Deep_see
владивосток форум Deep_seeвладивосток форум Deep_see
владивосток форум Deep_seeElena Ometova
 
It med.conf региональный мастер-индекс пациентов
It med.conf региональный мастер-индекс пациентовIt med.conf региональный мастер-индекс пациентов
It med.conf региональный мастер-индекс пациентовElena Ometova
 
It med.conf проекты в красноярском крае
It med.conf проекты в красноярском краеIt med.conf проекты в красноярском крае
It med.conf проекты в красноярском краеElena Ometova
 
It med.conf демография
It med.conf демографияIt med.conf демография
It med.conf демографияElena Ometova
 
владивосток форум Inter_systems в сфере малого бизнеса
владивосток форум Inter_systems в сфере малого бизнесавладивосток форум Inter_systems в сфере малого бизнеса
владивосток форум Inter_systems в сфере малого бизнесаElena Ometova
 
владивосток форум Ensemble
владивосток форум Ensembleвладивосток форум Ensemble
владивосток форум EnsembleElena Ometova
 
владивосток форум разработка_больших_приложений
владивосток форум разработка_больших_приложенийвладивосток форум разработка_больших_приложений
владивосток форум разработка_больших_приложенийElena Ometova
 
владивосток форум производительность_ha
владивосток форум производительность_haвладивосток форум производительность_ha
владивосток форум производительность_haElena Ometova
 
владивосток форум регион_проекты_здравоохранении
владивосток форум регион_проекты_здравоохранениивладивосток форум регион_проекты_здравоохранении
владивосток форум регион_проекты_здравоохраненииElena Ometova
 
владивосток форум новости технологий 2015
владивосток форум новости технологий 2015владивосток форум новости технологий 2015
владивосток форум новости технологий 2015Elena Ometova
 
владивосток форум Keynote 2015
владивосток форум Keynote 2015владивосток форум Keynote 2015
владивосток форум Keynote 2015Elena Ometova
 

More from Elena Ometova (13)

Д.Засыпкин, Региональный мастер-индекс пациентов
Д.Засыпкин, Региональный мастер-индекс пациентовД.Засыпкин, Региональный мастер-индекс пациентов
Д.Засыпкин, Региональный мастер-индекс пациентов
 
владивосток форум Isc community
владивосток форум Isc communityвладивосток форум Isc community
владивосток форум Isc community
 
владивосток форум Deep_see
владивосток форум Deep_seeвладивосток форум Deep_see
владивосток форум Deep_see
 
It med.conf региональный мастер-индекс пациентов
It med.conf региональный мастер-индекс пациентовIt med.conf региональный мастер-индекс пациентов
It med.conf региональный мастер-индекс пациентов
 
It med.conf проекты в красноярском крае
It med.conf проекты в красноярском краеIt med.conf проекты в красноярском крае
It med.conf проекты в красноярском крае
 
It med.conf демография
It med.conf демографияIt med.conf демография
It med.conf демография
 
владивосток форум Inter_systems в сфере малого бизнеса
владивосток форум Inter_systems в сфере малого бизнесавладивосток форум Inter_systems в сфере малого бизнеса
владивосток форум Inter_systems в сфере малого бизнеса
 
владивосток форум Ensemble
владивосток форум Ensembleвладивосток форум Ensemble
владивосток форум Ensemble
 
владивосток форум разработка_больших_приложений
владивосток форум разработка_больших_приложенийвладивосток форум разработка_больших_приложений
владивосток форум разработка_больших_приложений
 
владивосток форум производительность_ha
владивосток форум производительность_haвладивосток форум производительность_ha
владивосток форум производительность_ha
 
владивосток форум регион_проекты_здравоохранении
владивосток форум регион_проекты_здравоохранениивладивосток форум регион_проекты_здравоохранении
владивосток форум регион_проекты_здравоохранении
 
владивосток форум новости технологий 2015
владивосток форум новости технологий 2015владивосток форум новости технологий 2015
владивосток форум новости технологий 2015
 
владивосток форум Keynote 2015
владивосток форум Keynote 2015владивосток форум Keynote 2015
владивосток форум Keynote 2015
 

Meet up khabarovsk_ifind

  • 1. iFind – новая технология для полнотекстового поиска Сергей Кудинов Хабаровск, 2015
  • 2. %Text (с версии 5.2) • Типы данных %Text.* • Новые SQL операторы %CONTAINS и %CONTAINSTERM • Поддержка стемминга для английского, испанского, французского, итальянского, немецкого, японского, португальского языков • Поддержка индекса для нескольких слов (n-gram индексы) • Поддержка «шумовых» слов
  • 3. %Text.Russian (с версии 2007.1) 4 • Тип данных %Text.Russian • Поддержка стемминга для русского языка на основе словаря А.А. Зализняка – ~170 000 базовых словоформ – ~3 000 000 словоформ – ~ 50 Мб • Доступен для скачивания (http://intersystems.ru/cache/downloads/files/free_text_rus_search.zip)
  • 4. iKnow (с 2012.1) iKnow can create breakthrough applications knowledge unstructured text based on hidden in iKnow – технология для получения данных из неструктурированного текста you with
  • 6. Что такое iFind Анализ НЕТ поиска %Text Только поиск НЕТ анализа iFind Мощный поиск Семантический анализ SQL
  • 7. Типы индексов iFind Basic Простой поиск Стемминг Декомпозиция Маска при поиске Позиционный поиск Поиск по шаблонам и рег. выражениям Фактор ~2.5 Semantic + Поиск по сущностям (entities) Маска при поиске по сущностям Позиционный поиск по сущностям Фактор ~4.5 Analitic + Поиск с использованием данных о Semantic Dominance, Semantic Proximity, Pathway … Фактор ~6
  • 8. Применение iFind • Системы документооборота • CRM системы • МИС • Документация • Поиск по log • Пример использования %FunctionalIndex
  • 9. Как работает iFind Создается iFind индекс для %string %characterstream Текст передается в iKnow Результаты iKnow обрабатыватся стеммингом, декомпозицей, сохраняются в словарях iFind и iFind и индексах
  • 10. Как работает 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; … }
  • 11. Как работает iFind – %FunctionalIndex Функциональный индекс – это возможность определить пользовательскую структуру индекса и функции поиска по этому индексу, которые будут доступны через SQL. Необходимо определить 2 интерфейса: 1) Интерфейс сохранения изменений данных в индексе – InsertIndex – UpdateIndex – DeleteIndex 2) Интерфейс поиска, доступный через SQL-процедуры
  • 12. Как работает iFind – SEARCH_INDEX Синтаксис: SEARCH_INDEX([[schema-name.]table-name.]index-name[,findparam[,...]) • Используется с предикатом %FIND в выражениях WHERE • Интерфейс поиска – потомок %SQL.AbstractFind • SEARCH_INDEX вызывает метод index-nameFind() , возвращающий набор значений. • В SEARCH_INDEX опционально передаются параметры index-nameFind()
  • 13. Как работает iFind – параметры поиска Класс %iFind.Index.Basic ClassMethod Find(pSearch, pOption, pLanguage) As %Library.Binary [ CodeMode = generator,…, SqlProc ] Параметры: pSearch – выражение для поиска pOption – опция поиска : 0 – поиск без использования стемминга 1 - поиск с использованием стемминга 2 - поиск c использованием декомпозиции 4 – поиск по шаблону pLanguage – язык поиска
  • 14. Использование 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 = ""); }
  • 15. Использование 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)
  • 16. Использование 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}'
  • 17. Использование iFind По словам и базовым словоформам word *word, word*, *word* Позиционный (word ? ? word) {word ? ? word} Оператор МаскаТип поиска По сущностям < начало сущности > конец сущности <word,<word*word>, *word> () для слов {} для сущностей
  • 18. iFind - Заключение iFind = Поиск+ iKnow + SQL iFind работает со строками и символьными потоками iFind = Только добавить индекс
  • 19. Сергей Кудинов Спасибо за внимание ! Вопросы ? iFind – новая технология для полнотекстового поиска