人気ブログランキング | 話題のタグを見る

自作自演

Firefox の話題を中心に Web 関係の話も扱うつもりの雑記。だった。
zisakuzien.exblog.jp

Top

Solr のファセット取得時に一部条件を打ち消したかった。

SimpleFacetParameters - Solr Wiki
wiki に書いてあることがすべて、なんだけれども、「solr facet 条件 上書き」とか日本語でうまく探せなくて困ったので残しておく。
以下、例は wiki に書いてあるものを使う。
=== Document Type ===
[ ] Word (42)
[x] PDF (96)
[ ] Excel(11)
[ ] HTML (63)

上記のように、doctype フィールドが普通の値(マルチバリューじゃない)だと、doctype:pdf で検索しているとき、そのままでは pdf 以外のファセットが 0件になってしまう。

wiki の通り、以下のように、条件にタグ付け({!tag=dt})をして、facet.field で除外条件({!ex=dt})を設定すると、ファセットの検索のときだけ、除外したい条件が無効化された検索が行われる。
fq={!tag=dt}doctype:pdf&facet=on&facet.field={!ex=dt}doctype



さて、これを Solarium で書くとどうなるか。
// 適当にクライアントを作る
$client = new Solarium\Client($config);
// 普通にクエリを用意するが、doctype については addTag をしておく
$query = $client->createQuery($client::QUERY_SELECT);
$query->setQuery('*:*');
$query->createFilterQuery('fq_status')->setQuery('status:public');
$query->createFilterQuery('fq_doctype')->setQuery('doctype:pdf')->addTag('tag_doctype');
// ファセットのフィールドを指定する際に addExclude でタグを指定する
$facetSet = $query->getFacetSet();
$facetSet->createFacetField('facet_doctype')->setField('doctype')->addExclude('tag_doctype');
$facetSet->setMinCount(1);
// 検索する
$resultset = $client->execute($query);

by tokage-shippo | 2015-12-14 18:53
Mozilla Firefox ブラウザ無料ダウンロード

about this...

書き手の名前は 晴柳祐志 と言います。


リンク

Twitter
いつか何とかしたいサイト

最新のトラックバック

検索

S M T W T F S
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
XML | ATOM

会社概要
プライバシーポリシー
利用規約
個人情報保護
情報取得について
免責事項
ヘルプ