为什么外部文档只能在默认语言下找到?

时间:2013-01-17 19:17:47

标签: php typo3

我们在其中一个网站上使用indexed_search作为搜索解决方案。最近我在我维护的网站上遇到了索引搜索和.pdf文档的问题。

索引搜索会索引文档,但只会将它们“链接”到默认语言。因此,如果您使用选择的其他语言浏览网站,则任何搜索结果中的文档都不会出现。

有可能解决这个问题吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

使用索引搜索同时索引站点上的文档(如.pdf文件)时,只有在用户选择了默认语言时才会找到它们。要使索引搜索使用找到文件的页面语言正确索引这些文件,您必须调整class.indexer.php

在方法submitFilePage()中,找到数组$fields并向其添加sys_language_id,如下所示:

$fields = array(
    'phash' => $hash['phash'],
    'phash_grouping' => $hash['phash_grouping'],
    'cHashParams' => serialize($subinfo),
    'contentHash' => $content_md5h,
    'data_filename' => $file,
    'item_type' => $storeItemType,
    'item_title' => trim($contentParts['title']) ? $contentParts['title'] : basename($file),
    'item_description' => $this->bodyDescription($contentParts),
    'item_mtime' => $mtime,
    'item_size' => $size,
    'item_crdate' => $ctime,
    'tstamp' => $GLOBALS['EXEC_TIME'],
    'crdate' => $GLOBALS['EXEC_TIME'],
    'gr_list' => $this->conf['gr_list'],
    'externalUrl' => $fileParts['scheme'] ? 1 : 0,
    'recordUid' => intval($this->conf['recordUid']),
    'freeIndexUid' => intval($this->conf['freeIndexUid']),
    'freeIndexSetId' => intval($this->conf['freeIndexSetId']),
    'sys_language_uid' => $this->conf['sys_language_uid']
);

在方法setExtHashes()中,找到数组$hArray并向其添加sys_lang,如下所示:

$hArray = array(
    'file' => $file,
    'sys_lang' => (integer)$this->conf['sys_language_uid']
);

警告

仅当您不使用crawler调用外部文件的索引时,此方法才有效。这由索引搜索的useCrawlerForExternalFiles设置控制。

禁用此设置!您还应该启用disableFrontendIndexing,否则会导致非常长的页面加载时间(因为当用户请求页面时,页面上的链接文档可能会被编入索引)