Implementing Custom Search Index

Sometimes it's need to have specific type of Index, which is either not included to our Magento 2 Elasticsearch Extension or Sphinx Extension, or belongs to some third-party extension. In this case custom index can be implemented, using the following instructions:

  1. Clone the example module from repository http://github.com/mirasvit/module-search-extended
  2. Go to app/code/Mirasvit/SearchExtended/Index/ and rename subpath Magento/Review/Review/ to the required one ([provider]/[module]/[entity])
  3. Change class names in file app/code/Mirasvit/SearchExtended/Index/[provider]/[module]/[entity]/Index.php
    • Rename class
    • Set your values to getName(), getPrimaryKey() and getIdentifier() methods
  4. Configure the attributes you want to get in getAttributes() method
  5. Change methods buildSearchCollection() and getSearchableEntities()
  6. Change registration for new index in file app/code/Mirasvit/SearchExtended/etc/di.xml
  7. Adjust layout file app/code/Mirasvit/SearchExtended/view/frontend/layout/catalogsearch_result_index.xml

    Rename template name/path and adjust it /app/code/Mirasvit/SearchExtended/view/frontend/templates/index/magento/review/review.phtml

  8. Enable module and Clear magento cache

If everything was correct, you can add index of your custom type like any regular index.

  1. If you use SSU please go to: /vendor/mirasvit/module-search-autocomplete/src/SearchAutocomplete/Model/Index folder
  2. Create folder/file structure <Company>/<Extension>/<EntityType>.php i.e. /vendor/mirasvit/module-search-autocomplete/src/SearchAutocomplete/Model/Index/Ves/Blog/Post.php
  3. Open /vendor/mirasvit/module-search-autocomplete/src/SearchAutocomplete/etc/di.xml and add item to type name="Mirasvit\SearchAutocomplete\Model\Index\Pool" arguments