Lucene (または任意のテキスト検索エンジン) を使用してドキュメントを保存し、カスタムステマーと組み合わせて、(単語のバリエーションではなく)意味に基づいてドキュメント テキストにインデックスを付けることができます。
通常、語幹は、単語のすべてのバリエーションを基本語幹に変換するために使用されます。たとえば、文書はそのままのテキストで保存および検索されますが、「歌う、歌う、歌う、歌う」という単語はいずれも「歌う」として索引付けされるため、検索用語「歌う」を使用して検索を行うと、 、sing、sing、sang、sung を含むすべてのドキュメントにヒットします。
同様に、検索語もステミングされる可能性があるため、「sing、sing、sang、sung」のいずれかを検索すると、「sing」が検索語であるかのように検索されます。
標準ステマーは通常の英語の単語のバリエーションを処理しますが、意味に基づいて語幹を作成することもできます。たとえば、「リンク」したいすべての単語について、「問題、問題または苦情」から「問題」などのいずれかをステミングするステマーを作成できます。
ステマーを使用する利点は、検索関連の面倒な作業がすべてテキスト検索エンジンによって行われることです (さらに、テキスト検索エンジンは信じられないほど高速です!)。
実装に関しては、データベース内のデータに基づいてステマーのコードを生成するか、動的にして検索/インデックス操作が行われるたびにデータベースを検索するか、またはどこかでリンケージをデータ駆動型にすることができます。 between - 値をキャッシュし、定期的に更新します。