Lucene を使用して検索可能なサイトがあります。ログから、ユーザーが単数形の用語を入力したために探しているものが見つからない場合があることに気付きましたが、その用語の複数形のみがサイトで使用されています。単語の他の形の用法も検索してみたいと思います。これは何度も解決されていると確信している問題ですが、これに対するベストプラクティスは何ですか?
注意: このサイトには英語のコンテンツしかありません。
私が考えたいくつかのアプローチ:
- ある種のシソーラス ファイルで単語を調べて、特定の単語の別の形式を判断します。
- いくつかの例:
- 「車」を検索すると、クエリに「車」も追加されます。
- "carry" を検索すると、クエリに "carries" と "carried" も追加されます。
- "small" を検索すると、"smaller" と "smallest" もクエリに追加されます。
- 「can」を検索すると、「can't」、「cannot」、「cans」、「canned」もクエリに追加されます。
- 逆に動作するはずです (つまり、"carries" を検索すると、"carry" と "carried" が追加されます)。
- 欠点:
- 辞書/シソーラスが頻繁に更新されない限り、多くの新しい専門用語では機能しません。
- シソーラス ファイルの検索のパフォーマンスについてはよくわかりません。
- いくつかの例:
- いくつかのヒューリスティックに基づいて、アルゴリズム的に代替フォームを生成します。
- いくつかの例:
- 単語が「s」、「es」、「ed」、「er」、または「est」で終わる場合は、接尾辞を削除します
- 単語が「ies」または「ied」または「ier」または「iest」で終わる場合は、「y」に変換します。
- 単語が「y」で終わる場合は、「ies」、「ied」、「ier」、「iest」に変換します。
- 単語に「s」、「es」、「er」、「est」を追加してみてください。
- 欠点:
- ほとんどの入力に対して多くの非単語を生成します。
- ハックのように感じます。
- TheDailyWTF.com で見つけたもののように見えます。:)
- いくつかの例:
- もっと洗練された何か?
私は最初の 2 つのアプローチの何らかの組み合わせを行うことを考えていますが、シソーラス ファイル (または「シソーラス」は完全に正しくないため、または「辞書」ではないため、そのファイルが何と呼ばれているか) を見つける場所がわかりません。 )。