cancel
Showing results for 
Search instead for 
Did you mean: 

How do I change magento 2 search from OR logic to AND?

SOLVED

How do I change magento 2 search from OR logic to AND?

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?

2 ACCEPTED SOLUTIONS

Accepted Solutions

Re: How do I change magento 2 search from OR logic to AND?

You have to extend vendor/magento/module-catalog-search/etc/search_request.xml file 
in custom module. 
and change line 16: <queryReference clause="should" ref="search" /> 
to <queryReference clause="must" ref="search" />

View solution in original post

Re: How do I change magento 2 search from OR logic to AND?

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

and change

 <queryReference clause="should" ref="search" />

to this

 <queryReference clause="must" ref="search" />

do not forget to add sequence in your module file.

<module name="YOURMODULE" setup_version="1.0.0">
        <sequence>        
            <module name="Magento_CatalogSearch"/>
        </sequence>
    </module>

in case you installed your module and added <sequence> after that, just change your module version and run setup:upgrade again , thanks

 

View solution in original post

8 REPLIES 8

Re: How do I change magento 2 search from OR logic to AND?

You have to extend vendor/magento/module-catalog-search/etc/search_request.xml file 
in custom module. 
and change line 16: <queryReference clause="should" ref="search" /> 
to <queryReference clause="must" ref="search" />

Re: How do I change magento 2 search from OR logic to AND?

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,

    <sequence>       
        <module name="Magento_CatalogSearch"/>
    </sequence>

 

but my search_request.xml is ignored, it takes the core search_request.xml only

Re: How do I change magento 2 search from OR logic to AND?

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

and change

 <queryReference clause="should" ref="search" />

to this

 <queryReference clause="must" ref="search" />

do not forget to add sequence in your module file.

<module name="YOURMODULE" setup_version="1.0.0">
        <sequence>        
            <module name="Magento_CatalogSearch"/>
        </sequence>
    </module>

in case you installed your module and added <sequence> after that, just change your module version and run setup:upgrade again , thanks

 

Re: How do I change magento 2 search from OR logic to AND?

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 Smiley Happy

Re: How do I change magento 2 search from OR logic to AND?

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?

Re: How do I change magento 2 search from OR logic to AND?

@rickert did you find a solution to this?

Re: How do I change magento 2 search from OR logic to AND?

No I'm afraid not. My developer created additional custom code to create M1-like search functionality. Which took a lot of time (and money).

Re: How do I change magento 2 search from OR logic to AND?

Hi, I followed this and now the search synonyms are not working. If I add synonyms: read,rid then searching read or rid comes up with no result. Please help.!