Is there any way to query results on Loopback+MongoDB with Diacritic-Case-Insensitive options?
For example, If I want to search for the query olimpic
, and the database contains words like:
Olímpic
olimpic
Olimpic
Then, all of the above should be returned as results. I have tried with multiple queries listed below and other combinations, but nothing has worked so far.
{"where":{"name.text":{"like":"olimpic","options":"i"}}}
{"where":{"name.text":{"like":"/^olimpic$/i","options":"i"}}}
{"where":{"name.text":{"like":"/.*olimpic.*/i"}}}
{"where":{"name.text":{"regexp":"/.*olimpic.*/i"}}}
Any idea?
Thanks in advance!
What you want ought to be possible with text indices as of version 3.1.7 of MongoDB. Please see SERVER-19557 for details. Earlier versions can not deal with diacritics.
Setting up a text index is rather easy: simply create an index on all fields you want to be searched – there can be only one text index per collection:
db.yourCollection.createIndex(
{"name.text":"text","foo":"text"},
{"default_language":"french"}
)
Now, to search your index, you simply do the following:
db.yourCollection.find(
{ $text: {$search:"Olimpic"} }
)
which should give you the expected results.
hth
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With