Este artigo mostra de forma mais aprofundada como a pesquisa do Drupal 7 organiza e encontra os conteúdos mais relevantes ao usuário com foco no desenvolvedor.
Muito se fala de SEO (Search Engine Optimization), onde os conteúdos são organizados e porque não dizer otimizados para serem facilmente encontrados em ferramentas de busca como Google e Bing. Isso com certeza é muito importante pois traz novos usuários para seu site, mas depois que entraram no site é importante que eles realmente encontrem o que procuram. Para isso uma busca interna (internal search) é essencial.
Funcionamento da busca
Quando um usuário digita uma palavra no campo de busca em um site (1), o Drupal vai em um índice (2) e encontra os conteúdos mais relevantes de acordo com a pontuação em um índice (3) (4).
Criação e atualização do índice
O índice é construído e atualizado de tempos em tempos através do processo de Cron. Então o Cron lê cada conteúdo, separa as palavras, cria a pontuação e salva tudo isso na base de dados. O tempo do Cron pode ser configurado para executar toda hora, a cada 3 horas, diariamente, etc.
Quando um novo conteúdo é cadastrado, ele só estará disponível para pesquisa após ser processado, corretamente pontuado e adicionado ao índice.
É possível visualizar o status e reiniciar o processo de construção do índice através da configuração da busca (Admin > Config > Search > Settings).
Contabilização de relevância de um conteúdo
O Drupal é basicamente utiliza HTML para indicar o que é mais relevante em um conteúdo. Por exemplo se você escreveu um artigo e utilizou um título ou destacou uma palavra com negrito, o Drupal entende que essas palavras são mais importantes no conteúdo do que as demais palavras.
Cada palavra é separada e pontuada seguindo a tabela abaixo:
Como a palavra pode se repetir em cada conteúdo, é feita uma somatória de todas as vezes que a palavra se repete. Em resumo quando o usuário pesquisa algo o Drupal traz o conteúdo onde a palavra aparece mais vezes e em destaque (H1, H2, b, etc).
Existem algumas opções para alterar a relevância de um conteúdo, entre elas o número de comentários e recentemente postado.
É possível ainda aumentar as opções de configuração da pesquisa no Drupal utilizando alguns módulos como Custom Search ou o Search Lucene API, mas isso é assunto para outros posts! 😀
Referências:
http://www.lullabot.com/blog/article/drupals-search-module-and-scoring-factors
https://www.acquia.com/blog/drupal-search-how-indexing-works
Also published on Medium.