19
19
use Magento \GraphQl \Model \Query \ContextInterface ;
20
20
use Magento \Search \Api \SearchInterface ;
21
21
use Magento \Search \Model \Search \PageSizeProvider ;
22
+ use Magento \Search \Model \QueryFactory ;
22
23
23
24
/**
24
25
* Full text search for catalog using given search criteria.
@@ -60,6 +61,11 @@ class Search implements ProductQueryInterface
60
61
*/
61
62
private $ searchCriteriaBuilder ;
62
63
64
+ /**
65
+ * @var QueryFactory
66
+ */
67
+ private $ queryFactory ;
68
+
63
69
/**
64
70
* @param SearchInterface $search
65
71
* @param SearchResultFactory $searchResultFactory
@@ -68,6 +74,7 @@ class Search implements ProductQueryInterface
68
74
* @param ProductSearch $productsProvider
69
75
* @param SearchCriteriaBuilder $searchCriteriaBuilder
70
76
* @param ArgumentsProcessorInterface|null $argsSelection
77
+ * @param QueryFactory|null $queryFactory
71
78
*/
72
79
public function __construct (
73
80
SearchInterface $ search ,
@@ -76,7 +83,8 @@ public function __construct(
76
83
FieldSelection $ fieldSelection ,
77
84
ProductSearch $ productsProvider ,
78
85
SearchCriteriaBuilder $ searchCriteriaBuilder ,
79
- ArgumentsProcessorInterface $ argsSelection = null
86
+ ArgumentsProcessorInterface $ argsSelection = null ,
87
+ QueryFactory $ queryFactory = null
80
88
) {
81
89
$ this ->search = $ search ;
82
90
$ this ->searchResultFactory = $ searchResultFactory ;
@@ -86,6 +94,8 @@ public function __construct(
86
94
$ this ->searchCriteriaBuilder = $ searchCriteriaBuilder ;
87
95
$ this ->argsSelection = $ argsSelection ?: ObjectManager::getInstance ()
88
96
->get (ArgumentsProcessorInterface::class);
97
+ $ this ->queryFactory = $ queryFactory ?: ObjectManager::getInstance ()
98
+ ->get (QueryFactory::class);
89
99
}
90
100
91
101
/**
@@ -124,6 +134,16 @@ public function getResult(
124
134
125
135
$ totalPages = $ realPageSize ? ((int )ceil ($ searchResults ->getTotalCount () / $ realPageSize )) : 0 ;
126
136
137
+ // add query statistics data
138
+ if (!empty ($ args ['search ' ])) {
139
+ $ query = $ this ->queryFactory ->get ();
140
+ $ query ->setQueryText ($ args ['search ' ]);
141
+ $ store = $ context ->getExtensionAttributes ()->getStore ();
142
+ $ query ->setStoreId ($ store ->getId ());
143
+ $ query ->saveIncrementalPopularity ();
144
+ $ query ->saveNumResults ($ searchResults ->getTotalCount ());
145
+ }
146
+
127
147
$ productArray = [];
128
148
/** @var \Magento\Catalog\Model\Product $product */
129
149
foreach ($ searchResults ->getItems () as $ product ) {
0 commit comments