Php 使用Solr在Magento中索引自定义实体
我正在尝试使用Magento在Solr中索引自定义实体。 我遵循了以下指南:,但我仍然无法让它工作 在我的例子中,我有一个表示新闻的EAV实体,我希望默认的Magento搜索显示包含此实体的结果 与我创建的“getSolrDocument”函数的指南类似:Php 使用Solr在Magento中索引自定义实体,php,magento,solr,Php,Magento,Solr,我正在尝试使用Magento在Solr中索引自定义实体。 我遵循了以下指南:,但我仍然无法让它工作 在我的例子中,我有一个表示新闻的EAV实体,我希望默认的Magento搜索显示包含此实体的结果 与我创建的“getSolrDocument”函数的指南类似: protected function getNewsSolrDocument($id, $name, $storeId, $visibility, $category, $title, $subtitle, $description) {
protected function getNewsSolrDocument($id, $name, $storeId, $visibility, $category, $title, $subtitle, $description) {
$document = new Apache_Solr_Document();
$document->addField("id", $id);
$document->addField("unique", $id);
$document->addField("news_name_en", $name);
$document->addField("news_category_en", $category);
$document->addField("news_title_en", $title);
$document->addField("news_subtitle_en", $subtitle);
$document->addField("news_description_en", $description);
return $document;
}
和“addSolrDocument”:
但是$solrClient->addDocument($document)抛出一个异常:
“400”状态:[doc=15]缺少必填字段:可见性
我注意到在Magento提供的Solr模式中有以下部分:
<!-- System required fields. -->
<field name="id" type="string" indexed="true" required="true" stored="true"/>
<field name="unique" type="string" indexed="true" required="true"/>
<field name="store_id" type="int" indexed="true" required="true"/>
<field name="in_stock" type="boolean" indexed="true" required="true"/>
<field name="visibility" type="int" indexed="true" required="true"/>
该部分定义了哪些字段是必填字段,但对于我的新闻实体,“库存”和“可见性”是无用的
我使用的是MagentoEE1.14.0.1和Solr3.6.2。
实现目标的正确方法是什么?
谢谢在不太了解您的场景的情况下,您只需在函数体中添加以下行:
$document->addField("visibility", $visibility);
显然,传递了$visibility
变量,因此添加它不会有任何影响。它可能会增加索引大小,但整数不会有太大影响(此外,名称表明它只是某种标志)。//此字段是必需的。///在id中存储带有前缀的实体,以便我们可以将其与目录产品区分开来$blodId=self::ENTITY\u UNIQUE\u前缀$身份证$document->addField(self::ENTITY\u ID\u FIELD,$blodId)$文档->添加字段(self::ENTITY\u UNIQUE\u FIELD,$id)$document->addField(self::ENTITY_STORE_ID_FIELD,$storeId);//此字段是必需的,但对我们的“新闻实体”无效$document->addField(self::ENTITY\u storaged\u FIELD,true)
//这些字段是我们真正需要的字段$文档->添加字段(self::ENTITY\u VISIBILITY\u FIELD,$enabled)$文档->添加字段(self::NEWS\u TITLE\u FIELD,$TITLE)$文档->添加字段(self::NEWS\u SUBTITLE\u FIELD,$SUBTITLE)$文档->添加字段(self::NEWS\u DESCRIPTION\u FIELD,$DESCRIPTION)代码>
$document->addField("visibility", $visibility);