Skip to content

Commit 8bd6bbd

Browse files
authored
Merge pull request #3 from integer-net/number-queries
Remove spaces before numbers in order to avoid search errors
2 parents fdbfaa6 + 27f1554 commit 8bd6bbd

File tree

3 files changed

+18
-5
lines changed

3 files changed

+18
-5
lines changed

src/Solr/Query/Params/FilterQueryBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ public function addPriceRangeFilterByMinMax($minPrice, $maxPrice = 0.0)
153153
*/
154154
public function buildFilterQuery($storeId, $attributeToReset = '')
155155
{
156-
$filterQuery = 'store_id:' . $storeId;
156+
$filterQuery = 'content_type:product AND store_id:' . $storeId;
157157
if ($this->isCategoryPage) {
158158
$filterQuery .= ' AND is_visible_in_catalog_i:1';
159159
} else {

src/Solr/Query/SearchString.php

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,15 @@ public function getRawString()
3030
return $this->rawString;
3131
}
3232

33+
/**
34+
* Remove spaces before numbers in order to avoid search errors
35+
*
36+
* @return string
37+
*/
3338
public function getEscapedString()
3439
{
3540
if ($this->escapedString === null) {
36-
$this->escapedString = $this->escape($this->getRawString());
41+
$this->escapedString = preg_replace(['/\s+([0-9])/','/\s+/'], ['$1', ' '], $this->escape($this->getRawString()));
3742
}
3843
return $this->escapedString;
3944
}

test/Solr/Query/SearchQueryBuilderTest.php

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ public static function dataQueryBuilder()
6666
$defaultPagination = PaginationStub::defaultPagination();
6767
$defaultExpectedParams = [
6868
'q.op' => ResultsConfig::SEARCH_OPERATOR_AND,
69-
'fq' => "store_id:$defaultStoreId AND is_visible_in_search_i:1",
69+
'fq' => "content_type:product AND store_id:$defaultStoreId AND is_visible_in_search_i:1",
7070
'fl' => 'result_html_list_nonindex,result_html_grid_nonindex,score,sku_s,name_s,product_id',
7171
'sort' => 'score desc',
7272
'facet' => 'true',
@@ -91,11 +91,19 @@ public static function dataQueryBuilder()
9191
FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo bar'),
9292
new Query($defaultStoreId, 'foo bar~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, $defaultExpectedParams)
9393
],
94+
'default_spaces' => [$defaultStoreId, $defaultResultConfig, FuzzyConfigBuilder::defaultConfig()->build(),
95+
FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo bar'),
96+
new Query($defaultStoreId, 'foo bar~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, $defaultExpectedParams)
97+
],
98+
'default_numbers' => [$defaultStoreId, $defaultResultConfig, FuzzyConfigBuilder::defaultConfig()->build(),
99+
FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo 1 bar 2'),
100+
new Query($defaultStoreId, 'foo1 bar2~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, $defaultExpectedParams)
101+
],
94102
'alternative' => [1, ResultConfigBuilder::alternativeConfig()->build(), FuzzyConfigBuilder::inactiveConfig()->build(),
95103
FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), PaginationStub::alternativePagination(), new SearchString('"foo bar"'),
96104
new Query(1, 'attribute1_t:""foo bar""~100^0 OR attribute2_t:""foo bar""~100^0 OR category_name_t_mv:""foo bar""~100^1', 0, 24, [
97105
'q.op' => ResultsConfig::SEARCH_OPERATOR_OR,
98-
'fq' => "store_id:1 AND is_visible_in_search_i:1",
106+
'fq' => "content_type:product AND store_id:1 AND is_visible_in_search_i:1",
99107
'sort' => 'attribute1_s desc',
100108
'f.price_f.facet.interval.set' => [
101109
"(0.000000,10.000000]", "(10.000000,20.000000]", "(20.000000,50.000000]", "(50.000000,100.000000]", "(100.000000,200.000000]",
@@ -111,7 +119,7 @@ public static function dataQueryBuilder()
111119
->addPriceRangeFilterByMinMax(13,37),
112120
$defaultPagination, new SearchString('foo bar'),
113121
new Query($defaultStoreId, 'foo bar~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, [
114-
'fq' => 'store_id:0 AND is_visible_in_search_i:1 AND attribute1_facet:blue AND category:42 AND price_f:[13.000000 TO 37.000000]'
122+
'fq' => 'content_type:product AND store_id:0 AND is_visible_in_search_i:1 AND attribute1_facet:blue AND category:42 AND price_f:[13.000000 TO 37.000000]'
115123
] + $defaultExpectedParams)
116124
]
117125
];

0 commit comments

Comments
 (0)