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.
