2011-06-29 21 views
0

インデックス時にインデックス付きドキュメントごとに追加情報を提供したいと考えています。
この情報をクエリ時に同じアナライザでアクセスして比較します。
だから。理論的には、この値をこの文書にあるいくつかのフィールドに書いて、クエリ時にこのフィールドを検索することは、素晴らしいことです。Solr:追加情報をどこに保存しますか?

f.e.私は動物のデータベースを持っています。私は、3つの単語「犬」の中にすべての文書を探したい。 (ほんの一例)。私は自分の "animals"フィールドのために私のカスタムBaseTokenFilterFactoryをセットアップすることができます。私のカスタムTokenFilterを生成します。このトークンフィルターは、すべての「dog」単語を数えて、この番号をどこかに格納します。そう。検索時にアクセスするためにこの値をどこに保存できますか?

答えて

1

あなたの例は、カスタムアナライザとしてではなく、カスタム類似度またはSolrのクエリ機能によって処理する方が適しているように思えます。

たとえば、Solr 4.0を使用している場合は、関数termfreq(field,term)を使用して、dogが表示される回数で注文することができます。これは、その動物界ワード犬の少なくとも3つの出現を持っていないすべての文書をフィルタリングします

fq={!frange l=3 u=100000}termfreq(animals,"dog") 

:またはあなたがそうのようなフィルタとして使用することができます。 この方法を使用する利点は、ドキュメントのスコアリングに影響を与えず、ドキュメントのみをフィルタリングすることです。機能によってフィルタリングする

能力は、あなたがSolrの(> 1.4)の以前のバージョンを使用しているので、場合でも、Solrの1.4以来存在し、簡単にSolr 4.0がまだされていない」自分を照会

+0

「termfreq」関数を書くことができますリリースされました。 – denys

+0

@denys、私は知っていますが、IndexReaderに必要なすべてのデータ(用語頻度、文書頻度など)が含まれているので、あなたは非常に簡単にその関数を構築できます。 – Asaf

+0

私はそのような関数を書いていますが、 (http://stackoverflow.com/q/6534949/658346) – denys

関連する問題