La bibliothèque Iresearch est censée être traitée comme un indice autonome capable d'indexer et de stocker des valeurs individuelles textuellement. Les données indexées sont traitées sur une base par version / révision, c'est-à-dire que la version / révision des données existantes n'est jamais modifiée et les mises à jour / supprimer sont traitées comme de nouvelles versions / révisions desdites données. Cela permet des opérations de lecture / écriture multi-thread triviales sur l'index. L'index expose ses fonctionnalités de traitement des données via une interface «écrivaine» multi-thread qui traite chaque abstraction de document comme une collection de champs pour index et / ou stockage. L'index expose sa fonctionnalité de récupération de données via l'interface «Reader» qui renvoie les enregistrements à partir d'un index correspondant à une requête spécifiée. Les requêtes elles-mêmes sont des arbres de requête construits construits directement à l'aide des blocs de construction des requêtes disponibles dans l'API. L'infrastructure de requête offre la capacité de commander les résultats définis par une ou plusieurs implémentations de classement / notation. La logique d'implémentation de classement / de notation est basée sur les plugins et initialisée paresseuse pendant l'exécution au besoin, permettant l'ajout d'une logique de classement / de notation personnalisée sans avoir besoin de recompiler la bibliothèque Iresearch.
Un index se compose de plusieurs pièces indépendantes, appelées segments et métadonnées d'index. Les métadonnées index stocke les informations sur les segments d'index actifs pour la version / révision de l'index particulier. Chaque segment d'index est un index lui-même et se compose des composants logiques suivants:
Lire / écrire un accès aux composants transportés via des formats basés sur les plugins. L'index peut contenir des segments créés à l'aide de différents formats.
Un enregistrement de base de données est représenté comme une abstraction appelée document. Un document est en fait une collection de champs indexés / stockés. Afin d'être traité, chaque champ devrait satisfaire au moins IndexedField ou StoredField Concept.
Pour que le type T soit IndexedField , les conditions suivantes doivent être remplies pour un objet m de type T :
| Expression | Nécessite | Effets |
|---|---|---|
m.name() | Le type de sortie doit être convertible en irs::string_ref | Une valeur utilise comme nom de clé. |
m.get_tokens() | Le type de sortie doit être convertible en irs::token_stream* | Un flux de jeton utilise pour remplir la procédure inversée. Si la valeur est le champ nullptr est traitée comme non indexée. |
m.index_features() | Le type de sortie doit être implicitement convertible en irs::IndexFeatures | Un ensemble de fonctionnalités demandées pour l'évaluation lors de l'indexation. Par exemple, il peut contenir une demande de traitement des positions et des fréquences. Plus tard, les informations évaluées peuvent être utilisées lors de la requête et de la notation. |
m.features() | Le type de sortie doit être convertible en const irs::flags& | Un ensemble de fonctionnalités fournies par l'utilisateur est associée à un champ. Par exemple, il peut contenir la demande de stockage des normes de champ. Plus tard, les informations stockées peuvent être utilisées lors de la requête et de la notation. |
Pour que le type T soit StoredField , les conditions suivantes doivent être remplies pour un objet m de type T :
| Expression | Nécessite | Effets |
|---|---|---|
m.name() | Le type de sortie doit être convertible en irs::string_ref | Une valeur utilise comme nom de clé. |
m.write(irs::data_output& out) | Le type de sortie doit être convertible en bool. | On peut écrire des données arbitraires à flux indiquées par out afin de récupérer la valeur écrite à l'aide de l'API index_reader ultérieurement. Si rien n'a écrit mais que la valeur renvoyée est true , la valeur stockée est traitée comme un drapeau. Si la valeur renvoyée est false , rien n'est stocké même si quelque chose a été écrit dans out flux. |
Une abstraction de stockage de données qui peut stocker des données en mémoire ou sur le système de fichiers en fonction de la mise en œuvre de l'implémentation. Un répertoire stocke au moins toutes les versions / révisions de données d'index actuellement à usage. Pour le cas où il n'y a pas d'utilisateurs actifs du répertoire, au moins la dernière version / révision des données est stockée. Les versions / révisions de données inutilisées peuvent être supprimées via Directory_Cleaner. Une seule version / révision de l'index est composée d'un ou plusieurs segments associés, et éventuellement partagé, avec ladite version / révision.
Une seule instance par objet par directrice qui est utilisée pour l'indexation des données. Les données peuvent être indexées sur une base par document ou provenant d'un autre lecteur pour les fonctionnalités de fusion du répertoire trivial. Chaque commit() d'un écrivain produit une nouvelle version / révision de la vue des données dans le répertoire correspondant. De plus, l'interface fournit également des capacités de défragmentation du répertoire pour permettre de compacter plusieurs segments de version / révision plus petits en représentations plus compactes plus compactes. Un écrivain prend en charge les transactions en deux phases via les méthodes begin() / commit() / rollback() .
Une vue réutilisable / rafraîchissable d'un index à un moment donné. Plusieurs lecteurs peuvent utiliser le même répertoire et peuvent pointer vers différentes versions / révisions des données dans ledit répertoire.
v3.10 ou plus tard
v1.57.0 ou version ultérieure (en-têtes uniquement)
BOOST_ROOT= < path-to > /boost_1_57_0make
make installou point lz4_root au répertoire source pour construire avec iResearch
Si la compilation iResearch avec / mt add_d_definitions ("/ mtd") à la fin de cmake_unofficial / cmakelists.txt puisque Cmake ignorera l'argument de la ligne de commande -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 installou point lz4_root au répertoire source pour construire avec iResearch
LZ4_ROOT= < install-path >Binaires Win32 également disponibles:
v53 ou plus
./configure --disable-samples --disable-tests --enable-static --srcdir= " $( pwd ) " --prefix= < install-path > --exec-prefix= < install-path >
make installou Point Icu_Root dans le répertoire source à construire avec iResearch ou via le gestionnaire de packages des distributions: Libicu
Recherchez le lien: "Binaires ICU4C"
ICU_ROOT= < path-to-icu >Le CMakelists personnalisés.txt est destiné à être utilisé avec Snowball v2.0.0 et versions ultérieures. Au moins, il a été testé pour travailler sur le 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 .ou Point Snowball_Root au répertoire source pour construire avec iResearch ou via le gestionnaire de packages des distributions: Libstemmer
Le CMakelists personnalisés.txt était basé sur la révision 5137019D68BEFD633CE8B1CD48065F41E77ED43E Les versions ultérieures peuvent être utilisées à votre propre risque d'échec de compilation
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 .ou Point Snowball_Root au répertoire source pour construire avec iResearch
Pour les constructions statiques:
- Dans MSVC Open: Build / Snowball.sln
- SET: STEMMER -> Propriétés -> Propriétés de configuration -> C / C ++ -> Génération de code -> Bibliothèque d'exécution = / MTD
- Build -> Build Solution
SNOWBALL_ROOT= < path-to-snowball >Point vpack_root au répertoire source pour construire avec iResearch
mkdir build && cd build
cmake ..
makeou point gtest_root au répertoire source pour construire avec iResearch
mkdir build && cd build
cmake -g " Visual studio 12 " -Ax64 -Dgtest_force_shared_crt=ON -DCMAKE_DEBUG_POSTFIX= " " ..
cmake --build .
mv Debug ../libou point gtest_root au répertoire source pour construire avec iResearch
GTEST_ROOT= < path-to-gtest >Téléchargez n'importe quel nombre de listes de mots d'arrêt, par exemple de: 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 >Si la variable iresearch_text_stopword_path est restée non set, les sous-répertoires de mots-cirs spécifiques des paramètres régionaux sont réputés être situés dans le répertoire de travail actuel
git clone < IResearch code repository > /iresearch.git iresearch
cd iresearch
mkdir build && cd buildGénérer le fichier de construction <* Nix>:
cmake -DCMAKE_BUILD_TYPE=[Debug | Release | Coverage] -g " Unix Makefiles " ..
- Si certaines bibliothèques ne sont pas trouvées par la construction, définissez l'environnement nécessaire> Variables (par exemple boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
- Si les USI ou Snowball à partir des chemins de distribution ne sont pas trouvés, les variables d'environnement supplémentaires suivantes peuvent être requises:> ICU_ROOT_SUFFIX = x86_64-LINUX-GNU Snowball_Root_Suffix = x86_64-Linux-GNU
Générer le fichier de construction (Win32):
cmake -g " Visual studio 12 " -Ax64 ..Si certaines bibliothèques ne sont pas trouvées par la construction, définissez les variables d'environnement nécessaires (par exemple, boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
Définir l'identifiant de la construction pour cette version (facultatif)
echo " <build_identifier> " > BUILD_IDENTIFIERBibliothèque de construction:
cmake --build .Bibliothèque de test:
cmake --build . --target iresearch-checkInstallez la bibliothèque:
cmake --build . --target installCouverture du code:
cmake --build . --target iresearch-coverageIl y a un wrapper Python pour iResearch. L'écran donne accès à l'objet de lecteur de répertoire. Pour l'exemple d'utilisation, voir / python / scripts
Pour construire PyResearch Swig Generator devrait être disponible. Add -Duse_pyResearch = sur la ligne de commande CMake pour générer des cibles PyResearch
Exécuter Target PyResearch-install
Une version des installateurs de soins intensifs semble ne pas mettre à disposition toutes les DLL de l'USI via la variable Enviroment Path, un ajustement manuel peut être nécessaire.
La version partagée de LibireSearch est utilisée. Installez IRESearch avant d'exécuter PyResearch.
Des dépendances externes tierces doivent être mises à la disposition de la bibliothèque Iresearch séparément. Ils peuvent être installés via le système de gestion des packages de distribution ou construire à partir de la source et les variables d'environnement appropriées définissent en conséquence.
v1.57.0 ou ultérieure (thread du système local) utilisé pour les fonctionnalités non disponibles dans la STL (exclusion des fonctionnalités disponibles en USI)
Utilisé pour la compression / décompression des données d'octets / chaînes
Utilisé par les analyseurs pour l'analyse, la transformation et les données de chaîne de tokenisage
Utilisé par les analyseurs pour calculer les tiges de mots (c.-à-d.
Utilisé pour la rédaction de tests pour la bibliothèque Iresearch
Utilisé pour la sérialisation / désérialisation JSON
Utilisé par l'analyse :: text_analyzer pour filtrer les mots de bruit qui ne devraient pas avoir un impact sur le texte allant, par exemple pour «en» ce sont habituels «a», «le», et ... Téléchargez un certain nombre de listes de mots d'arrêt, par exemple de: https://github.com/snowballStem/Stop.txt https://code.google.com/p/stop-words/ ou créez une liste de mots d'arrêt spécifique à la langue personnalisée Placez les fichiers avec des mots d'arrêt, (UTF8 encodé avec un mot par ligne, tout texte après le premier espace est ignoré comme une seule liste) dans le répertoire) correspondant à sa langue (plusieurs fichiers par langue sont pris en charge et seront interprétés comme une seule liste).
| Filtre | Description |
|---|---|
| IRS :: BY_EDIT_DISTANCE | pour le filtrage des valeurs basées sur la distance de Levenshtein |
| irs :: by_granular_range | Pour un filtrage plus rapide des valeurs numériques dans une plage donnée, avec la possibilité de spécifier les plages ouvertes / fermées |
| IRS :: BY_NGRAM_SIMILITÉ | pour le filtrage des valeurs basées sur le modèle NGRAM |
| IRS :: BY_PHRASE | Pour le filtrage sensible à la position des mots des valeurs, avec la possibilité de sauter des positions sélectionnées |
| irs :: by_prefix | pour le filtrage des préfixes de valeur exacte |
| IRS :: BY_RANGE | pour le filtrage des valeurs dans une plage donnée, avec la possibilité de spécifier les plages ouvertes / fermées |
| IRS :: BY_SAME_POSITION | Pour le filtrage sensible à l'ordre à terme des valeurs des valeurs exactes |
| IRS :: By_term | pour le filtrage des valeurs exactes |
| IRS :: BY_TERMS | pour le filtrage des valeurs exactes par un ensemble de termes spécifiés |
| irs :: by_wildcard | pour le filtrage des valeurs basées sur le modèle de correspondance |
| IRS :: ByNestedFilter | pour le filtrage des documents basés sur le modèle de correspondance sur ses sous-documents |
| irs :: et | conjonction booléenne de plusieurs filtres, influençant les rangs / scores de documents, le cas échéant |
| IRS :: ou | Disjonction booléenne de filtres multiples, influençant les rangs / scores de documents, le cas échéant (y compris la fonctionnalité "correspondance minimale") |
| IRS :: Pas | Négation booléenne de plusieurs filtres |
Copyright (C) 2017-2023 ARANGODB GMBH
Copyright (c) 2016-2017 EMC Corporation
Ce logiciel est fourni dans le cadre de la licence logicielle Apache 2.0 fournie dans le fichier licence.md. Les informations sur les licences pour les produits tiers utilisés par le moteur de recherche IRESEARCH se trouvent dans Third_Party_readme.md