diff --git a/lib/Alchemy/Phrasea/Controller/Prod/QueryController.php b/lib/Alchemy/Phrasea/Controller/Prod/QueryController.php index 790e33525d..a6706424aa 100644 --- a/lib/Alchemy/Phrasea/Controller/Prod/QueryController.php +++ b/lib/Alchemy/Phrasea/Controller/Prod/QueryController.php @@ -382,7 +382,6 @@ class QueryController extends Controller 'labels' => $field->get_labels(), 'type' => $field->get_type(), 'field' => $field->get_name(), - 'query' => "field." . $field->get_name() . ":%s", 'trans_label' => $field->get_label($this->app['locale']), ]; $field->get_label($this->app['locale']); diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/ElasticsearchOptions.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/ElasticsearchOptions.php index 87d54c5b71..0532f85c30 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/ElasticsearchOptions.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/ElasticsearchOptions.php @@ -323,7 +323,7 @@ class ElasticsearchOptions "aggregated (2 values: fired = 0 or 1)" => -1, ], 'output_formatter' => function($value) { - static $map = ['0'=>"No flash", '1'=>"Flash"]; + static $map = ["false"=>"No flash", "true"=>"Flash", '0'=>"No flash", '1'=>"Flash"]; return array_key_exists($value, $map) ? $map[$value] : $value; }, ], diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/Escaper.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/Escaper.php index 728ed3e372..6369d426cc 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/Escaper.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/Escaper.php @@ -4,6 +4,11 @@ namespace Alchemy\Phrasea\SearchEngine\Elastic\Search; class Escaper { + public function quoteWord($value) + { + return '"' . $this->escapeRaw($value) . '"'; + } + public function escapeWord($value) { // Strip double quotes from values to prevent broken queries diff --git a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/FacetsResponse.php b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/FacetsResponse.php index 42c5a63e25..2f2d966c51 100644 --- a/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/FacetsResponse.php +++ b/lib/Alchemy/Phrasea/SearchEngine/Elastic/Search/FacetsResponse.php @@ -62,7 +62,7 @@ class FacetsResponse 'value' => $key, 'raw_value' => $key, 'count' => $bucket['doc_count'], - 'query' => sprintf('field.%s:%s', $this->escaper->escapeWord($name), $this->escaper->escapeWord($key)) + 'query' => sprintf('field.%s=%s', $this->escaper->escapeWord($name), $this->escaper->quoteWord($key)) ]; } diff --git a/tests/Alchemy/Tests/Phrasea/SearchEngine/Structure/ValueCheckerTest.php b/tests/Alchemy/Tests/Phrasea/SearchEngine/Structure/ValueCheckerTest.php index fe4fd0c7d4..b0e2b6aff8 100644 --- a/tests/Alchemy/Tests/Phrasea/SearchEngine/Structure/ValueCheckerTest.php +++ b/tests/Alchemy/Tests/Phrasea/SearchEngine/Structure/ValueCheckerTest.php @@ -14,14 +14,14 @@ use Alchemy\Phrasea\SearchEngine\Elastic\Structure\Typed; class ValueCheckerTest extends \PHPUnit_Framework_TestCase { /** - * @dataProvider escapeRawProvider + * @dataProvider valueCheckerProvider */ public function testValueCompatibility($subject, $value, $compatible) { $this->assertEquals($compatible, ValueChecker::isValueCompatible($subject, $value)); } - public function escapeRawProvider() + public function valueCheckerProvider() { $values = [ [FieldMapping::TYPE_FLOAT , 42 , true ],