2016-08-09 3 views
0

私は5単語のクエリ文字列を持っています。 exmple "cat dog fish animals"のためにlucene solr - クエリ内の各単語のnumCountを知る方法

各単語の一致数を知る必要があります。

/q=name:cat&rows=0&facet=true 
/q=name:dog&rows=0&facet=true 
/q=name:fish&rows=0&facet=true 
/q=name:bird&rows=0&facet=true 
/q=name:animals&rows=0&facet=true 

と各クエリから各単語の一致数を取得:私は5つのクエリを作成するには、この時点で

しかし、この方法は時間がかかりすぎる。

これで、1つのクエリで各単語のnumCountを確認する方法はありますか?

任意のヘルプappriciated!

答えて

1

この場合、functionQueriesはお友達です。特に:

termfreq(field,term)用語は、その文書のフィールドに表示された回数を返します。構文例:用語が全体のインデックスにフィールドに表示された回数を返します termfreq(テキスト、「メモリ」)

totaltermfreq(field,term)。 ttfは totaltermfreqの別名です。構文例:TTF(テキスト、 'メモリ')

たとえば、次のクエリ:

q=*%3A*&fl=cntOnSummary%3Atermfreq(summary%2C%27hello%27)+cntOnTitle%3Atermfreq(title%2C%27entry%27)+cntOnSource%3Atermfreq(source%2C%27activities%27)&wt=json&indent=true 

は、次の結果を返します。

"docs": [ 
     { 
     "id": [ 
      "id-1" 
     ], 
     "source": [ 
      "activities", 
      "activities" 
     ], 
     "title": "Ajones3 Activity Entry 1", 
     "summary": "hello hello", 
     "cntOnSummary": 2, 
     "cntOnTitle": 1, 
     "cntOnSource": 1, 
     "score": 1 
     }, 
    { 
     "id": [ 
      "id-2" 
     ], 
     "source": [ 
      "activities", 
      "activities" 
     ], 
     "title": "Common activity", 
     "cntOnSummary": 0, 
     "cntOnTitle": 0, 
     "cntOnSource": 1, 
     "score": 1 
     } 
} 
] 

それがうまく機能している間ことに注意してください多値フィールドの場合、関数は最初のエントリだけを考慮していると思われます。たとえば、上記の例では、termfreq(source%2C%27activities%27)は2の代わりに1を返します。

+0

実際に私はtotaltermfreq(field、term)を試しましたが、何か間違っていなければなりません。これまで私が求めてきたことを "-1"私に返します。 &q = *:*&fl = ttf(名前、 "cat")、ttf(名前、 "dog")&rows = 1&wt = json&indent = true'これは私が間違っているのですか? – SuperYegorius

+0

あなたの質問を出力の例で編集してください。私は質問を投稿します。 – AR1

+0

@SuperYegorius - 質問と結果の例を答えに加えました。もしあなたがそれに満足しているなら、それを受け入れてください。 – AR1

関連する問題