自作自演

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);

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

about this...

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


リンク

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

最新のトラックバック

[foxkeh]フォクす..
from 「 Firefox ×?=!..
[Firefox]Fir..
from +Sun Flower〜報告〜+
Firefoxバトン
from MなMによるMのための日記
スキン変更!
from SUKA・SUKA・BLOG
Firefox 1.5に..
from mmkg

検索

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

個人情報保護
情報取得について
免責事項