SolrのmultiValuedなFieldにPHPから値をいれる

More than 3 years have passed since last update.

PHPからsolrのmultiValuedなFieldに値を追加する方法です。

solr schema.xmlの設定の一部はこんな感じ。


schema.xml

...

<field name="multi_no" type="int" indexed="true" multiValued="true"/>
...


当初は↓のように、

$multiNos = array();

$multiModels = $this->getMultiModel($id);
foreach ($multiModels as $multiModel) {
$multiNos[] = $multiModel->multi_no;
}

$doc = new SolrInputDocument();
$doc->addField('multi_no', $multiNos);

単にarrayを突っ込めばいけるのかと思ってました。

しかしそれではダメで、

$multiNos = array();

$multiModels = $this->getMultiModel($id);
foreach ($multiModels as $multiModel) {
$multiNos[] = $multiModel->multi_no;
}

$doc = new SolrInputDocument();
foreach ($multiNos as $multiNo) {
$doc->addField('multi_no', $multiNo);
}

↑のようにforeachで回すんですね。

知らんかった。