Visão Geral
O Search Framework tem como objetivo facilitar ao máximo a criação de mecanismos de busca para o SuiteCRM, com o mínimo de impacto na experiência do usuário, permitindo a reutilização de elementos da IU.
Seus componentes residem no lib \ Search. Uma visão geral da estrutura do arquivo seguirá:
lib\Search
├── Exceptions
│ ├── SearchEngineNotFoundException.php
│ ├── SearchException.php
│ ├── SearchInvalidRequestException.php
│ └── SearchUserFriendlyException.php
├── UI
│ ├── MVC
│ │ ├── Controller.php
│ │ └── View.php
│ ├── templates
│ │ ├── search.form.tpl
│ │ └── search.results.tpl
│ ├── SearchFormController.php
│ ├── SearchFormView.php
│ ├── SearchResultsController.php
│ ├── SearchResultsView.php
│ └── SearchThrowableHandler.php
├── SearchEngine.php
├── SearchQuery.php
├── SearchResults.php
└── SearchWrapper.php
Classes Principais
SearchWrapper
A principal classe do Search Framework que permite realizar pesquisas facilmente usando métodos estáticos.
Motor de busca
Classe abstrata que contém utilitários para classes que a implementam. Os métodos integrados cuidam de mostrar os resultados e a visualização da pesquisa e podem ser substituídos, se necessário. As subclasses são necessárias apenas para implementar o método search (SearchQuery $ query), embora seja recomendado substituir o método validateQuery (SearchQuery $ query) também.
Consulta de pesquisa
O objeto SearchQuery envolve todos os parâmetros usados pelo SearchWrapper e SearchEngine.
Possui um conjunto de métodos de fábrica para preencher os parâmetros de maneira padrão.
Ele contém os seguintes campos (disponíveis por meio de getters):
$query ─ uma string contendo a consulta de pesquisa. Quando vazio, nenhuma pesquisa será realizada.
$size ─ Um int especificando quantos resultados são solicitados. O padrão é 10.
$from ─ Um int usado para paginação, efetivamente um deslocamento. O padrão é 0.
$engine ─ uma string contendo o nome da classe SearchEngine a ser usada. Padrões de acordo com a configuração.
$options ─ uma matriz contendo opções que podem ser necessárias para SearchEngines personalizados.
Procurar Resultados
A classe SearchResults contém os resultados de uma pesquisa, junto com metadados como o tempo da pesquisa, o número total de ocorrências e a pontuação dos resultados.
Ele contém os seguintes campos (disponíveis por meio de getters):
$hits ─ uma matriz contendo os resultados da pesquisa. Os resultados são aninhados por módulo.
$scores ─ uma matriz com índices correspondentes aos de $ hits, contendo um float especificando os resultados.
$options ─ uma matriz contendo opções personalizadas para serem usadas pelos mecanismos.
$searchTime ─ um float com a quantidade de segundos que levou para realizar a pesquisa.
$total ─ Um int com o número total de ocorrências (sem paginação).
$groupedByModule ─ Sinalizador que especifica se o array $ hits é agrupado por módulo.
Diagrama de Comunicação
O diagrama abaixo ilustra como funciona o processo de pesquisa, quando um usuário realiza uma pesquisa.
A classe Search está localizada em modules / Home / e é efetivamente o controlador que lida com a solicitação do navegador.