2015-11-02 18 views
9

Diacritic-Case-Insensitiveオプションを使用してLoopback + MongoDBの結果を照会する方法はありますか?その後分音符大文字小文字を区別しない検索ループバック

Olímpic 
olimpic 
Olimpic 

、上記のすべてが結果として返されるべきである:私は、クエリolimpicを検索したい、とデータベースのような言葉が含まれている場合たとえば

、。 私は、以下に挙げた複数のクエリと他の組み合わせを試してきましたが、これまでのところ何も働いていません。

{"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"}}} 

ありがとうございます!

+0

これまでに試したことはありますか?もしそうなら、あなたはそれを共有すべきです。 – lintmouse

+0

@dustmouseすべてのテストが失敗しました。私が解決策を見つけたら、それを公開する – mhergon

+0

mhergon - それは問題ありません。しかし、あなたが問題を解決するために努力したことを実証しようとするあなたの試みを示すことを傷つけることはありません。 – lintmouse

答えて

8

MongoDBのバージョン3.1.7ではtext indicesで可能なはずです。詳細は、SERVER-19557を参照してください。以前のバージョンでは発音区別符は扱えません。テキストインデックスを設定する

はかなり簡単です:単にあなたが検索したいすべてのフィールドにインデックスを作成 - コレクションごとに1つのだけのテキスト索引があることができます。今すぐ

db.yourCollection.createIndex(
    {"name.text":"text","foo":"text"}, 
    {"default_language":"french"} 
) 

、あなたを検索しますインデックスを作成するには、次のようにします。

db.yourCollection.find(
    { $text: {$search:"Olimpic"} } 
) 

期待される結果が得られるはずです。

hth

関連する問題