You are browsing documentation for version 5.1 of OroCommerce, supported until March 2026. Read the documentation for version 6.0 (the latest LTS version) to get up-to-date information.

See our Release Process documentation for more information on the currently supported and upcoming releases.

ORM Search Engine 


See the Search Index documentation to get a more high-level understanding of the search index concept in the Oro application.

OroSearchBundle provides ORM search engine out of the box. It stores index data in DB tables and uses fulltext index to perform search. Bundle supports search index for PostgreSQL DBMS. ORM engine is used by default.


ORM engine configuration is stored in Oro/Bundle/SearchBundle/Resources/config/oro/search_engine/orm.yml and does not require any additional engine parameters.

ORM search engine has a straightforward implementation - it stores index data in appropriate tables: separate tables for text, datetime, decimal and integer value, and another table to store general information. The table that stores text data has fulltext index.

        class: Oro\Bundle\SearchBundle\Engine\Orm
            - '@doctrine'
            - '@oro_entity.doctrine_helper'
            - '@oro_search.mapper'
            - [setLogQueries, [%oro_search.log_queries%]]

Each supported DBMS has its own driver that knows about specific search implementation and generates valid SQL.

        pdo_pgsql: Oro\Bundle\SearchBundle\Engine\Orm\PdoPgsql


Currently, special characters are not supported in the ORM search engines. Every character that is not a unicode letter or a number is replaced with a whitespace before the query.

Another feature of ORM engine is fulltext index processing. Configuration defines fulltext manager Oro\Bundle\SearchBundle\Engine\FulltextIndexManager that is used during installation and inside a special listener - it allows the system to create fulltext indexes bypassing Doctrine processing.