API de pesquisa vs. Apache Solr Search

34

Estou usando o módulo Apache Solr Search no Drupal 6 e estou procurando na API de pesquisa uma instalação do Drupal 7. Eu já vi algumas discussões aqui, mas estou procurando por quaisquer razões para escolher uma ou outra.

Existe um motivo para escolher um sobre o outro? Se sim, por que ou por que não? Ouvi dizer que pode haver problemas de complexidade e / ou de desempenho com a API de pesquisa. Isso é verdade?

hross
fonte
Eu não sugeriria solr para pesquisa multilíngue. Depende de quão importante é a pesquisa multilíngüe, pois a pesquisa pode ser muito demorada. A configuração pode ser dolorosa. Para pesquisa multilíngue, seu idioma deve ser suportado pelo solr. Existem regras gramaticais que devem ser definidas para o seu idioma. Além disso, você precisa de java e solr instalados para não poder usar hospedagem compartilhada barata. Se você estiver desenvolvendo um mecanismo de pesquisa, poderá usá-lo. Se você está calculando os recursos de desenvolvimento, a pesquisa no site do Google Payd pode ser uma opção melhor! Eu mesmo sou um co-mantenedor para modulep GSS
ram4nd
Por que é que? Algum benchmark?
giorgio79
Ou desculpe, mas a configuração pode ser dolorosa. Para pesquisa multilíngue, seu idioma deve ser suportado pelo solr. Existem regras gramaticais que devem ser definidas para o seu idioma. Além disso, quando examinei os módulos, eles estavam em desenvolvimento e precisavam de mais trabalho para fazer as coisas funcionarem. Mas é o mecanismo de pesquisa mais rápido. Então você deve se perguntar: qual a importância do recurso de pesquisa para você. Além disso, você precisa de java e solr instalados para não poder usar hospedagem compartilhada barata.
Ram4nd 17/10/12
Uma das coisas que eu tive que acessar o Apache Solr em comparação à API de pesquisa foi fazer uma pesquisa de filtro de seleção múltipla. Com a API de pesquisa, parecia impossível. Solr parecia ter essa opção.
user219492
Eu mencionaria o suporte a vários sites: o SearchAPI não possui suporte a vários sites (usando o mesmo índice SOLR para armazenar o conteúdo de vários sites). Apachesolr, em vez permitem: 1. índice de múltiplas sistes contentents no mesmo índice SOLR 2. filtrar os resultados por um determinado site 3. realizar uma pesquisa somente no site local filtrar resultados de outros sites
thePanz

Respostas:

19

A partir de 2015, podemos comparar os módulos Search API vs Apache Solr Search com os números:

                   | Apache Solr Search  | Search API
Posted in:         | 2007                | 2010
Downloads:         | >2k                 | >20k
Reported installs: | >21k                | >64k
Total bugs:        | >1200               | >600
Active bugs:       | >200                | >170
Commits:           | >1.3k               | >1.5k

o que indica a escolha clara. A API de pesquisa foi desenvolvida três anos depois e conseguiu tirar proveito de seu concorrente.

Além disso, a API de pesquisa fornece uma arquitetura muito diferente e mais flexível, sendo mantida de forma mais ativa. O que é mais importante, já é compatível com o Drupal 8 e o Solr 5.x mais recentes, que o Apachesolr ainda não possui.

A API de pesquisa começou de novo e é mais flexível em sua configuração, incluindo o suporte a Views (para o Apachesolr, você precisa do módulo extra). Também existem muitos módulos que ampliam sua funcionalidade.

Em segundo lugar, para evitar que alguns problemas sejam resolvidos duas vezes pela comunidade devido a diferenças na arquitetura desses módulos, atualmente há alguns esforços combinados entre esses dois projetos, como:

  • criando a maneira comum de mostrar blocos de facetas por meio da API da faceta (também conhecida como filtros),
  • um esquema comum e arquivos de configuração solrconfig.xml,
  • os dois mantenedores trabalharam juntos e migraram as classes de conexão do módulo Apache Solr Search para a API de pesquisa.

Fonte: Battleplan for Search & Solr em Drupal 8 em Acquia

Observe que não é recomendável usar os dois módulos no mesmo ambiente.

Para análises técnicas adicionais das diferenças, verifique os detalhes abaixo.

API de pesquisa

Visão geral da API:

  • Estrutura para criar pesquisas com facilidade
  • Resumos de fontes de dados e implementações de back-end
  • Grande ecossistema com extensões, por exemplo, back-end
  • Integração de API de faceta
  • Fortemente baseado na API da entidade

    • Fornece metadados
    • Usado para configurações de índice e servidor

Recursos de extensão:

  • Preenchimento automático da API de pesquisa
  • Anexos
  • Pesquisas salvas
  • Localização
  • Caminhos de facetas bonitas
  • Controle deslizante (intervalos da API de pesquisa)
  • e muitos mais.

Estrutura básica:

Estrutura básica do módulo Solr da API de pesquisa

Recursos do índice:

  • Diferentes fontes de dados
  • Uma fonte de dados: entidades
  • Com base na API da entidade:

    • Cada propriedade pode ser indexada
    • Propriedades de entidades relacionadas podem ser indexadas

Como configurar seu índice - campos:

Como configurar o seu índice - campos no Search API Solr

Exibições da API de pesquisa:

  • Suporte total de visualizações
  • Exibir qualquer propriedade de uma entidade
  • Use qualquer campo indexado como filtro, argumento ou classificação
  • A maioria dos códigos baseados na integração de visualizações da API da entidade
  • Por padrão: dados recuperados via carregamento da entidade

    • Pode ser ignorado (configuração "Recuperar dados do Solr" no servidor)
  • Alternativa: páginas da API de pesquisa

Receitas da API de pesquisa:

  • Ganchos CRUD para índices e servidores
  • Ganchos para adicionar

    • fontes de dados
    • back-end
    • alterações de dados
    • processadores
  • Gancho disparado ao indexar itens

  • Gancho disparado ao executar uma pesquisa

Apachesolr

Recursos de extensão:

  • Anexos (sem suporte de mídia, codificação personalizada para anexos a outras entidades)
  • Localização (localização geográfica Apachesolr, localização Apachesolr)

Receitas Apachesolr:

  • Plataforma de pesquisa corporativa de código aberto
  • Fundação Apache
  • Pesquisa de texto completo, destaque, pesquisa facetada, clustering, manipulação de documentos avançados
  • Distribuído
  • Replicação / escalável
  • Java
  • HTTP REST e respostas em XML / JSON e alguns outros
  • Não relacional

Fonte: API de pesquisa vs apresentação de slides do Apachesolr


Veja também:

kenorb
fonte
Incrível artigo, obrigado! Pergunta 1: por que é aconselhável não usar os dois módulos no mesmo ambiente? Pergunta 2: As diferenças de desempenho entre os módulos são insignificantes neste momento (eu entendo que a API de pesquisa com solr agora pode indexar vários campos, portanto a carga da entidade não é mais necessária para exibir, por exemplo, imagem em miniatura com os resultados da pesquisa)?
Jordan Magnuson
@JordanMagnuson 1. Você não usa os dois módulos ao mesmo tempo, porque eles não são muito compatíveis e a maioria dos sites está lidando apenas com uma instância de pesquisa do Solr; portanto, não faz sentido usar os dois, a menos que você não se importe de duplicar o trabalho. Por exemplo, quando você precisa criar alguma visualização de pesquisa, os dois módulos oferecem integração separada com o módulo de visualizações, portanto, é necessário criar duas visualizações.
Kenorb # 03/07
@JordanMagnuson 2. Não tenho certeza sobre o desempenho, nunca tive um específico e provavelmente muda todas as versões (eu estava usando o Apachesolr há muito tempo). Se você estiver usando visualizações e facetas, normalmente usa o mecanismo de cache de visualizações, para que não se importe muito com o tempo de processamento e, claro, com cache de memórias, APC / XCache etc. O desempenho realmente depende da estrutura do site e de como os módulos interagem. de outros.
Kenorb # 03/07
Engraçado que Search API é mais usado, mas em si Acquia recomenda o uso de módulo do Apache Solr docs.acquia.com/acquia-search/search-api#animated
AlxVallejo
@AlxVallejo Eu acho que eles recomendam isso para produção, porque eles têm arquivos de configuração Apachesolr estáveis ​​e bem escritos para dar suporte às instâncias Solr (compartilhadas) do Acquia Cloud (essa é a única razão que acho) e, como a API de pesquisa estava ativamente no estado de desenvolvimento, portanto, o risco envolvido incluía que os arquivos de configuração precisassem ser atualizados com mais frequência. Eles também o recomendaram para o nosso (grande) projeto, mas, após um curto período de tempo, verificando nossos requisitos, alteramos a recomendação para a API de pesquisa. Eles não tinham arquivos de configuração estáveis, no entanto, fornecemos os nossos.
Kenorb
24

Eu tentei usar os dois e posso dizer o seguinte: depende da sua situação.

Atualmente, a versão 7 estável do módulo ApacheSolr Integration pode indexar apenas nós. Portanto, se você possui entidades que não são do nó que precisa indexar, deve usar a multividade ainda em andamento patch de . A integração do ApacheSolr pode armazenar muitos dados diferentes de conteúdo quando configurados corretamente.

A API de pesquisa indexa e tem um monte de coisas maravilhosas escritas para ele. No entanto, a API de pesquisa busca apenas o ID dos dados que você está procurando. Isso significa que carregar mais dados além do ID exigirá uma carga de entidade, atingindo seu banco de dados ou qualquer camada de armazenamento em cache que você colocar. Para sites com muita pesquisa, essa pode não ser a solução mais otimizada.

Aqui está uma ótima apresentação feita na drupalcon chicago sobre o módulo de integração ApacheSolr, minuto 16 para menções à API de pesquisa.

LSU_JBob
fonte
visão geral incrível. exatamente o que eu queria saber. obrigado!
hross
Se esta resposta foi bem-sucedida, você pode sinalizá-la como resposta? Obrigado!
LSU_JBob
1
Para aqueles que se perguntam, a multiversidade agora está no ramo de desenvolvimento da integração do apache solr, portanto deve sair com a próxima versão beta.
28411 LSL_JBob
2
Para aqueles que estão lendo este tópico. Um fator atenuante no desempenho é a API de pesquisa que permite a indexação e a recuperação de dados do nó agora. Há uma discussão sobre desempenho aqui .
Hross
1
Esta resposta é fora da data, dar uma olhada em drupal.org/node/1999392 search_api_solr agora tem opções multisite, também permite o retorno de não apenas o NID. Crescimento maciço na base de instalação do search_api_solr em 2014, ultrapassando o uso do D7 do apachesolr.
Duncanmoo
2

Eu acho que você realmente tem que tentar os dois e tomar uma decisão informada. Mas considere fortemente que o apachesolr ainda não possui uma versão beta do Drupal 8.

Na API de pesquisa, você não pode combinar entidades no mesmo índice SearchAPI. Portanto, Perfis, Usuários, Nós estão em diferentes índices. Existe um módulo para permitir pesquisas multi-índice, ele não atendeu às minhas necessidades, mas o YMMV. Se você tiver muitos tipos de conteúdo e muitos campos no mesmo índice, a definição do índice poderá se tornar bastante difícil. (NB SearchAPI D8 reporta para suportar a pesquisa de vários índices)

O Apachesolr permite a edição de campos em uma base por conteúdo, o que pode ser mais fácil, mas não tem a capacidade de adicionar conteúdo relacionado a um documento; na verdade, espera-se que seja necessário escrever algum código personalizado para incluir informações de coleções de campos, referências e outras Campos. O Apachesolr D7 não suporta ajax, a menos que você use vistas, mas usando vistas que você perde facetas. Dito isto ... modificar as informações armazenadas no índice é bastante fácil se você estiver feliz codificando em ganchos.

A ideia de procurar por IDs de entidade e renderizar cada um individualmente (pode ser usado pelos dois módulos) parece um pesadelo de desempenho, mas, se você armazenar em cache as exibições de sua entidade, poderá ser mais eficiente do que renderizar a partir da resposta solr.

dmcg
fonte