Xapian é uma biblioteca Open Source Informações probabilística Retrieval, liberado sob a GPL. Iss Xapian escrito em C, com ligações para permitir o uso de outros idiomas (Perl, Java, Python, PHP e TCL são suportados atualmente; Guile e C # estão sendo trabalhadas).
Xapian é projetado para ser um kit de ferramentas altamente adaptável para permitir que desenvolvedores adicionem facilmente avançados de indexação e pesquisa facilidades para seus próprios aplicativos.
Se você está atrás de um motor de busca embalado para o seu site, você deve dar uma olhada no Omega, que é uma aplicação nós fornecemos construída sobre Xapian. Mas, ao contrário da maioria dos outros soluções de pesquisa website, a versatilidade do Xapian permite estender Omega para atender às suas necessidades à medida que crescem
Características :.
- < li> Software Livre / Open Source -. licenciado sob a GPL
- altamente portátil - funciona em muitos Linux, MacOS X, muitas outras plataformas Unix e Microsoft Windows .
- Escrito em C. Vinculações Perl estão disponíveis no módulo de pesquisa :: Xapian no CPAN. Vinculações Java JNI estão incluídas no módulo Xapian-ligações. Apoiamos também SWIG que pode gerar ligações para 13 idiomas. Actualmente, aqueles para Python, PHP 4, e TCL estão funcionando. Guile e C # estão sendo trabalhadas.
- busca Classificado probablistic - palavras importantes têm mais peso do que as palavras sem importância, para que os documentos mais relevantes são mais propensos a se aproximar do topo da lista de resultados .
- feedback de relevância - dado um ou mais documentos, Xapian pode sugerir os termos de índice mais relevantes para expandir uma consulta, os documentos sugerem relacionados, classificar documentos, etc .
- frase e busca proximidade -. Usuários podem pesquisar por palavras que ocorrem em uma frase exata ou dentro de um determinado número de palavras, seja em uma ordem específica, ou em qualquer ordem
- Uma gama completa de operadores de pesquisa boolean estruturados (& quot; de ações não comercializar & quot ;, etc). Os resultados da pesquisa booleana são classificados pelos pesos probablistic. Filtros booleanos também pode ser aplicado para restringir uma pesquisa probabilística.
- Suporta decorrentes de termos de pesquisa (por exemplo, uma pesquisa por & quot; de futebol & quot; recuperaria documentos que mencionam & quot; bolas de futebol & quot; ou & quot; futebolista & quot;). Isso ajuda a encontrar documentos relevantes que poderiam passar despercebidos. Derivações estão incluídas para Dinamarquês, Holandês, Inglês, finlandês, francês, alemão, italiano, norueguês, Português, russo, espanhol e sueco.
- Suporta arquivos de banco de dados & gt; 2GB -. Essencial para a transição para grandes coleções de documentos
- Plataforma formatos de dados independentes -. você pode construir um banco de dados em uma máquina e busca-lo em outro
- Permite atualização simultânea e pesquisa. Novos documentos tornam-se pesquisáveis imediatamente.
- Assim como a biblioteca, nós fornecemos uma série de pequenos programas de exemplo, e uma aplicação maior - uma indexação e aplicativo chamado ômega-base CGI:
- O indexador fornecido pode indexar HTML, PHP, PDF, PostScript e texto simples. Adicionar suporte para a indexação de outros formatos é fácil, onde filtros de conversão estão disponíveis (por exemplo, Microsoft Word). Esse indexador funciona usando o sistema de arquivamento, mas nós também fornecemos um script para permitir que o rastreador htdig web para ser viciado em, permitindo que sites remotos a ser pesquisado usando Omega.
- Você também pode dados de índice de qualquer SQL ou outros RDBMS suportados pelo módulo Perl DBI. Isso inclui MySQL, PostgreSQL, SQLite, Sybase, MS SQL, LDAP, e ODBC.
- Pesquisa CGI front-end fornecido com aparência altamente personalizável. Isso também pode ser personalizado para resultados de saída em XML ou CSV, o que é útil se você estiver gerando dinamicamente páginas (por exemplo, com o PHP ou mod_perl) e quer apenas resultados de pesquisa matérias que você pode processar em seu próprio código de layout de página.
O que é novo nesta versão:
- Esta versão corrige alguns bugs e adiciona alguns novos recursos .
O que é novo na versão 1.2.4:
- Esta versão adiciona uma API para a fusão e compactação de bases de dados , faz com que muitas melhorias para Omega, inclui novas ligações baseado em Perl gole e corrige alguns vazamentos de memória em ligações Python.
O que é novo na versão 1.0.22:
- Esta versão corrige vários pequenos bugs e melhora a portabilidade .
O que é novo na versão 1.0.21:
- API Xapian-core:
- Xapian :: Stem reconhece agora & quot; nb & quot; e & quot; nn & quot; códigos adicionais para os stemmer norueguês.
- Xapian :: QueryParser agora analisa corretamente um termo curinga entre dois outros termos (ticket # 484).
- Matcher:
- OP_OR poderia ignorar um documento correspondente se deteriorado a OP_AND ou OP_AND_MAYBE durante a partida em alguns casos. Correções ticket # 476.
- OP_XOR com subqueries não-folha poderia ignorar documentos correspondentes, em alguns casos, e OP_XOR de três ou mais sub-consultas poderia retornar pesos incorretos. Correções ticket # 475.
- OP_OR é agora mais eficiente se uma subconsulta é potencialmente caro (por exemplo OP_VALUE_RANGE, OP_NEAR, OP_PHRASE, PostingSource). A 10 vezes de aumento de velocidade com OP_VALUE_RANGE tem sido observado.
- Build System:
- Instale arquivos para fazer Xapian mais fácil de usar com cmake.
- Portabilidade:
- Em processadores x86, Xapian agora optam usando instruções SSE2 PF. Isso evita problemas com o excesso de precisão e um pouco mais rápido também. Se você precisa para suportar processadores sem SSE2 (isso significa pré-Pentium4 para Intel), em seguida, configurar com --disable-sse. (Ticket # 387)
O que é novo na versão 1.0.18:
- QueryParser:
- Melhorar o suporte para idiomas como o birmanês que usam Unicode encerrando marca e combinando personagens marca espaçamento.
- Flint backend:
- Ao atualizar documentos, não atualize postando entradas que não mudaram (ticket # 250).
- Corrigir código de bloqueio para trabalhar se stdin e / ou stdout foram fechadas.
O que é novo na versão 1.0.13:
- API:
- Xapian :: Documento não nunca armazena valores vazios explicitamente. Este não foi um comportamento intencional, e como este caso foi tratado não foi documentada. O comportamento alterado é consistente com a forma como os metadados do usuário é tratado. Esta mudança não é observável usando Document :: get_value (), mas pode ser notado quando a iteração com Document :: values_begin (), usando Document :: values_count (), ou tentando eliminar o valor com Document :: remove_value ().
- testsuite:
- Fix testcase scaleweight4 não falhar em x86 quando compilado com -O0. O problema estava no código testcase, e foi causado pelo excesso de precisão nos valores de FP intermediários.
- testcases que verificam que as operações têm a O (...) comportamento esperado nenhuma verificação de tempo de CPU em vez do tempo wallclock na maioria das plataformas, que deve eliminar falhas ocasionais devido à carga picos de outros processos.
- (ticket # 308)
- falhas nos testes Fix devido a SKIP_TEST_FOR_BACKEND (& quot; InMemory & quot;) não pular quando deveria devido a comparação de seqüências de char com == (no tronco o valor de retorno que está sendo testado é std :: string em vez de const char *)
- Melhorar a cobertura de teste em vários casos de canto.
- Fix testcase consistency2 para realmente ser executado (felizmente ele passa).
- Nos casos de teste gerados, ligue get_description () sobre o objeto padrão construído de cada classe para se certificar de que funciona (e não tenta eliminar referência NULL, ou deixar alguma afirmação, etc). Todas as classes atualmente verificados são muito bem - isso é para evitar regressões futuros ou esses problemas com novas classes .
- Na construção de cobertura de teste, use & quot; - Cobertura & quot; em vez de & quot; -fprofile-arcos -ftest-cobertura & quot;.
- O equipamento de teste agora tem o backend InMemory sinalizado como apoio metadados especificado pelo usuário (além de iteração sobre teclas de metadados).
- matcher:
- Se uma consulta contém uma subconsulta MatchAll, verificar para ele antes de verificar as demais condições para que o loop que verifica quantos termos jogo pode sair mais cedo se eles durante todo o jogo.
- Quando um OR ou ANY_MAYBE deteriorado a uma AND, estávamos trocando cuidadosamente as crianças para a máxima eficiência, mas a condição foi revertida por isso, foram, de facto, tornar as coisas piores. Isto foi notado porque estava resultando na mesma consulta correr mais rápido quando mais resultados foram convidados para!
- Apenas construir o termname para termfreq e mapa de peso para o primeiro subdatabase em vez de reconstruí-lo para cada um. Também não copie este mapa para devolvê-lo. Isso deve acelerar as pesquisas um pouco, especialmente aqueles com mais de múltiplos bancos de dados.
- Se um submatcher falha, mas ErrorHandler diz-nos a continuar sem ele, nós apenas usar um ponteiro NULL para ficar em vez de alocar um manequim objeto especial titular lugar.
- Remover AndPostList, em favor de MultiAndPostList. AndPostList foi usado apenas como um produto do decaimento (por AndMaybePostList e OrPostList), e não parece ser mais rápido. Removê-lo reduz a pressão de cache da CPU, e é menos código de manter.
- cheque Call () em vez de skip_to () sobre o ramo opcional de AND_MAYBE.
- sílex backend:
- Corrigir um erro no TermIterator :: skip_to () as chaves de metadados.
- backend remoto:
- Corrigir opção --interface xapian-tcpsrv para trabalhar no MacOS X (ticket # 373).
- Fix typo que nos fez retornar o docid em vez do peso máximo de um documento a partir de um jogo remoto pode voltar! Isso poderia ter levado a resultados errados ao pesquisar vários bancos de dados com o servidor remoto, mas, provavelmente, geralmente não importa como com BM25 os pesos são geralmente pequenas (muitas vezes tudo & # X3C; 1), enquanto docIDs são inevitavelmente & # x3e; = 1 .
- InMemory backend:
- O backend InMemory não suporta a iteração sobre teclas de metadados. Tentando fazê-lo usado para dar uma iteração vazio, mas agora foi corrigido para jogar
- UnimplementedError (e essa limitação já foi documentado).
- sistema de construção:
- Remover um monte de inclusões de cabeçalho não utilizados e algum código não utilizado, que deve fazer a compilação mais rápido e um pouco menor.
- Fix para compilar sob --disable-backend-sílex, --disable-backend remoto e --disable-backend-InMemory.
- Não remova quaisquer fontes construídas em & quot; make clean & quot; mesmo sob-mantenedor-mode --faça como que quebra a mudança de uma árvore longe de-mode mantenedor com: fazer distclean; ./ configure
- configure: Ativar mais avisos do CCG - & quot; -Woverloaded virtual & quot; para todas as versões, & quot; -Wstrict-null-sentinela & quot; para 4.0+, & quot; -Wlogical-op -Wmissing-declarações & quot; para 4.3+. Notavelmente & quot; -Wmissing-declarações & quot; capturados que consistency2 não estava sendo executado.
- Internamente, corrigir os poucos lugares onde passamos std :: string por valor para passar por referência const vez (exceto quando precisamos de uma cópia modificável de qualquer maneira) como benchmarking mostra que const referência é ligeiramente mais rápido e gera menos código com a referência do GCC contadas implementação std :: string - com uma implementação de referência não-contadas, referência const deve ser muito mais rápido. (Ticket # 140)
- documentação:
- INSTALAR:. Testamos já não regularmente construir com GCC 2.95.4 e nós estamos levantando a versão mínima necessária para GCC 3.1 para 1.1.x Xapian
- Documento que passageiras maxitems = 0 para Informe :: get_mset () faz.
- docs / queryparser.html: Adicione exemplos de usar um prefixo em uma frase ou subexpression .
- comentários doxygen correto para funções de metadados do usuário:. :: Banco de Dados get_metadata () jogar UnimplementedError mas WritableDatabase :: set_metadata () pode
- Os documentos que o Database :: metadata_keys_begin () retorna um iterador final se o backend não suporta metadados.
- Hacking:. Atualizar a lista de pacotes Debian / Ubuntu necessários para um ambiente de desenvolvimento
- código de depuração:
- Corrigir construir com --enable-debug.
- Adicionado mais algumas afirmações.
O que é novo na versão 1.0.11:
- Esta versão corrige vários bugs e adiciona suporte para Omega para a indexação de 2007 formatos do MS Office e arquivos XPS.
O que é novo na versão 1.0.10:
- Esta versão corrige um possível caso de corrupção de banco de dados se o disco enche-se ao escrever fora alterações.
- O lockfile para um banco de dados de sílex agora é criado usando a configuração de umask.
- Anteriormente, não era possível abrir um banco de dados de sílex para atualização se era de propriedade de outro usuário, mesmo com permissões suficientes através de & quot; grupo & quot; ou & quot; outro & quot;.
- Compor uma consulta OP_NEAR com duas subconsultas non prazo agora lança UnimplementedError em vez de AssertionError.
O que é novo na versão 1.0.9:
- correção ortográfica é agora ainda mais rápido. (A 15% velocidade de até foi medido.)
- Dois erros causados pelo excesso de precisão no Linux x86 foram corrigidos.
- Consulta :: MatchAll agora dá pesos iguais para todos os documentos.
- Um acidente durante a compactação da tabela a ortografia foi corrigido.
- O exemplo copydatabase agora cópias de metadados do usuário também.
- O binário CGI omega agora pega e relatórios std :: exceção.
Comentários não encontrado