A biblioteca do IRESEARCH deve ser tratada como um índice independente que é capaz de indexar e armazenar valores individuais literalmente. Os dados indexados são tratados com base por versão/revisão, ou seja, a versão/revisão de dados existentes nunca é modificada e as atualizações/remoções são tratadas como novas versões/revisões dos referidos dados. Isso permite operações triviais de leitura/gravação multitrinadas no índice. O índice expõe sua funcionalidade de processamento de dados por meio de uma interface "escritor" com vários threads que trata cada abstração do documento como uma coleção de campos para indexar e/ou armazenar. O índice expõe sua funcionalidade de recuperação de dados via interface 'leitor' que retorna registros de um índice que corresponde a uma consulta especificada. As perguntas em si são construídas em árvores de consulta construídas diretamente usando os blocos de construção de consultas disponíveis na API. A infraestrutura de consulta fornece a capacidade de solicitar o resultado do resultado por uma ou mais implementações de classificação/pontuação. A lógica de implementação de classificação/pontuação é baseada em plug-in e preguiçosa, conforme o tempo de execução, conforme necessário, permitindo a adição de lógica de classificação/pontuação personalizada sem a necessidade de recompilar a biblioteca do IRESEARCH.
Um índice consiste em múltiplas peças independentes, chamadas segmentos e metadados de índice. Os metadados do índice armazenam informações sobre segmentos de índice ativo para a versão/revisão do índice específico. Cada segmento de índice é um índice e consiste nos seguintes componentes lógicos:
Leia/gravação Acesso aos componentes transportados por formatos baseados em plug-in. O índice pode conter segmentos criados usando formatos diferentes.
Um registro de banco de dados é representado como uma abstração chamada documento. Um documento é na verdade uma coleção de campos indexados/armazenados. Para serem processados, cada campo deve satisfazer pelo menos um conceito IndexedField ou StoredField .
Para que o tipo T seja IndexedField , as seguintes condições devem ser satisfeitas para um objeto m do tipo T :
| Expressão | Requer | Efeitos |
|---|---|---|
m.name() | O tipo de saída deve ser conversível para irs::string_ref | Um valor usa como um nome -chave. |
m.get_tokens() | O tipo de saída deve ser conversível para irs::token_stream* | Um fluxo de token usa para preencher no procedimento invertido. Se o valor for nullptr , o campo é tratado como não indexado. |
m.index_features() | O tipo de saída deve ser implicitamente conversível ao irs::IndexFeatures | Um conjunto de recursos solicitados para avaliação durante a indexação. Por exemplo, pode conter a solicitação de posições e frequências de processamento. Posteriormente, as informações avaliadas podem ser usadas durante a consulta e a pontuação. |
m.features() | O tipo de saída deve ser conversível para const irs::flags& | Um conjunto de recursos fornecidos pelo usuário para serem associados a um campo. Por exemplo, pode conter a solicitação de armazenamento de normas de campo. Posteriormente, as informações armazenadas podem ser usadas durante a consulta e a pontuação. |
Para que o Tipo T seja StoredField , as seguintes condições devem ser satisfeitas para um objeto m do tipo T :
| Expressão | Requer | Efeitos |
|---|---|---|
m.name() | O tipo de saída deve ser conversível para irs::string_ref | Um valor usa como um nome -chave. |
m.write(irs::data_output& out) | O tipo de saída deve ser conversível para BOOL. | Pode -se escrever dados arbitrários a serem transmitidos por out a fim de recuperar o valor por escrito usando a API Index_Reader posteriormente. Se nada escreveu, mas o valor retornado é true , o valor armazenado é tratado como sinalizador. Se o valor retornado for false , nada será armazenado, mesmo que algo tenha sido gravado para out fluxo. |
Uma abstração de armazenamento de dados que pode armazenar dados na memória ou no sistema de arquivos, dependendo de qual implementação é instanciada. Um diretório armazena pelo menos todas as versões/revisões de dados do índice atualmente em uso. Para o caso em que não há usuários ativos do diretório, pelo menos a última versão/revisão dos dados é armazenada. As versões/revisões de dados não utilizadas podem ser removidas através do diretório_cleaner. Uma única versão/revisão do índice é composta por um ou mais segmentos associados e possivelmente compartilhados, com a referida versão/revisão.
Um único objeto por direção por diretório usado para indexar dados. Os dados podem ser indexados em base por documento ou provenientes de outro leitor para funcionalidade de mesclagem de diretório trivial. Cada commit() de um escritor produz uma nova versão/revisão da visão dos dados no diretório correspondente. Além disso, a interface também fornece recursos de desfragmentação de diretório para permitir a compactação de vários segmentos de versão/revisão menores em representações maiores. Um escritor suporta transações bifásicas via métodos begin() / commit() / rollback() .
Uma visão reutilizável/refrescável de um índice em um determinado momento. Vários leitores podem usar o mesmo diretório e podem apontar para diferentes versões/revisões dos dados no referido diretório.
v3.10 ou mais tarde
v1.57.0 ou mais tarde (apenas cabeçalhos)
BOOST_ROOT= < path-to > /boost_1_57_0make
make installou Point LZ4_ROOT no diretório de origem para construir junto com o IRESEARCH
Se compilar o IRESECH com/mt add add_definitions ("/mtd") até o final de cmake_unofficial/cmakelists.txt, pois o cmake ignorará o argumento da linha de comando -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 no diretório de origem para construir junto com o IRESEARCH
LZ4_ROOT= < install-path >Binários Win32 também disponíveis em:
v53 ou superior
./configure --disable-samples --disable-tests --enable-static --srcdir= " $( pwd ) " --prefix= < install-path > --exec-prefix= < install-path >
make installou Point UTI_ROOT no diretório de origem para construir junto com o IRESEARCH ou através do gerenciador de pacotes das distribuições: Libicu
Procure o link: "Binários do ICU4C"
ICU_ROOT= < path-to-icu >O cmakelists.txt personalizado deve ser usado com versões de bola de neve v2.0.0 e posteriores. Pelo menos foi testado para trabalhar no 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 no diretório de origem para construir junto com o IRESEARCH ou através do gerenciador de pacotes das distribuições: LibStemmer
O Cmakelists.txt personalizado foi baseado na revisão 5137019D68BEFD633CE8B1CD48065F41E77ED43E versões posteriores podem ser usadas por sua conta e risco de falha de compilação
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 no diretório de origem para construir junto com o IRESEARCH
Para construções estáticas:
- No MSVC Open: Build/Snowball.sln
- SET: STEMMER -> Propriedades -> Propriedades de configuração -> C /C ++ -> Geração de código -> Library de tempo de execução = /mtd
- Build -> Build Solution
SNOWBALL_ROOT= < path-to-snowball >Point Vpack_root no diretório de origem para construir junto com o IRESEARCH
mkdir build && cd build
cmake ..
makeou ponto gtest_root no diretório de origem para construir junto com o iResearch
mkdir build && cd build
cmake -g " Visual studio 12 " -Ax64 -Dgtest_force_shared_crt=ON -DCMAKE_DEBUG_POSTFIX= " " ..
cmake --build .
mv Debug ../libou ponto gtest_root no diretório de origem para construir junto com o iResearch
GTEST_ROOT= < path-to-gtest >Faça o download de qualquer número de listas de palavras de parada, por exemplo, de: https://github.com/snowballstem/snowball-website/tree/master/algorithms/*/stop.txt https://code.google.com/pwords/
IRESEARCH_TEXT_STOPWORD_PATH= < path-to-stopword-lists >Se a variável iresearch_text_stopword_path for deixada desmembrada, então os subdiretórios específicos da lista de palavras de parada do local serão considerados localizados no diretório de trabalho atual
git clone < IResearch code repository > /iresearch.git iresearch
cd iresearch
mkdir build && cd buildgerar arquivo de compilação <*nix>:
cmake -DCMAKE_BUILD_TYPE=[Debug | Release | Coverage] -g " Unix Makefiles " ..
- Se algumas bibliotecas não forem encontradas pela construção, defina o ambiente necessário> variáveis (por exemplo, boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
- Se a UTI ou a bola de neve dos caminhos de distribuição não forem encontrados, as seguintes variáveis adicionais> ambiental podem ser necessárias:> ÍCU_ROOT_SUFFIX = x86_64-linux-gnu Snowball_root_suffix = x86_64-linux-gnu
Gere o arquivo de construção (Win32):
cmake -g " Visual studio 12 " -Ax64 ..Se algumas bibliotecas não forem encontradas pela construção, defina as variáveis de ambiente necessárias (por exemplo, boost_root, boost_librarydir, lz4_root, openfst_root, gtest_root)
Definir identificador de construção para esta compilação (opcional)
echo " <build_identifier> " > BUILD_IDENTIFIERbiblioteca de construção:
cmake --build .Biblioteca de testes:
cmake --build . --target iresearch-checkBiblioteca de instalação:
cmake --build . --target installCobertura de código:
cmake --build . --target iresearch-coverageHá um invólucro Python para o IRESEARCH. O invólucro dá acesso ao objeto do leitor de diretório. Para uso de exemplo, veja /python /scripts
Para construir o gerador SWIG do PyResearch, deve estar disponível. Adicionar -duse_pyresearch = ON à linha de comando cmake para gerar metas de pyresearch
Execute o Target PyResearch-Install
Alguma versão dos instaladores da UTI parece deixar de disponibilizar todas as DLLs de UTI através da variável Enviroment, o ajuste manual pode ser necessário.
A versão compartilhada do libiresearch é usada. Instale o iResearch antes de executar o PyReSearch.
As dependências externas de terceiros devem ser disponibilizadas à biblioteca do IRESEARCH separadamente. Eles podem ser instalados através do sistema de gerenciamento de pacotes de distribuição ou construir a partir da fonte e as variáveis de ambiente apropriadas definidas de acordo.
v1.57.0 ou posterior (encadeamento do sistema de localidade) usado para funcionalidade não disponível no STL (excluindo a funcionalidade disponível na UTI)
Usado para compressão/descompressão de dados de byte/string
Usado pelos analisadores para analisar, transformar e tokenizando dados de string
Usado pelos analisadores para calcular as hastes de palavras (ou seja, raízes) para correspondência mais flexível de correspondência de palavras de idiomas não suportados por 'Snowball' são feitos literalmente
Usado para escrever testes para a biblioteca do IRESEARCH
Usado para serialização/desserialização JSON
used by analysis::text_analyzer for filtering out noise words that should not impact text ranging eg for 'en' these are usualy 'a', 'the', etc... download any number of lists of stopwords, eg from: https://github.com/snowballstem/snowball-website/tree/master/algorithms/*/stop.txt https://code.google.com/p/stop-dords/ ou crie uma lista de palavras de parada específica de linguagem personalizada, coloque os arquivos com palavras de parada, (UTF8 codificado com uma palavra por linha, qualquer texto após o primeiro espaço em branco é ignorado), no diretório correspondente ao seu idioma (vários arquivos por idioma são apoiados e serão interpretados como uma lista de uma única lista), no diretório correspondente (vários arquivos por idioma são apoiados e serão interpretados como uma lista de um único idioma (múltiplo de idioma é apoiado e será interpretado)
| Filtro | Descrição |
|---|---|
| IRS :: by_edit_distance | Para filtrar valores com base na distância de levanteshtein |
| IRS :: by_granular_range | Para filtragem mais rápida de valores numéricos dentro de um determinado intervalo, com a possibilidade de especificar intervalos abertos/fechados |
| IRS :: by_ngram_similaridade | Para filtrar valores com base no modelo Ngram |
| IRS :: by_phrase | Para filtragem de valores sensíveis à posição de palavra, com a possibilidade de pular posições selecionadas |
| IRS :: by_prefix | Para filtrar prefixos de valor exato |
| IRS :: by_range | Para filtrar valores dentro de um determinado intervalo, com a possibilidade de especificar intervalos abertos/fechados |
| IRS :: by_same_position | Para filtragem sensível à ordem de inserção de termo de valores exatos |
| IRS :: by_term | para filtrar valores exatos |
| IRS :: by_terms | Para filtrar valores exatos por um conjunto de termos especificados |
| IRS :: by_wildcard | Para filtrar valores com base no padrão de correspondência |
| IRS :: BynestedFilter | Para filtrar documentos com base no padrão de correspondência em seus subdocumentos |
| IRS :: e | Conjunto booleano de vários filtros, influenciando as classificações/pontuações de documentos conforme apropriado |
| IRS :: ou | Disjunção booleana de vários filtros, influenciando as classificações/pontuações do documento, conforme apropriado (incluindo funcionalidade "Minimum Match") |
| IRS :: não | Negação booleana de vários filtros |
Copyright (c) 2017-2023 Arangodb GmbH
Copyright (c) 2016-2017 EMC Corporation
Este software é fornecido sob a licença de software Apache 2.0 fornecida no arquivo License.md. Informações de licenciamento para produtos de terceiros usados pelo mecanismo de pesquisa do IRESEARCH podem ser encontrados em terceiro_party_readme.md