2011-06-23 4 views
0

メンバーを姓/名で検索できる検索機能を構築する必要があります。検索パラメータ(住所など)があります。姓名でスマート検索

検索で一致候補のリストが表示されるので、ユーザーは「正しい」一致と思われるものを選択できます。

"正しい"結果がリストの最初の数項目の間になるように、検索は十分にスマートでなければなりません。検索では、タイプミスやスペルミスにも寛容でなければならず、名前のショートカット、つまりボブ・ロバートやビル・ウィリアムにも気づく必要があります。

私は仕事のツールとしてLuceneと家族(弾性検索のような)を調べ始めました。フルテキスト検索に似た問題に対処するためのさまざまな機能を備えていますが、私はLuceneが正しいツールではないという点まで、私の仕事にどのように使用するかについてはあまりよく分かりません。

あなたはどう思いますか - 私の問題を解決するためにどのようにElastic Searchを利用できますか?それとも別の場所で見るべきですか?

答えて

3

Luceneは距離クエリを編集できるため、検索クエリでいくつかのタイプミスが許容されます。これを用語の編集可能距離と定義します。例えば

name:johnni~0.8 

を「ジョニー」を返します。またSolrには、既製の検索filters、あなたが検索に使用することができますアナライザーの広い配列を提供します。 は、あなたのケースでは私はおそらくいくつかのフィルタ工場を一緒に連鎖します:

  • TrimFilterFactory - (ほとんどの人が「ドン文字からアクセントを削除する - 大文字小文字の違い
  • ISOLatin1AccentFilterFactoryを取り除くために - クエリ
  • LowerCaseFilterFactoryトリムトン)とにかくアクセントで検索
  • PhoneticFilterFactory - のようなクエリのようなマッチングのためのサウンド:クリス - >クリス

外観リンクの下のドキュメントでは、上記のすべてのフィルタを使用するアナライザを使用して新しいソルインスタンスを設定する方法はかなり簡単です。私は都市名を検索するために同様のものを使用し、それはかなりうまくいった。

0

Luceneは、タイプミスやスペルミスを許容することができ、同義語を使用できます。 「正しい」結果がリスト

上の最初のいくつかの項目の中になるように

について検索が十分にスマートである必要があり、これを実行しようとしていない任意の検索エンジンがあります?

+0

いいえ - はいといいえ。つまり、Googleはあなたの検索語句に関連するもの(何が何であるか)を探しているため、あなたが何を探しているのかわからない場合でも、あなた自身に提案をしています。私の場合、私は私の記録(文書)を私が見てすぐに見つけたことを知ります。そして、私はただ一つしか必要ないと確信しています – mfeingold

+0

@mfeingold:残念ながら、あなたの基準が「私は(mfeingold)が期待しているものと一致しますか?私はあなたが何を期待しているかわからないので、ここに誰も答えられるとは思わない。なぜそれを試してみませんか? Solrをセットアップするのはばかげて簡単です。 – Xodarap

0

Bob/Robertが行っている限り、これは同義語で行うことができますが、信頼できるソースから同義語データを取得する必要があります。

@Asafが述べたことに加えて、N-gramインデックスを使用してスペルの変形を処理しようとする場合があります。それを行う方法の例については、CJKAnalyzerを参照してください。

関連する問題