From 39401429dac2d55d984d505307ca2e57a098ba1b Mon Sep 17 00:00:00 2001 From: Andreas von Studnitz Date: Tue, 18 Apr 2017 13:42:03 +0200 Subject: [PATCH 1/5] Add content type to product requests --- src/Solr/Query/Params/FilterQueryBuilder.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Solr/Query/Params/FilterQueryBuilder.php b/src/Solr/Query/Params/FilterQueryBuilder.php index 6a931e8..046738d 100755 --- a/src/Solr/Query/Params/FilterQueryBuilder.php +++ b/src/Solr/Query/Params/FilterQueryBuilder.php @@ -153,7 +153,7 @@ public function addPriceRangeFilterByMinMax($minPrice, $maxPrice = 0.0) */ public function buildFilterQuery($storeId, $attributeToReset = '') { - $filterQuery = 'store_id:' . $storeId; + $filterQuery = 'content_type:product AND store_id:' . $storeId; if ($this->isCategoryPage) { $filterQuery .= ' AND is_visible_in_catalog_i:1'; } else { From 59a56f454aa1b7d9961646090790a0aab723328b Mon Sep 17 00:00:00 2001 From: Andreas von Studnitz Date: Tue, 18 Apr 2017 14:07:53 +0200 Subject: [PATCH 2/5] Remove spaces before numbers in query text in order to avoid search errors --- src/Solr/Query/SearchString.php | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/Solr/Query/SearchString.php b/src/Solr/Query/SearchString.php index 8eef2ca..274a7c4 100755 --- a/src/Solr/Query/SearchString.php +++ b/src/Solr/Query/SearchString.php @@ -30,10 +30,15 @@ public function getRawString() return $this->rawString; } + /** + * Remove spaces before numbers in order to avoid search errors + * + * @return string + */ public function getEscapedString() { if ($this->escapedString === null) { - $this->escapedString = $this->escape($this->getRawString()); + $this->escapedString = preg_replace('/\s([0-9])/', '$1', $this->escape($this->getRawString())); } return $this->escapedString; } From 734474e4da1d9df62658f8431a6d786d121522eb Mon Sep 17 00:00:00 2001 From: Andreas von Studnitz Date: Tue, 25 Apr 2017 10:39:12 +0200 Subject: [PATCH 3/5] Fix unit tests --- test/Solr/Query/SearchQueryBuilderTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/test/Solr/Query/SearchQueryBuilderTest.php b/test/Solr/Query/SearchQueryBuilderTest.php index dc9b5ea..dba7475 100755 --- a/test/Solr/Query/SearchQueryBuilderTest.php +++ b/test/Solr/Query/SearchQueryBuilderTest.php @@ -66,7 +66,7 @@ public static function dataQueryBuilder() $defaultPagination = PaginationStub::defaultPagination(); $defaultExpectedParams = [ 'q.op' => ResultsConfig::SEARCH_OPERATOR_AND, - 'fq' => "store_id:$defaultStoreId AND is_visible_in_search_i:1", + 'fq' => "content_type:product AND store_id:$defaultStoreId AND is_visible_in_search_i:1", 'fl' => 'result_html_list_nonindex,result_html_grid_nonindex,score,sku_s,name_s,product_id', 'sort' => 'score desc', 'facet' => 'true', @@ -95,7 +95,7 @@ public static function dataQueryBuilder() FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), PaginationStub::alternativePagination(), new SearchString('"foo bar"'), 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, [ 'q.op' => ResultsConfig::SEARCH_OPERATOR_OR, - 'fq' => "store_id:1 AND is_visible_in_search_i:1", + 'fq' => "content_type:product AND store_id:1 AND is_visible_in_search_i:1", 'sort' => 'attribute1_s desc', 'f.price_f.facet.interval.set' => [ "(0.000000,10.000000]", "(10.000000,20.000000]", "(20.000000,50.000000]", "(50.000000,100.000000]", "(100.000000,200.000000]", @@ -111,7 +111,7 @@ public static function dataQueryBuilder() ->addPriceRangeFilterByMinMax(13,37), $defaultPagination, new SearchString('foo bar'), new Query($defaultStoreId, 'foo bar~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, [ - '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]' + '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]' ] + $defaultExpectedParams) ] ]; From 0a5f0c1d2a20bdd9344de472b4cb71ff4befaf9f Mon Sep 17 00:00:00 2001 From: Andreas von Studnitz Date: Tue, 25 Apr 2017 10:41:32 +0200 Subject: [PATCH 4/5] Add unit test for query containing numbers --- test/Solr/Query/SearchQueryBuilderTest.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/test/Solr/Query/SearchQueryBuilderTest.php b/test/Solr/Query/SearchQueryBuilderTest.php index dba7475..0a01ad7 100755 --- a/test/Solr/Query/SearchQueryBuilderTest.php +++ b/test/Solr/Query/SearchQueryBuilderTest.php @@ -91,6 +91,10 @@ public static function dataQueryBuilder() FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo bar'), new Query($defaultStoreId, 'foo bar~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, $defaultExpectedParams) ], + 'default_numbers' => [$defaultStoreId, $defaultResultConfig, FuzzyConfigBuilder::defaultConfig()->build(), + FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo 1 bar 2'), + new Query($defaultStoreId, 'foo1 bar2~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, $defaultExpectedParams) + ], 'alternative' => [1, ResultConfigBuilder::alternativeConfig()->build(), FuzzyConfigBuilder::inactiveConfig()->build(), FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), PaginationStub::alternativePagination(), new SearchString('"foo bar"'), 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, [ From 27f155432f1bd049df8379c8e67bf310075936ba Mon Sep 17 00:00:00 2001 From: Andreas von Studnitz Date: Tue, 25 Apr 2017 10:45:59 +0200 Subject: [PATCH 5/5] Remove repeated whitespace characters --- src/Solr/Query/SearchString.php | 2 +- test/Solr/Query/SearchQueryBuilderTest.php | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/Solr/Query/SearchString.php b/src/Solr/Query/SearchString.php index 274a7c4..86ffa68 100755 --- a/src/Solr/Query/SearchString.php +++ b/src/Solr/Query/SearchString.php @@ -38,7 +38,7 @@ public function getRawString() public function getEscapedString() { if ($this->escapedString === null) { - $this->escapedString = preg_replace('/\s([0-9])/', '$1', $this->escape($this->getRawString())); + $this->escapedString = preg_replace(['/\s+([0-9])/','/\s+/'], ['$1', ' '], $this->escape($this->getRawString())); } return $this->escapedString; } diff --git a/test/Solr/Query/SearchQueryBuilderTest.php b/test/Solr/Query/SearchQueryBuilderTest.php index 0a01ad7..9585df8 100755 --- a/test/Solr/Query/SearchQueryBuilderTest.php +++ b/test/Solr/Query/SearchQueryBuilderTest.php @@ -91,8 +91,12 @@ public static function dataQueryBuilder() FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo bar'), new Query($defaultStoreId, 'foo bar~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, $defaultExpectedParams) ], + 'default_spaces' => [$defaultStoreId, $defaultResultConfig, FuzzyConfigBuilder::defaultConfig()->build(), + FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo bar'), + new Query($defaultStoreId, 'foo bar~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, $defaultExpectedParams) + ], 'default_numbers' => [$defaultStoreId, $defaultResultConfig, FuzzyConfigBuilder::defaultConfig()->build(), - FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo 1 bar 2'), + FilterQueryBuilder::noFilterQueryBuilder($defaultResultConfig), $defaultPagination, new SearchString('foo 1 bar 2'), new Query($defaultStoreId, 'foo1 bar2~0.7', 0, PaginationStub::DEFAULT_PAGESIZE, $defaultExpectedParams) ], 'alternative' => [1, ResultConfigBuilder::alternativeConfig()->build(), FuzzyConfigBuilder::inactiveConfig()->build(),