2017-01-18 13 views
0

我々はMongoDBを新しいプロジェクトに使用しています。このプロジェクトでは、テキスト検索($ textインデックスを使用)を行う必要があります。

私たちのデータは空白なしで暗号化する必要があるため、MongoDbは1つの単語のように見えるので、(暗号化されたテキストで)照会しようとすると、結果は得られません。例えば

(暗号化では必ず、実際の生活の中で、このデータ):

私は、文書内に次のテキストを持っていた場合:

「誰かがいるのただ一つの花、単一の花を愛しているなら。」星のすべての何百万人で、それだけで星を見て、彼を幸せにするために十分である、成長 そして、私のようなもの照会:私はそれがフレーズを検索したい

db.book.find( 
{ 
    $text: { $search: "mill \"enou\"" } 
}) 

を。

MongoDbにソフト検索を許可する方法はありますか?

編集: 最後に、インデックス付きRejex式が私たちのために働いていました。

答えて

1

私はあなたの最良の選択肢ではなく、あなたが提供する例については、この

を行うには$テキストオペレータの$regexを使用することであると思い、クエリは次のようになります。

db.book.find({text: 
    {$regex: /mill.*enou/ } 
}) 
+0

パフォーマンスの面では、ドン正規表現を使って "$ text"インデックスの利益を失うことはありませんか? – AvrahamL

+0

@AvrahamLはい、正規表現のクエリは時間がかかりますが、MongoDB 3.4の時点でこれを達成する唯一の方法です – felix