文字列値に単語またはフレーズのセットが含まれているmongodbエントリを選択するための最良の戦略は何ですか?私はmysqlのLIKE関数に相当するものを考えています。
WHERE (TEXT LIKE "% apple %") or (TEXT LIKE "% banana %")
文字列のトークン化を伴うオプションを見てきましたが、これにはすべてのテキストのユニグラムの作成が含まれます。
文字列値に単語またはフレーズのセットが含まれているmongodbエントリを選択するための最良の戦略は何ですか?私はmysqlのLIKE関数に相当するものを考えています。
WHERE (TEXT LIKE "% apple %") or (TEXT LIKE "% banana %")
文字列のトークン化を伴うオプションを見てきましたが、これにはすべてのテキストのユニグラムの作成が含まれます。
現在、MongoDB には全文検索機能はありませんが、SOLR などの外部検索エンジンを簡単に使用できます。
正規表現や単語ステミングなどを使用してテキスト検索を再構築しようとすることは強くお勧めしません。むしろ、アプリ独自の機能に集中する必要があります:)
私はこの組み合わせを使用しています: Mongoid、Sunspot、およびMongoid-Sunspot。本番環境で非常にうまく機能し、開発のセットアップは簡単です。
MongoDB クエリで正規表現サポートを使用できます。詳細は次のリンクから入手できます
http://docs.mongodb.org/manual/reference/operator/regex/
上記のリンクが将来再び移動した場合の 2 つの例を次に示します。
db.collection.find( { field: /acme.*corp/i } );
db.collection.find( { field: { $regex: 'acme.*corp', $options: 'i' } } );