Skip to content

Commit 1ebe7fc

Browse files
authored
Interface changes for SearchService & Suggestions. Support spelling suggestions (#21)
1 parent 47e7feb commit 1ebe7fc

16 files changed

+209
-56
lines changed

.editorconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ indent_style = space
1010
insert_final_newline = true
1111
trim_trailing_whitespace = true
1212

13-
[{*.yml}]
13+
[*.yml]
1414
indent_size = 2
1515
indent_style = space
1616

_config/adaptors.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
---
2+
Name: discoverer-adaptors
3+
---
4+
SilverStripe\Core\Injector\Injector:
5+
SilverStripe\Discoverer\Service\Interfaces\ProcessAnalyticsAdaptor:
6+
class: SilverStripe\Discoverer\Service\Adaptors\ProcessAnalyticsAdaptor
7+
SilverStripe\Discoverer\Service\Interfaces\QuerySuggestionAdaptor:
8+
class: SilverStripe\Discoverer\Service\Adaptors\QuerySuggestionAdaptor
9+
SilverStripe\Discoverer\Service\Interfaces\SearchAdaptor:
10+
class: SilverStripe\Discoverer\Service\Adaptors\SearchAdaptor
11+
SilverStripe\Discoverer\Service\Interfaces\SpellingSuggestionAdaptor:
12+
class: SilverStripe\Discoverer\Service\Adaptors\SpellingSuggestionAdaptor

_config/analytics.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
Name: search-analytics
2+
Name: discoverer-analytics
33
After:
44
- requestprocessors
55
Only:

src/Query/Suggestion.php

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,12 @@ class Suggestion
99

1010
use Injectable;
1111

12-
public function __construct(private string $queryString, private ?int $limit = null, private array $fields = [])
13-
{
12+
public function __construct(
13+
private string $queryString,
14+
private ?int $limit = null,
15+
private array $fields = [],
16+
private bool $formatted = false
17+
) {
1418
}
1519

1620
public function getQueryString(): string
@@ -54,4 +58,16 @@ public function addField(string $fieldName): self
5458
return $this;
5559
}
5660

61+
public function isFormatted(): bool
62+
{
63+
return $this->formatted;
64+
}
65+
66+
public function setFormatted(bool $formatted): Suggestion
67+
{
68+
$this->formatted = $formatted;
69+
70+
return $this;
71+
}
72+
5773
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?php
2+
3+
namespace SilverStripe\Discoverer\Service\Adaptors;
4+
5+
use BadMethodCallException;
6+
use SilverStripe\Discoverer\Analytics\AnalyticsData;
7+
use SilverStripe\Discoverer\Service\Interfaces\ProcessAnalyticsAdaptor as ProcessAnalyticsAdaptorInterface;
8+
9+
class ProcessAnalyticsAdaptor implements ProcessAnalyticsAdaptorInterface
10+
{
11+
12+
public function process(AnalyticsData $analyticsData): void
13+
{
14+
throw new BadMethodCallException('Analytics adaptor has not been implemented');
15+
}
16+
17+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace SilverStripe\Discoverer\Service\Adaptors;
4+
5+
use BadMethodCallException;
6+
use SilverStripe\Discoverer\Query\Suggestion;
7+
use SilverStripe\Discoverer\Service\Interfaces\QuerySuggestionAdaptor as QuerySuggestionAdaptorInterface;
8+
use SilverStripe\Discoverer\Service\Results\Suggestions;
9+
10+
class QuerySuggestionAdaptor implements QuerySuggestionAdaptorInterface
11+
{
12+
13+
public function process(Suggestion $suggestion, string $indexName): Suggestions
14+
{
15+
throw new BadMethodCallException('Query suggestion adaptor has not been implemented');
16+
}
17+
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace SilverStripe\Discoverer\Service\Adaptors;
4+
5+
use BadMethodCallException;
6+
use SilverStripe\Discoverer\Query\Query;
7+
use SilverStripe\Discoverer\Service\Interfaces\SearchAdaptor as SearchAdaptorInterface;
8+
use SilverStripe\Discoverer\Service\Results\Results;
9+
10+
class SearchAdaptor implements SearchAdaptorInterface
11+
{
12+
13+
public function process(Query $query, string $indexName): Results
14+
{
15+
throw new BadMethodCallException('Search adaptor has not been implemented');
16+
}
17+
18+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
<?php
2+
3+
namespace SilverStripe\Discoverer\Service\Adaptors;
4+
5+
use BadMethodCallException;
6+
use SilverStripe\Discoverer\Query\Suggestion;
7+
use SilverStripe\Discoverer\Service\Interfaces\SpellingSuggestionAdaptor as SpellingSuggestionAdaptorInterface;
8+
use SilverStripe\Discoverer\Service\Results\Suggestions;
9+
10+
class SpellingSuggestionAdaptor implements SpellingSuggestionAdaptorInterface
11+
{
12+
13+
public function process(Suggestion $suggestion, string $indexName): Suggestions
14+
{
15+
throw new BadMethodCallException('Spelling suggestion adaptor has not been implemented');
16+
}
17+
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
namespace SilverStripe\Discoverer\Service\Interfaces;
4+
5+
use SilverStripe\Discoverer\Analytics\AnalyticsData;
6+
7+
interface ProcessAnalyticsAdaptor
8+
{
9+
10+
public function process(AnalyticsData $analyticsData): void;
11+
12+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
<?php
2+
3+
namespace SilverStripe\Discoverer\Service\Interfaces;
4+
5+
use SilverStripe\Discoverer\Query\Suggestion;
6+
use SilverStripe\Discoverer\Service\Results\Suggestions;
7+
8+
interface QuerySuggestionAdaptor
9+
{
10+
11+
public function process(Suggestion $suggestion, string $indexName): Suggestions;
12+
13+
}

0 commit comments

Comments
 (0)