Pergunta

Estamos criando uma fonte aberta Twitter cliente e estão à procura de um DB incorporado com o menor pegada possível , que trabalha com Delphi e que se bem ao pesquisa de texto completo (Eu sei que doesn empresta' t ir com pequena pegada muito bem). Idealmente, deve ser fonte livre ou aberto também (exigindo eu sei).

Estou inclinado a SQLite , mas eu nunca usei isso antes e não sei se ele suporta pesquisa de texto completo, ou como ele funciona bem com Delphi. Eu usei DBISAM antes e ele é incorporado com pesquisa de texto completo , mas não é livre. Firebird é outra opção que consideramos.

Pode haver uma combinação que faz este trabalho. O que você usa, e como ele se classifica para 1) Pegada, 2) pesquisa de texto completo, 3) Livre / Open source.

UPDATE: Obrigado a todos por suas sugestões. Tantas opções boas para escolher.

Foi útil?

Solução

Eu tive muito sucesso usando DiSQLite . Ele tem suporte FTS e uma tonelada de outras características. Eles têm uma versão gratuita e uma versão Professional. Eu acredito que a versão gratuita faz FTS bem. Eu tentei muitas das implementações do SQLite para Delphi e este é o melhor que eu já vi. Ele compila em linha reta em sua aplicação para que não haja DLLs externas.

Eu olhei para um monte de bibliotecas livres lá fora para bancos de dados incorporados em Delphi e muitos não são mais suportadas, nunca foi lançado, ou só o trabalho em Delphi5.

Outras dicas

Advantage Database Server tem um motor de servidor local livres de direitos autorais (bloqueio multi-threaded e gravar nível), componentes grande Delphi TDataSet descendente (código fonte incluído), e um grande motor de pesquisa de texto completo.

Advantage completos suportes de pesquisa de texto AND, OR, NOT e operadores próximo. Vantagem também fornece funções de pontuação e escalares SCOREDISTINCT que retornam a contagem total de todas as ocorrências de palavras na condição de procura.

Advantage índices de texto completo são mantidos em tempo de atualização de registro que significa que eles não exigem qualquer reconstruções. Os índices são em formato de comprimido; Por conseguinte, o tamanho do índice actual pode ser muito menor do que os dados físicos. É possível realizar pesquisas de texto completo em dados não-indexados, mas isso requer uma pesquisa física dos dados do registro e pode ser muito mais lento. Pesquisas indexados usar filtros de bitmap para um ótimo desempenho.

A ajuda online tem todos os detalhes, tanto quanto opções de indexação, etc .:

http://tinyurl.com/ctjoqg

Eu sei firebird tem a esfinge add-on para o pleno pesquisa de texto (embora de acordo com o site lá é 'longe de 'pesquisa de texto completo' real'), sua fonte livre / aberto, mas eu não consigo encontrar nenhuma informação para dizer se ele funciona com a versão integrada do firebird.

Para Firebird Full-Text Search olhada: http://www.firebirdfaq.org/faq328/

Leonardo.

Nós integramos DotLucene em um dos nossos aplicativos internos baseados em Delphi, usando Hydra (Mike fez o trabalho em que, na época); se isso é uma opção que nós queremos buscar aqui, eu tenho certeza que podemos extrair isso e torná-lo reutilizável para este projeto

Vá em frente com SQLite . Há uma grande quantidade de componentes livres SQLite para Delphi. Alguns deles deixaram de ser projetos ativos. Mas um componente de nota é ZeosDB . ZeosDB é mantido ativamente e seu apoio sqlite é perfeito também. No caso de você precisa outros apoios do motor DB, ZeosDB é a resposta novamente (ele suporta MySQL, PostgreSQL, Interbase, Firebird, MS SQL, Sybase, Oracle e SQLite).

NexusDB tem um livre incorporado versão e, claro, é um produto nativo Delphi.

Aqui está uma descrição dele é texto completo implementação pesquisa .

Eu sugiro que DBISAM, ou agora, provavelmente, a sua mais recente ElevateDB, deve ser fortemente considerada. A partir da sua experiência anterior eu espero que você sabe que não acrescenta muito o tamanho de seu executável, é razoavelmente rápido, solução confiável, perfeito baseado em Delphi, e tem um excelente suporte. Ao longo dos anos seu dialeto SQL foi refinado por isso é agora muito agradável com alto grau de ANSI SQL-2003 de conformidade.

DBISAM / ElevateDB é como você note que não open source, mas o custo de licenciamento é por desenvolvedor apenas (e não por implantação) por isso, se há apenas alguns poucos desenvolvedores envolvidos, o custo é (na minha opinião) desprezível. Licenciamento custo é especialmente razoável quando se considera o nível de apoio e capacidade de resposta que você começa em newsgroups DBISAM / Elevatesoft, onde o principal desenvolvedor / proprietário (Tim Young) está ativamente responder a perguntas envolvidos e resolução de problemas. Além do custo de uma solução proprietária, há, naturalmente, também preocupação sobre se o negócio vai sobreviver e produto continuará a ser desenvolvido e suportado no futuro. Isso é algo que você tem que pesar para si mesmo, mas o desenvolvimento parece tão forte como nunca. Eles têm provedores de .NET para o seu db de, e apoiar o desenvolvimento multi-plataforma com FreePascal / Lázaro.

Um mais a pesquisa de texto completo do DBISAM é que ele é totalmente integrado para o SQL. Ou seja, você pode emitir uma única instrução SELECT que diretamente combina ordinária onde os critérios em alguns campos com critérios de pesquisa de texto completo sobre os outros. Dependendo de suas necessidades, este é um bom recurso que faz com que seja muito simples e rápido de fazer algumas coisas que levariam mais trabalho usando uma solução de texto completo diferente. Acho que a maioria add-on soluções, como Lucene e outras que possam ser usados ??com Firebird, não integram como em estreita colaboração com SQL regular e restringi-lo a recuperar um conjunto de registros com apenas critérios de texto completo. Algo como add-on proprietária da Textolution para Firebird ( http://www.textolution.com/ftsib_example.asp ) parece que poderia acomodar a construção de consulta único complexo (aninhados) que se aplica a ambos os critérios regulares e texto completo, mas DBISAM faz isso de forma mais elegante. E adicionando um add-on de propriedade de um tipo db open source de derrotas o propósito de ir open source, de qualquer maneira.

Uma lacuna de pesquisa de texto completo do DBISAM / ElevateDB, eu acho, é que é suportes só uso de 'E' e 'ou' condições, não tem qualquer pesquisa por proximidade.

Eu noto que há uma solução de texto completo para o SQLite, http: // www. sqlite.org/cvstrac/wiki?p=FullTextIndex . Eu não usei sempre SQLite, mas eu conheço um monte de pessoas adoram. Uma área em que eu tenho certeza que DBISAM / Elevatesoft tem grande vantagem é em aplicações multi-usuário onde é necessária funcionalidade bloqueio robusto, embora isso não necessariamente carregam algum peso em tudo para aplicativo de desktop de usuário único.

Eu iria com Sqlite usando Aducom SQLite componentes, eles são fáceis de trabalhar com sqlite que DiSQLite, livre e trabalhar como componentes TDataset, eu votaria para sqlite porque:

  1. É muito rápido e banco de dados compacto.
  2. pegada muito pequena, apenas em torno de 200kb DLL.
  3. É pode ser ligado estática quando usado com Aducom componentes, por isso há necessidade de distribuir a dll.
  4. Foi construído em suporte para pesquisa de texto completo.
  5. É usado descontroladamente e usados ??em muitas aplicações livres e comerciais como armazenamento externo.
  6. Tem mais de SQL padrão, então a maioria de seu conhecimento em SQL será usado.

Sqlite é praticamente único usuário / única conexão única. Fazendo uma atualização bloqueia todo o banco de dados. Você lida com isso definindo um valor de tempo limite para outras conexões de espera (padrão é sem limite de tempo). acesso multi-usuário pode tornar-se muito lento e / ou dar tempo limite frequente consoante o valor que você usa.

Eu tenho usado os componentes Asqlite de http://www.aducom.com/ . livre e open source. atualmente não suporta D2009 pela aparência, mas está em desenvolvimento. Há uma série de outros conjuntos de componentes tão bem, mas eu não usei qualquer outro.

Você pode adicionar pesquisa de texto completo para qualquer aplicativo delphi usando Rubicon (agora sob nova gestão em http: // www .href.com / rubicon ). No entanto, este não é livre: (

Por que você precisa de uma pesquisa de texto completo para este? Eu não uso o Twitter, bu Acredito Twitter mensagens são 140 caracteres no máximo? Estes caberia em um campo varchar. Você não precisa de pesquisa de texto completo para encontrar algo em tal campo a.

Há também DotLucene, que exige que o .NET framework para ser instalado, mas pode ser facilmente carregado através do .net com apis. É ideal para pesquisar e tem um formato de consulta que é comum à maioria dos motores de busca.

Eu tenho uma solução Delphi semi-trabalhando aqui: http://sourceforge.net/projects/mutis/ , uma porta para Delphi de Lucene.

O mayority de que funcionam bem, mas unfortunally foi baseada na implementação Delphi.NET morte por isso o trabalho requiere a atualização para um nativo (sim, foi um grande erro tomar a rota .NET :()

DBISAM todo o caminho. Obras, muito sólido, incorporado, indexação de texto completo funciona muito bem (extensa experiência pessoal!)

ElevateDB é prov também grande, mas não tenho experiência direta com ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top