検索結果をランダム random に並べる Solr1.4 RandomSortField


Solr の検索結果はスコア順にソートされるのがデフォルトですが、時にはその順位をランダムに並べ替えたいこともあると思います。
ランダムに並べ替えるには RandomSortField を使います。

必要なのは schema.xml に下記の記述を追記するだけす。
既にインデックスにデータが入っている場合でもこの記述だけすればOkです。

% vi schema.xml

# の間に追加


#  の間に追加


追加したら Solr を再起動してください。


クエリストリングに 「&sort=random_hoge desc」 を追加します。
COMPANY フィールドを取得する例。

http://localhost:8080/solr/core_nexgate/select?q=*:*&fl=COMPANY&sort=random_hoge desc


検索結果をランダムに並べ替えるにはsort=random_hoge の"hoge"の部分を適当に変化させてクエリを投げてください。
この部分がシードになって並べ替えられるので検索結果がランダムになってるように見えます。
シードが同じだと同じソート結果になります。


ここからどーデモいい話ですがランダムソートのやり方を調べていて
2カ所スペルミスを見つけました。1つめは結構大事かもです。

  • RandomSortField のマニュアル

http://lucene.apache.org/solr/api/org/apache/solr/schema/RandomSortField.html


type="random" とすべきところが type="rand" になってます。
このマニュアル通りにコピペするとエラーで Solr が立ち上がらなくなるので注意が必要です。

  • Solr の schema.xml サンプル

example/solr/conf/schema.xml の 「The "RandomSortField"」で始まる説明で pseudo-random とすべきところが psuedo-random となっています。



これで広告主様も営業さんも満足満足。
ではでは


ボクのバイブルです。検索やる人にはオススメです。