Skip to content

Commit 3074745

Browse files
committed
ACP2E-783: [Cloud] Mistyped search term does not result in accurate Search suggestions/corrections
1 parent 0953fe7 commit 3074745

File tree

2 files changed

+47
-6
lines changed

2 files changed

+47
-6
lines changed

app/code/Magento/Elasticsearch/Model/DataProvider/Base/Suggestions.php

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ public function isResultsCountEnabled()
158158
* Get Suggestions
159159
*
160160
* @param QueryInterface $query
161-
*
162161
* @return array
163162
* @throws \Magento\Framework\Exception\NoSuchEntityException
164163
*/
@@ -180,7 +179,7 @@ private function getSuggestions(QueryInterface $query)
180179
}
181180
}
182181
}
183-
ksort($suggestions);
182+
krsort($suggestions);
184183
$texts = array_unique(array_column($suggestions, 'text'));
185184
$suggestions = array_slice(
186185
array_intersect_key(array_values($suggestions), $texts),
@@ -195,12 +194,11 @@ private function getSuggestions(QueryInterface $query)
195194
/**
196195
* Init Search Query
197196
*
198-
* @param string $query
199-
*
197+
* @param QueryInterface $query
200198
* @return array
201199
* @throws \Magento\Framework\Exception\NoSuchEntityException
202200
*/
203-
private function initQuery($query)
201+
private function initQuery(QueryInterface $query): array
204202
{
205203
$searchQuery = [
206204
'index' => $this->searchIndexNameResolver->getIndexName(
@@ -235,7 +233,7 @@ private function addSuggestFields($searchQuery, $searchSuggestionsCount)
235233
'field' => $field,
236234
'analyzer' => 'standard',
237235
'size' => $searchSuggestionsCount,
238-
'max_errors' => 1,
236+
'max_errors' => 0.9,
239237
'direct_generator' => [
240238
[
241239
'field' => $field,
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
<?php
2+
/**
3+
* Copyright © Magento, Inc. All rights reserved.
4+
* See COPYING.txt for license details.
5+
*/
6+
declare(strict_types=1);
7+
8+
namespace Magento\AdvancedSearch\Model;
9+
10+
use Magento\Search\Model\Query;
11+
use Magento\TestFramework\Helper\Bootstrap;
12+
use PHPUnit\Framework\TestCase;
13+
14+
class SuggestedQueriesTest extends TestCase
15+
{
16+
/**
17+
* @var SuggestedQueries
18+
*/
19+
private $suggestedQueries;
20+
21+
protected function setUp(): void
22+
{
23+
$this->suggestedQueries = Bootstrap::getObjectManager()
24+
->create(SuggestedQueries::class);
25+
}
26+
27+
/**
28+
* @magentoDataFixture Magento\Catalog\Test\Fixture\Product with:{"name":"fresh arugula salad"}
29+
* @magentoConfigFixture current_store catalog/search/search_suggestion_count 8
30+
*/
31+
public function testGetItems(): void
32+
{
33+
$query = Bootstrap::getObjectManager()
34+
->create(Query::class, ['data' => ['query_text' => 'frshe arugul salat']]);
35+
$queryResults = $this->suggestedQueries->getItems($query);
36+
$queryTexts = [];
37+
foreach ($queryResults as $queryResult) {
38+
$queryTexts[] = $queryResult->getQueryText();
39+
}
40+
self::assertCount(7, $queryTexts);
41+
self::assertEquals('fresh arugula salad', $queryTexts[0]);
42+
}
43+
}

0 commit comments

Comments
 (0)