私はmongo db postsコレクションに対してユーザーが投稿のタイトルを入力し始めることができるオートコンプリートサービスを作成しています。そのキーワードを含むすべての投稿をタイトルに返し、 'total'というフィールドでソートします。mongoで自動補完キーワードクエリを最適化する方法はありますか?
検索するタイトルフィールドの小文字の「lower」というフィールドがあり、そのフィールドにインデックスが設定されています。私はキーワードマッチを探しているので、最初だけではなく、タイトルのどこにでも出現する単語のlowerCaseTitleに対する正規表現検索を行っています。
私は実行計画を見て、すべてのアイテムをスキャンしたように見えます(完全な投稿コレクションには10061アイテムあります)。私は "lower_1"インデックスと "total_-1"インデックスの両方のヒントを試してみましたが、同様のように見えますが、クエリに制限数50を設定すると、最適化するためにできることはありますか?この種のフルテキスト検索では、頭の上から単純なことは考えられません。
"cursor" : "BtreeCursor lower_1",
"nscanned" : 10061,
"nscannedObjects" : 2,
"n" : 2,
"scanAndOrder" : true,
"millis" : 154,
"nYields" : 0,
"nChunkSkips" : 0,
"isMultiKey" : false,
"indexOnly" : false,
"indexBounds" : {
"lower" : [
[
"",
{
}
]
]
}
私は複数の単語の検索で一致するように&&マッチを行うと思います...正確な一致を最初に表示する方法の提案はありますか? 「これは激しく」という言い方をする前に、「激しくこれがある」とか「これは激しいのですか? – MonkeyBonkey
私はそうは思わない。より高い忠実度が必要な場合は、ステミング、ファセット検索、結果ランキング、さらに多くの検索関連機能をサポートするSolRのような検索専用ソリューションを使用することが最善の方法だと思います。 – mnemosyn