Php 使用Solr在Magento中索引自定义实体

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

我正在尝试使用Magento在Solr中索引自定义实体。 我遵循了以下指南:,但我仍然无法让它工作

在我的例子中,我有一个表示新闻的EAV实体,我希望默认的Magento搜索显示包含此实体的结果

与我创建的“getSolrDocument”函数的指南类似:

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