2011-12-27 1 views
1

私は、データベースを検索し、ユーザーが入力した文字列に従って検索結果を関連性によってソートするプロジェクトに取り組んでいます。私の現在の検索はかなりうまくいくと思うが、関連性によって結果を並べ替えるためにコンパイラが書いたコンパイラは私に面白い結果を与えている。私は関連性を考慮する必要があるか分からない。私はこれが情報検索の大きな枝であることは知っていますが、関連性によってオブジェクトを並べ替え、フィードバックを感謝する検索の例を見つけることをどこから始めるべきかわかりません。検索結果を関連性によって並べ替えるにはどうすればよいですか?

私の特定の問題についてもう少し背景を説明するために、ユーザーはマイナーとメジャーの分類(たとえば、 XBox 360のゲームは、major = video_gamesおよびminor = xbox360の各フィールドとともにその特定の名前と共に格納されてもよい)。検索で考慮すべき4つの主なフィールドは、オブジェクトの種類のメジャー、メジャー、マイナー、ジャンルです。

+1

Luceneはこれを行います。それを使用したくない場合は、コードのアイデアを見ることができます。 – Bill

+1

ありがとうOli!私はLuceneを調べました。私はそれが私の目的のために少し重いかもしれないと思ったが、私はそれをさらに調べるだろう。 – Salmontres

+1

したがって、Solrを使用してください。多くの素敵な機能を備えたLuceneを包みました。 –

答えて

1

lucene/Solrを使用したくない場合は、距離メトリックを使用して、クエリとデータベースから取得した行との類似性を常に見つけることができます。スコアを取得すると、スコアを並べ替えることができ、関連性によってソートされたものとみなされます。

これはちょうどluceneの場面の後ろで起こるものです。マンハッタン距離、n次元空間内の点の距離などの単純な類似性メトリックを使用できます。より多くの洞察を得るためにluceneスコアリング式を探します。