La Biblioteca IRESearch está destinada a ser tratada como un índice independiente que es capaz de indexar y almacenar valores individuales literalmente. Los datos indexados se tratan por versión/por revisión, es decir, la versión/revisión de datos existentes nunca se modifica y las actualizaciones/eliminaciones se tratan como nuevas versiones/revisiones de dichos datos. Esto permite operaciones triviales de lectura/escritura de múltiples subprocesos en el índice. El índice expone su funcionalidad de procesamiento de datos a través de una interfaz de 'escritor' múltiple que trata la abstracción de cada documento como una colección de campos para indexar y/o almacenar. El índice expone su funcionalidad de recuperación de datos a través de la interfaz 'lector' que devuelve registros de un índice que coincida con una consulta específica. Las consultas en sí se construyen árboles de consulta construidos directamente utilizando los bloques de construcción de consultas disponibles en la API. La infraestructura de consulta proporciona la capacidad de ordenar el resultado establecido por una o más implementaciones de clasificación/puntuación. La lógica de implementación de clasificación/puntuación está basada en complementos e inicializada perezosa durante el tiempo de ejecución según sea necesario, lo que permite la adición de la lógica de clasificación/puntuación personalizada sin la necesidad de recompilar la biblioteca IRESearch.
Un índice consta de múltiples partes independientes, llamadas segmentos y metadatos de índice. Los metadatos del índice almacena información sobre segmentos de índice activo para la versión/revisión del índice particular. Cada segmento de índice es un índice en sí y consiste en los siguientes componentes lógicos:
Acceso de lectura/escritura a los componentes transportados a través de formatos basados en complementos. El índice puede contener segmentos creados utilizando diferentes formatos.
Un registro de la base de datos se representa como una abstracción llamada documento. Un documento es en realidad una colección de campos indexados/almacenados. Para ser procesado, cada campo debe satisfacer al menos el concepto IndexedField o StoredField .
Para que el tipo T sea IndexedField , las siguientes condiciones deben satisfacerse para un objeto m de tipo T :
| Expresión | Requerimiento | Efectos |
|---|---|---|
m.name() | El tipo de salida debe ser convertible en irs::string_ref | Un valor usa como nombre clave. |
m.get_tokens() | El tipo de salida debe ser convertible en irs::token_stream* | Un flujo de tokens utiliza para poblar en el procedimiento invertido. Si el valor es el campo nullptr se trata como no indexado. |
m.index_features() | El tipo de salida debe ser implícitamente convertible para irs::IndexFeatures | Un conjunto de características solicitadas para evaluación durante la indexación. Por ejemplo, puede contener solicitud de posiciones y frecuencias de procesamiento. Más tarde, la información evaluada se puede utilizar durante la consulta y la puntuación. |
m.features() | El tipo de salida debe ser convertible en const irs::flags& | Un conjunto de características suministradas por el usuario para estar asociadas con un campo. Por ejemplo, puede contener solicitud de almacenamiento de normas de campo. Más tarde, la información almacenada se puede usar durante la consulta y la puntuación. |
Para que el tipo T sea StoredField , las siguientes condiciones deben satisfacerse para un objeto m de tipo T :
| Expresión | Requerimiento | Efectos |
|---|---|---|
m.name() | El tipo de salida debe ser convertible en irs::string_ref | Un valor usa como nombre clave. |
m.write(irs::data_output& out) | El tipo de salida debe ser convertible para bool. | Uno puede escribir datos arbitrarios para transmitir denotados por out para recuperar el valor escrito usando la API index_reader más tarde. Si nada ha escrito pero el valor devuelto es true entonces el valor almacenado se trata como bandera. Si el valor devuelto es false entonces no se almacena nada incluso si se ha escrito algo en out transmisión. |
Se instancia una abstracción de almacenamiento de datos que puede almacenar datos en la memoria o en el sistema de archivos, según la implementación de la implementación. Un directorio almacena al menos todas las versiones/revisiones de datos de índice actualmente en uso. Para el caso en el que no hay usuarios activos del directorio, al menos se almacena al menos la última versión/revisión de datos. Las versiones/revisiones de datos no utilizadas se pueden eliminar a través del directorio_cleaner. Una sola versión/revisión del índice se compone de uno o más segmentos asociados y posiblemente compartidos, con dicha versión/revisión.
Un objeto de presentación por directorio de una sola instancia que se utiliza para indexar datos. Los datos pueden indexarse por documento o obtenidos de otro lector para la funcionalidad de fusión de directorio trivial. Cada commit() de un escritor produce una nueva versión/revisión de la vista de los datos en el directorio correspondiente. Además, la interfaz también proporciona capacidades de desfragmentación del directorio para permitir la compactación de múltiples segmentos de versión/revisión más pequeños en representaciones más compactas más grandes. Un escritor admite transacciones de dos fases a través de métodos begin() / commit() / rollback() .
Una vista reutilizable/refrescable de un índice en un momento dado. Múltiples lectores pueden usar el mismo directorio y pueden apuntar a diferentes versiones/revisiones de datos en dicho directorio.
v3.10 o posterior
V1.57.0 o posterior (solo encabezados)
BOOST_ROOT= < path-to > /boost_1_57_0make
make installo punto LZ4_ROOT en el directorio de origen para construir junto con IRESEARCH
Si compila IRESearch con/mt add add_definitions ("/mtd") al final de cmake_unofficial/cmakelists.txt ya que cmake ignorará el argumento de la línea de comandos -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 installo punto LZ4_ROOT en el directorio de origen para construir junto con IRESEARCH
LZ4_ROOT= < install-path >Binarios WIN32 también disponibles en:
v53 o superior
./configure --disable-samples --disable-tests --enable-static --srcdir= " $( pwd ) " --prefix= < install-path > --exec-prefix= < install-path >
make installo apunte la ICU_ROOT en el directorio de origen para construir junto con IreSearch o mediante el administrador de paquetes de las distribuciones: libicu
Busque el enlace: "Binarios ICU4C"
ICU_ROOT= < path-to-icu >El CMAKELists personalizado.txt está destinado a usarse con Snowball v2.0.0 y versiones posteriores. Al menos se probó para trabajar en 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 .o apunte snowball_root en el directorio de origen para construir junto con Iresearch o mediante el administrador de paquetes de las distribuciones: libstemmer
El CMAKELists personalizado.txt se basó en la revisión 5137019D68BEFD633CE8B1CD48065F41E77ED43E Las versiones posteriores pueden usarse con su propio riesgo de falla de compilación
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 .o apunte snowball_root en el directorio de origen para construir junto con IRESearch
Para construcciones estáticas:
- En MSVC Open: Build/Snowball.sln
- Establecer: Stemmer -> Propiedades -> Propiedades de configuración -> C /C ++ -> Generación de códigos -> Runtime Library = /Mtd
- Build -> Solución de construcción
SNOWBALL_ROOT= < path-to-snowball >punto vpack_root en el directorio de origen para construir junto con IRESearch
mkdir build && cd build
cmake ..
makeo apunte gtest_root en el directorio de origen para construir junto con IRESEARCH
mkdir build && cd build
cmake -g " Visual studio 12 " -Ax64 -Dgtest_force_shared_crt=ON -DCMAKE_DEBUG_POSTFIX= " " ..
cmake --build .
mv Debug ../libo apunte gtest_root en el directorio de origen para construir junto con IRESEARCH
GTEST_ROOT= < path-to-gtest >Descargue cualquier número de listas de palabras de parada, por ejemplo, desde: 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 se deja sin ser, entonces se considera que los subdirectorios de la lista de paradas específicas de la lista de paradas específicas se encuentran en el directorio de trabajo actual
git clone < IResearch code repository > /iresearch.git iresearch
cd iresearch
mkdir build && cd buildGenere el archivo de compilación <*nix>:
cmake -DCMAKE_BUILD_TYPE=[Debug | Release | Coverage] -g " Unix Makefiles " ..
- Si la compilación no encuentra algunas bibliotecas, establezca el entorno necesario> Variables (por ejemplo, boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
- Si no se encuentran la ICU o la bola de nieve de las rutas de distribución, se pueden requerir las siguientes variables de entorno adicionales:> icu_root_suffix = x86_64-linux-gnu snowball_root_suffix = x86_64-linux-gnu
Genere el archivo de compilación (WIN32):
cmake -g " Visual studio 12 " -Ax64 ..Si la compilación no encuentra algunas bibliotecas, configure las variables de entorno necesarias (por ejemplo, boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
Establezca el identificador de compilación para esta compilación (opcional)
echo " <build_identifier> " > BUILD_IDENTIFIERBiblioteca de construcción:
cmake --build .Biblioteca de prueba:
cmake --build . --target iresearch-checkInstalar biblioteca:
cmake --build . --target installCobertura de código:
cmake --build . --target iresearch-coverageHay Python Wrapper para IreSearch. WRAPPER da acceso al objeto Lector de Directorio. Para un ejemplo de uso, ver /Python /Scripts
Para construir el generador PyResearch SWIG debe estar disponible. Agregar -duse_pyResearch = ON a CMake Command -Line para generar objetivos PyResearch
Ejecutar Target PyResearch-Install
Alguna versión de los instaladores de la UCI parece no poner a disposición todas las DLL de la UCI a través de la variable de entorno de ruta, se puede necesitar un ajuste manual.
Se utiliza la versión compartida de Libiresearch. Instale IRESearch antes de ejecutar PyResearch.
Las dependencias externas de terceros deben estar disponibles para la Biblioteca IRESearch por separado. Se pueden instalar a través del sistema de administración de paquetes de distribución o la compilación desde la fuente y las variables de entorno apropiadas establecidas en consecuencia.
v1.57.0 o posterior (hilo del sistema local) utilizado para la funcionalidad no disponible en el STL (excluyendo la funcionalidad disponible en la UCI)
Se utiliza para compresión/descompresión de datos de byte/string
utilizado por analizadores para analizar, transformar y tokenizar datos de cadenas
Utilizado por los analizadores para calcular los tallos de palabras (es decir, las raíces) para una correspondencia más flexible de las palabras de idiomas no respaldados por 'bola de nieve' se realizan textualmente
Se utiliza para escribir pruebas para la biblioteca de IRESearch
utilizado para la serialización/deserialización de JSON
Utilizado por análisis :: text_analyzer para filtrar palabras de ruido que no deberían afectar el texto de texto, por ejemplo, para 'en', estos son habituales 'a', ', etc ... descargar cualquier número de listas de palabras de parada, eg desde: https://github.com/snowballstem/snowball-website/master/algorithms/*/stop.txt https://code.google.com/p/stop-words/ o crear una lista personalizada específica de las palabras de parada coloca los archivos con las palabras de parada, (UTF8 codificado con una palabra por línea, cualquier texto después de que se ignore el primer espacio público), en el directorio correspondiente a su idioma (múltiples archivos por idioma admitido y se interpretarán como una lista única))
| Filtrar | Descripción |
|---|---|
| irs :: by_edit_distance | Para el filtrado de valores basados en la distancia de Levenshtein |
| IRS :: by_granular_range | Para un filtrado más rápido de valores numéricos dentro de un rango dado, con la posibilidad de especificar rangos abiertos/cerrados |
| irs :: by_ngram_similarity | Para el filtrado de valores basados en el modelo NGRAM |
| IRS :: BY_PHRASE | Para el filtrado de valores sensible a la posición de palabras, con la posibilidad de omitir posiciones seleccionadas |
| IRS :: BY_PREFIX | Para el filtrado de prefijos de valor exacto |
| IRS :: BY_RANGE | Para el filtrado de valores dentro de un rango dado, con la posibilidad de especificar rangos abiertos/cerrados |
| irs :: by_same_position | Para el filtrado sensible de orden a términos de valores exactos |
| irs :: by_term | Para el filtrado de valores exactos |
| IRS :: by_terms | Para el filtrado de valores exactos por un conjunto de términos especificados |
| irs :: by_wildcard | Para el filtrado de valores basados en el patrón de coincidencia |
| IRS :: BynestedFilter | Para el filtrado de documentos basados en el patrón coincidente en sus subdocumentos |
| Irs :: y | Conjunción booleana de múltiples filtros, influyendo en los rangos/puntajes de documentos según corresponda |
| Irs :: o | Disjunción booleana de múltiples filtros, influyendo en los rangos/puntajes de documentos según corresponda (incluida la funcionalidad de "coincidencia mínima") |
| Irs :: no | Negación booleana de múltiples filtros |
Copyright (c) 2017-2023 Arangodb GmbH
Copyright (c) 2016-2017 EMC Corporation
Este software se proporciona bajo la licencia de software Apache 2.0 proporcionada en el archivo License.md. La información de licencia para los productos de terceros utilizados por el motor de búsqueda de IreSearch se puede encontrar en tercero_party_readme.md