Luceneを使用して検索可能なサイトがあります。私はログから、ユーザーが特定の用語を入力したために探しているものが見つからないことがあることに気付きましたが、その用語の複数のバージョンのみがサイトで使用されています。他の形式の単語の使用も検索したいと思います。これは何度も何度も解決されていると私は確信している問題なので、これのベストプラクティスは何ですか?Luceneで単語の代替フォームを検索するためのベストプラクティス
注意:このサイトは英語のコンテンツです。
私が考えてきたいくつかのアプローチ:
- は、与えられた単語の代替形式を決定するために、シソーラスファイルのいくつかの種類に単語を検索します。
- いくつかの例: "車" のための
- 検索は、また、クエリに "車" を追加します。
- 「キャリー」を検索し、「キャリー」と「キャリー」をクエリに追加します。
- "small"を検索し、クエリに "small"と "smallest"を追加します。
- "can"を検索し、 "can not"、 "can not"、 "cans"、および "canned"をクエリに追加します。
- 逆に動作するはずです(「キャリー」に「キャリー」と「キャリー」を追加する必要があります)。
- 欠点:辞書/シソーラスが頻繁に更新されない限り、
- は、多くの新しい技術的な言葉では動作しません。
- シソーラスファイルの検索のパフォーマンスについてはわかりません。
- いくつかの例: "車" のための
- いくつかの経験則に基づいて、アルゴリズムの代替形態を生成します。
- いくつかの例:
- 言葉は "S" または "ES" または "ED" または "ER" または "EST" で終わる場合、単語が "で終わる場合、接尾辞
- をドロップ"y"に変換し、 "ies"、 "ied"、 "ier"、 "iest"に変換すると、
- "s"、 "es"、 "er"、 "est"を単語に追加してみてください。
- 欠点:
- は、ほとんどの入力のための非単語の多くを生成します。
- ハッキングのような感じです。
- TheDailyWTF.comで見つけたようなものです。 :)
- いくつかの例:
- 何かもっと洗練されたものですか?
私は最初の2つのアプローチの何らかの組み合わせを考えていますが、シソーラスファイル(またはシソーラスと呼ばれるものはどこが正しいのか、いずれも「辞書」ではない)。