如何将com_content额外字段添加到智能搜索索引


10

在哪里可以找到任何教程或说明来构建可处理“ onPrepareFinderContent”的插件?

我在com_content文章中添加了一些额外的字段,我希望它们可以被Finder引擎索引。

我正在寻找一种将新元素添加到将FinderIndexerResult要建立索引的对象的方法。

我已经在311行的plugins / finder / content / content.php中看到了这一行代码:

// Get content extras.
FinderIndexerHelper::getContentExtras($item);

FinderIndexerHelper :: getContentExtras函数接受将要建立索引的FinderIndexerResult对象,然后触发“ onPrepareFinderContent”事件,该事件(我想)允许3dparty插件添加或修改将要建立索引的内容。

你们中的一些人对此有任何经验,或者可以为我提供一些好的教程/文档?

Answers:


4

我已经在com_content中完成了许多额外的字段。我认为,因为用于执行此操作的方法在您指定自己的表时非常自定义,因此,没有一种真正可重复的方法可用于将这些信息合并到com_finder中。

我的建议是为finder插入内容索引器插件,然后将其设置为调出您添加的字段。

您要做的第一件事是在查找程序中修改getListQuery以加入您的额外字段表:

https://github.com/joomla/joomla-cms/blob/staging/plugins/finder/content/content.php#L341

然后,根据您如何保存额外的字段(JRegistry对象?),您只需要告诉finder来查看查询中的其他字段:

我觉得您最终会将其添加为一些元信息:https : //github.com/joomla/joomla-cms/blob/staging/plugins/finder/content/content.php#L286

希望这可以帮助


3

对于SobiPro,智能搜索插件的工作,我们添加了额外的领域getItems,加工项目要索引FinderIndexerResult,后来,在指数的每个项目,将说明每个额外的领域:

protected function index(FinderIndexerResult $item, $format = 'html')
{
...

            $fields = $this->_fields[$item->section];

            foreach ($fields as $f)
            {
                $nid = $f->get('nid');

                if (isset($item->$nid))
                {
                    $item->addInstruction(FinderIndexer::TEXT_CONTEXT, $nid);
                }
            }
...

谢谢,您的回答使我朝了正确的方向;)我最终编写了一个finder插件(扩展了JPlugin),该插件实现了onPrepareFinderContent事件(由FinderIndexerHelper :: getContentExtras触发)。然后,我添加了您所显示的说明以及相应的其他字段: public function onPrepareFinderContent(FinderIndexerResult &$row) { .... $row->addInstruction(FinderIndexer::TEXT_CONTEXT, $field->id); $row->setElement($field->id, $field->value); .... }
Cristiano

优秀的!您是否必须将问题标记为已解决?
阿尼巴尔2014年

@克里斯蒂亚诺:你解决了这个吗?没有可接受的答案,我也面临着同样的问题-您是否曾经想过如何使用这些例程?
GDP

即使答案未被原始作者接受,也是如此...这就是我的智能搜索插件的工作原理;-)
Anibal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.