Flowpack.ElasticSearch.ContentRepositoryAdaptor icon indicating copy to clipboard operation
Flowpack.ElasticSearch.ContentRepositoryAdaptor copied to clipboard

"test" gets escaped and then trimmed to \"test\ which leads to an error

Open kdambekalns opened this issue 2 years ago • 0 comments

If searched for "test" it gets escaped and then trimmed to \"test\ which leads to an error:

[type] => query_shard_exception
                            [reason] => Failed to parse query [\"test\]
                            [caused_by] => Array
                                (
                                    [type] => parse_exception
                                    [reason] => Cannot parse '\"test\': Lexical error at line 1, column 17.  Encountered: <EOF> after : ""
                                    [caused_by] => Array
                                        (
                                            [type] => token_mgr_error
                                            [reason] => Lexical error at line 1, column 17.  Encountered: <EOF> after : ""
                                        )

                                )

It can be patched with:

Index: Classes/Eel/ElasticSearchQueryBuilder.php
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/Classes/Eel/ElasticSearchQueryBuilder.php b/Classes/Eel/ElasticSearchQueryBuilder.php
--- a/Classes/Eel/ElasticSearchQueryBuilder.php	
+++ b/Classes/Eel/ElasticSearchQueryBuilder.php	(date 1649436183235)
@@ -678,7 +678,7 @@
     public function fulltext(string $searchWord, array $options = []): QueryBuilderInterface
     {
         // We automatically enable result highlighting when doing fulltext searches. It is up to the user to use this information or not use it.
-        $this->request->fulltext(trim(json_encode($searchWord, JSON_UNESCAPED_UNICODE), '"'), $options);
+        $this->request->fulltext(trim(json_encode($searchWord, JSON_UNESCAPED_UNICODE), '\\"'), $options);
         $this->request->highlight(150, 2);
 
         return $this;

Originally posted by @fdsis in https://github.com/Flowpack/Flowpack.ElasticSearch.ContentRepositoryAdaptor/issues/228#issuecomment-1093084336

kdambekalns avatar Apr 19 '22 15:04 kdambekalns