$nextPageLink = baseUrl('/search?term=' . urlencode($searchTerm) . '&page=' . ($page+1));
$results = $this->searchService->searchEntities($searchTerm, 'all', $page, 20);
- $hasNextPage = $this->searchService->searchEntities($searchTerm, 'all', $page+1, 20)['count'] > 0;
return view('search/all', [
'entities' => $results['results'],
'totalResults' => $results['total'],
'searchTerm' => $searchTerm,
- 'hasNextPage' => $hasNextPage,
+ 'hasNextPage' => $results['has_more'],
'nextPageLink' => $nextPageLink
]);
}
$terms = $this->parseSearchString($searchString);
$entityTypes = array_keys($this->entities);
$entityTypesToSearch = $entityTypes;
- $results = collect();
if ($entityType !== 'all') {
$entityTypesToSearch = $entityType;
$entityTypesToSearch = explode('|', $terms['filters']['type']);
}
+ $results = collect();
$total = 0;
foreach ($entityTypesToSearch as $entityType) {
if (!in_array($entityType, $entityTypes)) {
continue;
}
- $search = $this->searchEntityTable($terms, $entityType, $page, $count);
- $total += $this->searchEntityTable($terms, $entityType, $page, $count, true);
+ $search = $this->searchEntityTable($terms, $entityType, $page, $count + 1);
+ $total += $this->searchEntityTable($terms, $entityType, $page, $count + 1, true);
$results = $results->merge($search);
}
return [
'total' => $total,
'count' => count($results),
- 'results' => $results->sortByDesc('score')->values()
+ 'has_more' => $results->count() > $count,
+ 'results' => $results->sortByDesc('score')->slice(0, $count)->values()
];
}
public function indexEntity(Entity $entity)
{
$this->deleteEntityTerms($entity);
- $nameTerms = $this->generateTermArrayFromText($entity->name, 5);
- $bodyTerms = $this->generateTermArrayFromText($entity->getText(), 1);
+ $nameTerms = $this->generateTermArrayFromText($entity->name, 5 * $entity->searchFactor);
+ $bodyTerms = $this->generateTermArrayFromText($entity->getText(), 1 * $entity->searchFactor);
$terms = array_merge($nameTerms, $bodyTerms);
foreach ($terms as $index => $term) {
$terms[$index]['entity_type'] = $entity->getMorphClass();
{
$terms = [];
foreach ($entities as $entity) {
- $nameTerms = $this->generateTermArrayFromText($entity->name, 5);
- $bodyTerms = $this->generateTermArrayFromText($entity->getText(), 1);
+ $nameTerms = $this->generateTermArrayFromText($entity->name, 5 * $entity->searchFactor);
+ $bodyTerms = $this->generateTermArrayFromText($entity->getText(), 1 * $entity->searchFactor);
foreach (array_merge($nameTerms, $bodyTerms) as $term) {
$term['entity_id'] = $entity->id;
$term['entity_type'] = $entity->getMorphClass();