我们在其中一个网站上使用indexed_search作为搜索解决方案。最近我在我维护的网站上遇到了索引搜索和.pdf
文档的问题。
索引搜索会索引文档,但只会将它们“链接”到默认语言。因此,如果您使用选择的其他语言浏览网站,则任何搜索结果中的文档都不会出现。
有可能解决这个问题吗?如果是这样,怎么样?
答案 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
,否则会导致非常长的页面加载时间(因为当用户请求页面时,页面上的链接文档可能会被编入索引)