Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Fulltext search in the Magento backend to use elasticsearch #38634

Open
wants to merge 5 commits into
base: 2.4-develop
Choose a base branch
from

Conversation

digitalrisedorset
Copy link

Add Fulltext search in the Magento backend to use elasticsearch to find matches using search strategies similar to the frontend

Description (*)

The changes in this PR make the full text search from the backend using the configured elasticsearch engine in the same way as the frontend. The search term is submitted to the search engine so that it gets compared with product name field and product sku field. After the search returns some products match, the product grid filters do work like before.

Related Pull Requests

Fixed Issues (if relevant)

  1. Fixes Magento product search in admin product grid not working correctly. No OR functionality #38587

Manual testing scenarios (*)

Test 1: backward compliance test

Using the full text input in the backend catalog product grid, we can find products that have the search term in their product name

Test 2: backward compliance test

Using the full text input in the backend catalog product grid, we can find products for which their skus start with the search term

Test 3: this is a new test specific to the changes added

Using the full text input in the backend catalog product grid, we can find products for which their product name contain either of the search term words

Test 4: this is a new test specific to the changes added

Using the filters in the product grid form, the results are refined when using search term with some filters value (eg: gender..)

Questions or comments

It is likely that the file app/code/Magento/CatalogSearch/etc/search_request.xml will need to be tuned to improved the search usability
I have now added a mechanism to reorder the product collection after elasticsearch has been called. I'd like to have some guidance how elasticsearch boost work

Contribution checklist (*)

  • Pull request has a meaningful description of its purpose
  • All commits are accompanied by meaningful commit messages
  • All new or changed code is covered with unit/integration tests (if applicable)
  • README.md files for modified modules are updated and included in the pull request if any README.md predefined sections require an update
  • All automated tests passed successfully (all builds are green)

Copy link

m2-assistant bot commented Apr 18, 2024

Hi @digitalrisedorset. Thank you for your contribution!
Here are some useful tips on how you can test your changes using Magento test environment.

Add the comment under your pull request to deploy test or vanilla Magento instance:
  • @magento give me test instance - deploy test instance based on PR changes
  • @magento give me 2.4-develop instance - deploy vanilla Magento instance

❗ Automated tests can be triggered manually with an appropriate comment:

  • @magento run all tests - run or re-run all required tests against the PR changes
  • @magento run <test-build(s)> - run or re-run specific test build(s)
    For example: @magento run Unit Tests

<test-build(s)> is a comma-separated list of build names.

Allowed build names are:
  1. Database Compare
  2. Functional Tests CE
  3. Functional Tests EE
  4. Functional Tests B2B
  5. Integration Tests
  6. Magento Health Index
  7. Sample Data Tests CE
  8. Sample Data Tests EE
  9. Sample Data Tests B2B
  10. Static Tests
  11. Unit Tests
  12. WebAPI Tests
  13. Semantic Version Checker

You can find more information about the builds here
ℹ️ Run only required test builds during development. Run all test builds before sending your pull request for review.


For more details, review the Code Contributions documentation.
Join Magento Community Engineering Slack and ask your questions in #github channel.

@m2-community-project m2-community-project bot added the Priority: P2 A defect with this priority could have functionality issues which are not to expectations. label Apr 18, 2024
@m2-community-project m2-community-project bot added this to Pending Review in Pull Requests Dashboard Apr 18, 2024
public function addIdFilter($productId, $exclude = false): ProductCollection
{
if (is_array($productId)) {
$this->getSelect()->order("find_in_set(e.entity_id,'".implode(',', array_reverse($productId))."')");
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The array_reverse is likely not needed but it is the only way at this time for the product result to be correctly sorted

@m2-community-project m2-community-project bot removed this from Pending Review in Pull Requests Dashboard Apr 18, 2024
@m2-community-project m2-community-project bot added this to Pending Review in Pull Requests Dashboard Apr 18, 2024
@digitalrisedorset digitalrisedorset changed the title Feature/backend product fulltext search Add Fulltext search in the Magento backend to use elasticsearch Apr 18, 2024
…ch as elasticsearch does not store the simple products
* @param array $products
* @return array
*/
private function getSimpleProductIds(array $products): array
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The context with this additional query is that elasticsearch does not store the simple products data from the configurable. This solution is not perfect but it does mean the backend sees the simple products as well as the parents

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Priority: P2 A defect with this priority could have functionality issues which are not to expectations. Progress: pending review
Projects
Pull Requests Dashboard
  
Pending Review
Development

Successfully merging this pull request may close these issues.

Magento product search in admin product grid not working correctly. No OR functionality
1 participant