MongoDBテキスト検索では、スノーボールステミングライブラリ を使用します 単語を期待される語根形式(または語幹)に減らす )一般的な言語規則に基づいています。アルゴリズムによるステミングは迅速な削減を提供しますが、言語には、精度に影響を与える可能性のある例外(不規則または矛盾する動詞の活用パターンなど)があります。 スノーボールの紹介 アルゴリズムステミングのいくつかの制限の概要が含まれています。
walking
の例 walk
の語幹 期待どおりに一致します。
ただし、trekking
の例 trekk
に由来します そのため、trek
の検索キーワードと一致しません 。
これを確認するには、クエリを説明し、parsedTextQuery
を確認します。 使用された語幹検索用語を示す情報:
db.events.find({$text: {$search: 'Trekking'} }).explain().queryPlanner.winningPlan.parsedTextQuery
{
"terms" : [
"trekk"
],
"negatedTerms" : [ ],
"phrases" : [ ],
"negatedPhrases" : [ ]
}
オンラインの
ユースケースに一般的に影響を与える可能性のある例外を回避するには、検索結果に影響を与えるキーワードを使用して、テキストインデックスに別のフィールドを追加することを検討できます。この例では、trek
を追加します イベントがtrekking
として記述されるように、キーワードとして 検索結果にも一致します。
一般にレンマ化と呼ばれる、より正確な語尾変化のための他のアプローチがあります。 。 Lemmatizationアルゴリズムはより複雑で、自然言語処理 のドメインに向かい始めます。 。アプリケーションにさらに高度なテキスト検索を実装する場合に利用できるオープンソース(および商用)ツールキットは多数ありますが、これらはMongoDBテキスト検索機能の現在の範囲外です。