Solr Case Insensitive Search while preserving cases in Index and allowing Boolean AND/OR searches

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Solr Case Insensitive Search while preserving cases in Index and allowing Boolean AND/OR searches

Lewin Joy (TMNA)
Hi,

I am exploring possibility to do case insensitive filter/facet queries in solr.
I would also need to preserve the cases in the index.
This means that the normal LowerCaseFilterFactory approach would not work as facet values will not preserve cases and will show in all lowercase.

One method was to use facet.contains along with f.fieldname.facet.ignoreCase=true.
But, I need an option to do more with the search keyword.
Example if possible,  would be something like  --> facet.contains=Apple OR Dell OR HP

Another approach is to do a filter query with general expressions, which gets costly.
Or copy field with edge Ngram and LowerCaseFilter factory which is again costly.


Does anyone have any suggestions? It would be good if we have an option with the facet.contains
Just need a Boolean capability in there.

Thanks,
Lewin
Reply | Threaded
Open this post in threaded view
|

Re: Solr Case Insensitive Search while preserving cases in Index and allowing Boolean AND/OR searches

Emir Arnautović
Hi Lewin,
Not sure I follow your example. From what I read, you could have one field lowercased and other not and filter on the first field and facet on the second. There is probably something that I am missing, so some example would probably help.

Thanks,
Emir
--
Monitoring - Log Management - Alerting - Anomaly Detection
Solr & Elasticsearch Consulting Support Training - http://sematext.com/



> On 25 Nov 2019, at 23:00, Lewin Joy (TMNA) <[hidden email]> wrote:
>
> Hi,
>
> I am exploring possibility to do case insensitive filter/facet queries in solr.
> I would also need to preserve the cases in the index.
> This means that the normal LowerCaseFilterFactory approach would not work as facet values will not preserve cases and will show in all lowercase.
>
> One method was to use facet.contains along with f.fieldname.facet.ignoreCase=true.
> But, I need an option to do more with the search keyword.
> Example if possible,  would be something like  --> facet.contains=Apple OR Dell OR HP
>
> Another approach is to do a filter query with general expressions, which gets costly.
> Or copy field with edge Ngram and LowerCaseFilter factory which is again costly.
>
>
> Does anyone have any suggestions? It would be good if we have an option with the facet.contains
> Just need a Boolean capability in there.
>
> Thanks,
> Lewin