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

Fields to search in parameters #196

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions dist/src/Resources/config/config.yaml
Original file line number Diff line number Diff line change
@@ -1,5 +1,18 @@
parameters:
monsieurbiz.search.product.is_in_stock_scoring_boost: 200 # Enable the boost for in stock products
monsieurbiz.search.product.search.fields_to_search:
- 'name^5'
- 'description'
- 'short_description' # We add our new value in search
monsieurbiz.search.product.search.nested_fields_to_search:
- 'main_taxon:name^2' # We add our new nested value in instant search
monsieurbiz.search.product.instant.fields_to_search:
- 'name^5'
- 'name.autocomplete'
- 'description'
- 'short_description' # We add our new value in search
monsieurbiz.search.product.instant.nested_fields_to_search:
- 'main_taxon:name^2' # We add our new nested value in instant search

imports:
- { resource: "services.yaml" }
Expand Down
26 changes: 0 additions & 26 deletions dist/src/Resources/config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -24,32 +24,6 @@ services:
arguments:
- '@.inner'

# Add short_description in searchable fields
monsieurbiz.search.request.query_filter.product_search.search_term_filter:
class: MonsieurBiz\SyliusSearchPlugin\Search\Request\QueryFilter\Product\SearchTermFilter
arguments:
$fieldsToSearch:
- 'name^5'
- 'description'
- 'short_description' # We add our new value in search
$nestedFieldsToSearch:
- 'main_taxon:name^2' # We add our new nested value in search
tags:
- { name: monsieurbiz.search.request.product_search_filter }

monsieurbiz.search.request.query_filter.product_instant_search.search_term_filter:
class: MonsieurBiz\SyliusSearchPlugin\Search\Request\QueryFilter\Product\SearchTermFilter
arguments:
$fieldsToSearch:
- 'name^5'
- 'description'
- 'name.autocomplete'
- 'short_description' # We add our new value in instant search
$nestedFieldsToSearch:
- 'main_taxon:name^2' # We add our new nested value in instant search
tags:
- { name: monsieurbiz.search.request.product_instant_search_filter }

# Define sorters
App\Search\Request\Sorting\Product\ShortDescriptionSorter:
tags:
Expand Down
2 changes: 1 addition & 1 deletion docs/add_custom_boosts.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ The boost is enabled when the value of `monsieurbiz.search.product.is_in_stock_s
To create a new boost, you must

- [Create a new class that implements `MonsieurBiz\SyliusSearchPlugin\Search\Request\FunctionScore\FunctionScoreInterface`](../dist/src/Search/Request/FunctionScore/Product/BoostExpensiveProductFunction.php)
- [Tag it with `monsieurbiz.search.request.product_function_score`](../dist/src/Resources/config/services.yaml#L54)
- [Tag it with `monsieurbiz.search.request.product_function_score`](../dist/src/Resources/config/services.yaml#L35)

In our example we will boost, in the search, the product with a price greater than 50.
8 changes: 4 additions & 4 deletions docs/add_custom_entities.md
Original file line number Diff line number Diff line change
Expand Up @@ -68,23 +68,23 @@ Also, the `public function getTarget(): string` method must return the value of

If you want to display your entity in the instant search (`instant_search_enabled` is `true` in configuration).

[Declare your instant search request service](../dist/src/Resources/config/services.yaml#L60).
[Declare your instant search request service](../dist/src/Resources/config/services.yaml#38).

[Don't forget to bind the parameter for the service](../dist/src/Resources/config/services.yaml#L6).

### Define your Search request

[Declare your search request service](../dist/src/Resources/config/services.yaml#L67).
[Declare your search request service](../dist/src/Resources/config/services.yaml#45).

[Don't forget to bind the parameter for the service](../dist/src/Resources/config/services.yaml#L6).

You can extends the `MonsieurBiz\SyliusSearchPlugin\Search\Request\Search` class to manage your aggregations like in [products](../src/Search/Request/ProductRequest/Search.php).

### Define your Search query filter

[Declare your search query filter for instant search](../dist/src/Resources/config/services.yaml#L77).
[Declare your search query filter for instant search](../dist/src/Resources/config/services.yaml#55).

[Declare your search query filter for search](../dist/src/Resources/config/services.yaml#L87).
[Declare your search query filter for search](../dist/src/Resources/config/services.yaml#65).

You can extends the `MonsieurBiz\SyliusSearchPlugin\Search\Request\QueryFilter\SearchTermFilter` class to manage your custom behaviour like in [products](../src/Search/Request/QueryFilter/Product/SearchTermFilter.php).

Expand Down
2 changes: 1 addition & 1 deletion docs/add_custom_sorts.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
You can create your own sorter service by implementing the `SorterInterface` interface.
For example, in your test application, [we have a short description sorter](../dist/src/Search/Request/Sorting/Product/ShortDescriptionSorter.php).

Add [the tag `monsieurbiz.search.request.product_sorter` to your service](../dist/src/Resources/config/services.yaml#L49).
Add [the tag `monsieurbiz.search.request.product_sorter` to your service](../dist/src/Resources/config/services.yaml#27).

## Replace existing sorter

Expand Down
7 changes: 3 additions & 4 deletions docs/add_custom_values.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,7 @@ You will have the `item.short_description` variable available in your templates.
## Search on the custom value

With only the decorator, you will not be able to search in the content of the new field.
You have to redeclare `monsieurbiz.search.request.query_filter.product_search.search_term_filter`
and `monsieurbiz.search.request.query_filter.product_instant_search.search_term_filter` services
to add the `short_description` fields.
You have to change parameters to define the fields to search for the search page and the instant search.

- [Add `short_description` in search term filter](../dist/src/Resources/config/services.yaml#L34)
- [Add `short_description` in `monsieurbiz.search.product.search.fields_to_search`](../dist/src/Resources/config/config.yaml#6)
- [Add `short_description` in `monsieurbiz.search.product.instant.fields_to_search`](../dist/src/Resources/config/config.yaml#13)
20 changes: 13 additions & 7 deletions src/Resources/config/services.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,15 @@ parameters:
- !php/const MonsieurBiz\SyliusSearchPlugin\Search\Request\RequestInterface::SEARCH_TYPE
- !php/const MonsieurBiz\SyliusSearchPlugin\Search\Request\RequestInterface::TAXON_TYPE
- !php/const MonsieurBiz\SyliusSearchPlugin\Search\Request\RequestInterface::INSTANT_TYPE
monsieurbiz.search.product.search.fields_to_search:
- 'name^5'
- 'description'
monsieurbiz.search.product.search.nested_fields_to_search: []
monsieurbiz.search.product.instant.fields_to_search:
- 'name^5'
- 'name.autocomplete'
- 'description'
monsieurbiz.search.product.instant.nested_fields_to_search: []

services:

Expand Down Expand Up @@ -120,19 +129,16 @@ services:
monsieurbiz.search.request.query_filter.product_search.search_term_filter:
class: MonsieurBiz\SyliusSearchPlugin\Search\Request\QueryFilter\Product\SearchTermFilter
arguments:
$fieldsToSearch:
- 'name^5'
- 'description'
$fieldsToSearch: '%monsieurbiz.search.product.search.fields_to_search%'
$nestedFieldsToSearch: '%monsieurbiz.search.product.search.nested_fields_to_search%'
tags:
- { name: monsieurbiz.search.request.product_search_filter }

monsieurbiz.search.request.query_filter.product_instant_search.search_term_filter:
class: MonsieurBiz\SyliusSearchPlugin\Search\Request\QueryFilter\Product\SearchTermFilter
arguments:
$fieldsToSearch:
- 'name^5'
- 'description'
- 'name.autocomplete'
$fieldsToSearch: '%monsieurbiz.search.product.instant.fields_to_search%'
$nestedFieldsToSearch: '%monsieurbiz.search.product.instant.nested_fields_to_search%'
tags:
- { name: monsieurbiz.search.request.product_instant_search_filter }

Expand Down
Loading