2009-05-21 9 views
4

Luceneを使用して検索可能なサイトがあります。私はログから、ユーザーが特定の用語を入力したために探しているものが見つからないことがあることに気付きましたが、その用語の複数のバージョンのみがサイトで使用されています。他の形式の単語の使用も検索したいと思います。これは何度も何度も解決されていると私は確信している問題なので、これのベストプラクティスは何ですか?Luceneで単語の代替フォームを検索するためのベストプラクティス

注意:このサイトは英語のコンテンツです。

私が考えてきたいくつかのアプローチ:

  1. は、与えられた単語の代替形式を決定するために、シソーラスファイルのいくつかの種類に単語を検索します。
    • いくつかの例: "車" のための
      • 検索は、また、クエリに "車" を追加します。
      • 「キャリー」を検索し、「キャリー」と「キャリー」をクエリに追加します。
      • "small"を検索し、クエリに "small"と "smallest"を追加します。
      • "can"を検索し、 "can not"、 "can not"、 "cans"、および "canned"をクエリに追加します。
      • 逆に動作するはずです(「キャリー」に「キャリー」と「キャリー」を追加する必要があります)。
    • 欠点:辞書/シソーラスが頻繁に更新されない限り、
      • は、多くの新しい技術的な言葉では動作しません。
      • シソーラスファイルの検索のパフォーマンスについてはわかりません。
  2. いくつかの経験則に基づいて、アルゴリズムの代替形態を生成します。
    • いくつかの例:
      • 言葉は "S" または "ES" または "ED" または "ER" または "EST" で終わる場合、単語が "で終わる場合、接尾辞
      • をドロップ"y"に変換し、 "ies"、 "ied"、 "ier"、 "iest"に変換すると、
      • "s"、 "es"、 "er"、 "est"を単語に追加してみてください。
    • 欠点:
      • は、ほとんどの入力のための非単語の多くを生成します。
      • ハッキングのような感じです。
      • TheDailyWTF.comで見つけたようなものです。 :)
  3. 何かもっと洗練されたものですか?

私は最初の2つのアプローチの何らかの組み合わせを考えていますが、シソーラスファイル(またはシソーラスと呼ばれるものはどこが正しいのか、いずれも「辞書」ではない)。

答えて

4

分析パイプラインにPorterStemFilterを含めることを検討してください。索引を作成する際に使用される照会についても、同じ分析を必ず実行してください。

Lancaster stemmingアルゴリズムを使用しても良い結果が得られました。 PorterStemFilterを参考にして、Luceneとの統合が容易です。

3

これらのいくつかはかなりきれいなアイデアのように見えます。個人的には、クエリーにクエリー(クエリー変換)タグを追加してあいまいにしたり、Levenshtein編集距離を使用する組み込みのFuzzyQueryを使用すると誤字の訂正に役立ちます。

ファジィ検索「query tags」を使用して、Levenshteinも使用されます。 「車」の検索を考えてみましょう。クエリを 'car〜'に変更すると、 'car'と 'cars'などが検索されます。クエリには、必要なほとんどすべてを処理する必要のある他の変換があります。

4

Wordのステミングは英語では問題ありませんが、単語のステミングがほとんど不可能な(鉱山のような)言語の場合はオプション#1が実行可能です。私はLuceneのための私の言語(アイスランド語)のために、少なくとも1つのそのような実装を知っています。これは非常にうまくいくようです。

0

ステミングは、この問題に対処するための非常に標準的な方法です。私は、ポーター・ステマーが標準的なキーワード検索を積極的に実行する方法であることを発見しました。それは、異なる意味を持つ言葉を一緒に混ぜ合わせる。 KStemmerアルゴリズムを試してみてください。

1

特殊なフィールド(私は園芸でこれを行いました)または通常のステミング方法でうまく動作しない言語で作業している場合、クエリステートメントを使用して手動ステミングテーブルを作成できます。

考えている人や人が探しているすべてのミスマッチに対して単語 - >ステムマッピングを作成し、索引付けや検索を行うと、表にある単語が適切なステムに置き換えられます。クエリキャッシングのおかげで、これはかなり安い解決策です。

関連する問題