Skip to content

Conversation

@peterkeung
Copy link
Contributor

@peterkeung peterkeung commented Nov 19, 2016

https://jira.ez.no/browse/EZP-26630

In eZ Find, all filters expect to follow the pattern field:value. If you don't have a colon, ezfeZPSolrQueryBuilder::getParamFilterQuery() prepends a colon, effectively breaking some filters. This prevents you from adding special filters for the "fq" parameter in Solr, such as frange queries:

http://solr.pl/en/2011/05/30/quick-look-frange/

An example use case is to enforce a minimum relevance score:

{!frange l=1}query({!edismax v=$q})

You can get around this by using RawFilterList in ezfind.ini, but that's applied to every query.

This proposed solution would add a new parameter "raw_filter" to the ezfind/search fetch function:

'raw_filter', array( '{!frange l=1\}query({!edismax v=$q\})' ),

@peterkeung
Copy link
Contributor Author

Ping @moismailzai @benkmugo

@moismailzai
Copy link

moismailzai commented Nov 21, 2016

+1 this looks good to me.

I can confirm this patch is functional and works well in practice (that is, the filter range is limiting results as expected).

@benkmugo
Copy link

The flexibility this adds is a good improvement I think. It avoids having to use workarounds or going via the raw solr fetch in template land.

+1

@gggeek
Copy link
Contributor

gggeek commented Nov 26, 2017

+1 (apart from remark)

*/
public function search( $query, $offset = 0, $limit = 10, $facets = null,
$filters = null, $sortBy = null, $classID = null, $sectionID = null,
$filters = null, $rawFilters = null, $sortBy = null, $classID = null, $sectionID = null,
Copy link
Contributor

Choose a reason for hiding this comment

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

why not add it as last param? better for BC

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Sure -- easy change to make. @andrerom who else would we need approval from before merging?

Copy link
Contributor

Choose a reason for hiding this comment

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

Well this BC point should probably be fixed and then maybe there is another approval coming :)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

OK, $rawFilters has been moved to the last param now!

@peterkeung peterkeung force-pushed the per-query-raw-filters branch from ea19ed3 to 639b532 Compare December 7, 2017 17:41
@pkamps
Copy link
Contributor

pkamps commented Dec 14, 2017

I don't like that the parameters filter and raw_filter take an array for the value. I think it will combine multiple array elements with a logical AND. That's something not very obvious for a developer.
But that's how the parameter filter was developed and raw_filter is now consistent to that approach - so I'm OK with it.
Maybe we add inline doc saying something about how multiple array entries are handled.

+1

@benkmugo
Copy link

I think adding a brief inline doc note about those two parameter values would be a good idea.

@peterkeung peterkeung force-pushed the per-query-raw-filters branch from 639b532 to 95ccbe8 Compare December 22, 2017 15:16
@peterkeung
Copy link
Contributor Author

@pkamps @benkmugo I've added additional comments where the filters are built

@benkmugo
Copy link

benkmugo commented Jan 1, 2018

+1

@peterkeung
Copy link
Contributor Author

Let's get this merged!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

6 participants