How do I change magento 2 minisearch logic from OR to AND? Right now if I search for 'Shoe laces' , it returns all products with terms either 'shoe' or 'laces'. I need fulltext search, so that only product with full term ' Shoe laces' are returned. How do I achieve this?
Solved! Go to Solution.
I did this , my module has etc/search_request.xml and I changed, clause="should" to clause="must" as you menitoned but nothing changed, it still takes the core vendor/magento/module-catalog-search/etc/search_request.xml only. How do I override the core vendor/magento/module-catalog-search/etc/search_request.xml. In my module.xml, I added this,
but my search_request.xml is ignored, it takes the core search_request.xml only
I found the solution , create a file search_request.xml in your module's etc folder ,
copy the entire <request query="quick_search_container" index="catalogsearch_fulltext"> node from vendor/Magento/CatalogSearch/etc/search_request.xml
<queryReference clause="should" ref="search" />
<queryReference clause="must" ref="search" />
do not forget to add sequence in your module file.
<module name="YOURMODULE" setup_version="1.0.0">
in case you installed your module and added <sequence> after that, just change your module version and run setup:upgrade again , thanks
sorry I added sequence after installing the module, that is why it did not work, after upgrading the module version it worked like a charm
I implemnented this and it works. However for every keyword that a search synonym exists for NO results wll be found any longer. It seems like the adapted query now searches for products that matches 'keyword' AND 'synonym' => which ofcourse will never give any result. Any solution?