ちょっと興味があったので調べてみた。 全文検索には主に転置インデックス(Inverted Index)によるものと接尾辞配列(Suffix Array)/接尾辞木(Suffix Tree)によるものがある。 前者は効率的にデータを扱えるものの、キーワード単位でしかインデックスを付けられないので形態素解析するなどして検索対象のテキストからキーワードを取り出す必要がある。 後者は任意のクエリにマッチすることができるもののデータサイズが大きくなりがちであることと検索結果となる文書にスコア付けができないなどの問題がある。 最近ではSuffix Array/Treeによる全文検索に対して簡潔データ構造(Succinct Data Structure)を導入してデータサイズを小さくしたり、スコアをもたせる方法が提案されたりと何かと話題が多い。 Suffix Array/Treeが持つ文書検索の機能は、