Библиотека Iresearch предназначена для того, чтобы рассматриваться как автономный индекс, который способен как индексировать, так и хранить индивидуальные значения. Индексированные данные обрабатываются на основе для согласии/преодоления, т.е. существующая версия/пересмотр данных никогда не изменяется, а обновления/удаление рассматриваются как новые версии/пересмотра указанных данных. Это обеспечивает тривиальные многопоточные операции чтения/записи по индексу. Индекс раскрывает свою функциональность обработки данных через многопоточный интерфейс «писателя», который рассматривает каждую абстракцию документа как набор полей для индекса и/или хранилища. Индекс раскрывает свою функциональность поиска данных через интерфейс «чтения», который возвращает записи из индекса, соответствующего указанному запросу. Сами запросы - это построенные деревья запросов, построенные непосредственно с использованием строительных блоков запросов, доступных в API. Инфраструктура запроса предоставляет возможность заказать результат, установленный одним или несколькими реализациями ранжирования/оценки. Логика реализации рейтинга/оценки основана на плагинах и инициализирована во время выполнения по мере необходимости, что позволяет добавить пользовательскую логику ранжирования/оценки без необходимости даже перекомпилировать библиотеку Iresearch.
Индекс состоит из нескольких независимых частей, называемых сегментами и метаданными индексом. Индексные метаданные хранят информацию о активных сегментах индекса для конкретной версии/пересмотра индекса. Каждый индексный сегмент является индексом и состоит из следующих логических компонентов:
Читать/запись доступа к компонентам, переносимым через форматы на основе плагинов. Индекс может содержать сегменты, созданные с использованием различных форматов.
Запись базы данных представлена в виде абстракции, называемой документом. Документ на самом деле является коллекцией индексированных/сохраненных полей. Для обработки каждые поле должно удовлетворить хотя бы IndexedField или концепцию StoredField .
Для того, чтобы тип T был IndexedField , следующие условия должны быть удовлетворены для объекта m типа T :
| Выражение | Требует | Эффекты |
|---|---|---|
m.name() | Тип вывода должен быть конвертируемым в irs::string_ref | Значение использует в качестве ключа. |
m.get_tokens() | Тип вывода должен быть конвертируемым в irs::token_stream* | Поток токена используется для заполнения в процедуре инверта. Если значение nullptr поле рассматривается как неиндексируемое. |
m.index_features() | Выходной тип должен быть неявно конвертируемым в irs::IndexFeatures | Набор функций, запрашиваемых для оценки во время индексации. Например, он может содержать запрос на позиции и частоты обработки. Позже оцениваемая информация может быть использована во время запроса и оценки. |
m.features() | Тип вывода должен быть конвертируемым для const irs::flags& | Набор удобных пользовательских функций, связанных с полем. Например, он может содержать запрос на хранение норм поля. Позже хранящаяся информация может быть использована во время запроса и оценки. |
Для того, чтобы тип T был StoredField , следующие условия должны быть удовлетворены для объекта m типа T :
| Выражение | Требует | Эффекты |
|---|---|---|
m.name() | Тип вывода должен быть конвертируемым в irs::string_ref | Значение использует в качестве ключа. |
m.write(irs::data_output& out) | Тип вывода должен быть конвертируемым в Bool. | Можно написать произвольные данные для потока, обозначенного out , чтобы получить письменное значение, используя API index_reader позже. Если ничего не написано, но возвращаемое значение true , то сохраненное значение рассматривается как флаг. Если возвращаемое значение false , то ничего не хранится, даже если что -то было записано в out Stream. |
Абстракция хранения данных, которая может хранить данные в памяти или в файловой системе, в зависимости от того, какая реализация создается. В каталоге хранится по крайней мере все версии/пересмотры данных индекса в настоящее время. Для случая, когда нет активных пользователей каталога, по крайней мере, по крайней мере последняя версия данных/пересмотр данных сохраняется. Неиспользуемые версии/пересмотр данных могут быть удалены через Diefory_Cleaner. Одна версия/пересмотр индекса состоит из одного или нескольких связанных сегментов и, возможно, общей, с указанной версией/пересмотром.
Один экземпляр для каждого режиссера, который используется для индексации данных. Данные могут быть индексированы на основе для каждого документа или получены от другого читателя для функциональности слияния Trivial Directory. Каждый commit() автора создает новую версию/пересмотр представления данных в соответствующем каталоге. Кроме того, интерфейс также предоставляет возможности дефрагментации каталогов, позволяющие уплотнению нескольких меньших сегментов версии/ревизии в более крупные более компактные представления. Автор поддерживает двухфазные транзакции с помощью методов begin() / commit() / rollback() .
Многоразовый/обновляемый вид индекса в заданный момент времени. Несколько читателей могут использовать один и тот же каталог и могут указывать на разные версии/пересмотр данных в указанном каталоге.
v3.10 или позже
v1.57.0 или более поздней версии (только заголовки)
BOOST_ROOT= < path-to > /boost_1_57_0make
make installили точка LZ4_ROOT в справочнике Source, чтобы построить вместе с Iresearch
При составлении Iresearch с/MT add_definitions ("/mtd") в конце cmake_unofficial/cmakelists.txt, поскольку cmake игнорирует аргумент командной строки -dcmake_c_flags =/mtd
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX= < install-path > -DBUILD_STATIC_LIBS=on -g " Visual studio 17 " -Ax64 ../contrib/cmake_unofficial
cmake --build .
cmake --build . --target installили точка LZ4_ROOT в справочнике Source, чтобы построить вместе с Iresearch
LZ4_ROOT= < install-path >двоичные файлы win32 также доступны в:
V53 или выше
./configure --disable-samples --disable-tests --enable-static --srcdir= " $( pwd ) " --prefix= < install-path > --exec-prefix= < install-path >
make installили Point ICU_ROOT в справочнике для создания вместе с Iresearch или через диспетчер пакетов Distributions: Libicu
Ищите ссылку: "ICU4C Binary"
ICU_ROOT= < path-to-icu >Пользовательский cmakelists.txt предназначен для использования со снеговиком v2.0.0 и более поздними версиями. По крайней мере, он был проверен на работу над Commit 53739A805CFA6C77FF8496DC711DC1C106D987C1
git clone https://github.com/snowballstem/snowball.git
mkdir build && cd build
cmake -DENABLE_STATIC=OFF -DNO_SHARED=OFF -g " Unix Makefiles " ..
cmake --build .
cmake -DENABLE_STATIC=OFF -DNO_SHARED=ON -g " Unix Makefiles " ..
cmake --build .или Point Snowball_Root в справочнике, чтобы построить вместе с Iresearch или через диспетчер пакетов Distributions: Libstemmer
Пользовательский cmakelists.txt был основан на ревизии 5137019D68BEFD633CE8B1CD48065F41E77ED43E.
git clone https://github.com/snowballstem/snowball.git
git reset --hard adc028f3ae646623bda2f99191fe9dc3287a909b
mkdir build && cd build
set PATH=%PATH% ; < path-to > /build/Debug
cmake -DENABLE_STATIC=OFF -DNO_SHARED=OFF -g " Visual studio 12 " -Ax64 ..
cmake --build .
cmake -DENABLE_STATIC=OFF -DNO_SHARED=ON -g " Visual studio 12 " -Ax64 ..
cmake --build .или Point Snowball_Root в справочнике Source, чтобы построить вместе с Iresearch
Для статических сборки:
- В MSVC Open: Build/Snowball.Sln
- Установите: Stemmer -> Properties -> Свойства конфигурации -> C /C ++ -> Generation -> Luntime Library = /MTD
- Build -> Решение на сборку
SNOWBALL_ROOT= < path-to-snowball >Point vpack_root в исходном каталоге, чтобы построить вместе с Iresearch
mkdir build && cd build
cmake ..
makeили точка GTEST_ROOT в справочнике Source, чтобы построить вместе с Iresearch
mkdir build && cd build
cmake -g " Visual studio 12 " -Ax64 -Dgtest_force_shared_crt=ON -DCMAKE_DEBUG_POSTFIX= " " ..
cmake --build .
mv Debug ../libили точка GTEST_ROOT в справочнике Source, чтобы построить вместе с Iresearch
GTEST_ROOT= < path-to-gtest >Загрузите любое количество списков стоп-слов, например: https://github.com/snowballstem/snowball-website/tree/master/algorithms/*/stop.txt https://code.google.com/p/stop-words/
IRESEARCH_TEXT_STOPWORD_PATH= < path-to-stopword-lists >Если переменная iresearch_text_stopword_path остается без учета, тогда определяются конкретные подканалиста Стопора
git clone < IResearch code repository > /iresearch.git iresearch
cd iresearch
mkdir build && cd buildгенерировать файл сборки <*nix>:
cmake -DCMAKE_BUILD_TYPE=[Debug | Release | Coverage] -g " Unix Makefiles " ..
- Если некоторые библиотеки не найдены по сборке, установите необходимые переменные среды> переменные (например, boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
- Если ICU или снежный ком пути распределения не найдены, могут потребоваться следующие дополнительные> переменные среды:> ICU_ROOT_SUFFIX = x86_64-linux-gnu Snowball_root_suffix = x86_64-linux-gnu
генерировать файл сборки (WIN32):
cmake -g " Visual studio 12 " -Ax64 ..Если некоторые библиотеки не найдены по сборке, установите необходимые переменные среды (например, boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
Установите идентификатор сборки для этой сборки (необязательно)
echo " <build_identifier> " > BUILD_IDENTIFIERПостроить библиотеку:
cmake --build .библиотека тестирования:
cmake --build . --target iresearch-checkУстановить библиотеку:
cmake --build . --target installпокрытие кода:
cmake --build . --target iresearch-coverageДля Iresearch есть обертка Python. Обертка дает доступ к объекту чтения каталогов. Для примера использования см. /Python /Scripts
Для создания генератора Swig Pyresearch должен быть доступен. Добавить -duse_pyresearch = on to cmake Command -Line для генерации целей Pyresearch
Запустите Target Pyresearch-Install
Некоторая версия установщиков ICU, похоже, не может предоставить все DLL ICU через переменную Enviloment Path, может потребоваться ручная корректировка.
Общая версия Libiresearch используется. Установите Iresearch перед запуском Pyresearch.
Внешние сторонние зависимости должны быть доступны в библиотеке Iresearch отдельно. Они могут быть установлены либо через систему управления распределительным пакетом, либо построить из источника, и соответствующие переменные среды, установленные соответствующими.
v1.57.0 или более поздней версии (поток системы локальной системы), используемый для функциональности, недоступной в STL (исключая функциональность, доступную в отделении интенсивной терапии)
Используется для сжатия/декомпрессии байтовых/строковых данных
Используется анализаторами для анализа, преобразования и токенизирования строковых данных
Используется анализаторами для вычисления стеблей слов (то есть корней) для более гибкого сопоставления слов из языков, не поддерживаемых «Снежком»
используется для написания тестов для библиотеки Iresearch
используется для сериализации/пустыни JSON
Используется анализом :: text_analyzer для фильтрации шумовых слов, которые не должны влиять на текст, например, для «en», это обычно ',', 'и т. Д. ... загрузить любое количество списков стоп-слов, eg from: https://github.com/snowballstem/snowball-website/tre https://code.google.com/p/stop-words/ или создать пользовательский список стоп-слов, специфичный для языка.
| Фильтр | Описание |
|---|---|
| irs :: by_edit_distance | Для фильтрации значений на основе расстояния Левенштейна |
| irs :: by_granular_range | Для более быстрой фильтрации числовых значений в данном диапазоне, с возможностью указания открытых/закрытых диапазонов |
| irs :: by_ngram_similality | Для фильтрации значений на основе модели NGRAM |
| irs :: by_phrase | Для получения чувствительной к слов фильтрации значений с возможностью пропуска выбранных позиций |
| irs :: by_prefix | Для фильтрации префиксов точного значения |
| irs :: by_range | Для фильтрации значений в данном диапазоне с возможностью указания открытых/закрытых диапазонов |
| irs :: by_same_position | Для чувствительного к срочному порядок фильтрации точных значений |
| Irs :: by_term | Для фильтрации точных значений |
| irs :: by_terms | Для фильтрации точных значений набором указанных терминов |
| irs :: by_wildcard | Для фильтрации значений на основе схемы соответствия |
| IRS :: BynestedFilter | Для фильтрации документов, основанных на схеме сопоставления на его поддоке |
| IRS :: и | логическое соединение нескольких фильтров, влияя на ранги документов/оценки по мере необходимости |
| IRS :: или | Логическое расставание с несколькими фильтрами, влияя на рейтинги документов/оценки в зависимости от необходимости (включая функциональность «Минимальное совпадение») |
| IRS :: Не | логическое отрицание нескольких фильтров |
Copyright (C) 2017-2023 Arangodb Gmbh
Copyright (C) 2016-2017 EMC Corporation
Это программное обеспечение предоставляется в соответствии с лицензией Apache 2.0, предоставленной в файле License.md. Информация о лицензировании для сторонних продуктов, используемых поисковой системой Iresearch, можно найти в Third_party_readme.md