いずれかのWebサイトの検索ソリューションとしてindexed_searchを使用しています。.pdf
最近、私が管理しているWebサイトのインデックス付き検索とドキュメントに問題がありました。
インデックス付き検索では、ドキュメントにインデックスが付けられますが、デフォルトの言語に「リンク」されるだけです。したがって、別の言語を選択してWebサイトを閲覧する場合、ドキュメントが検索結果に表示されることはありません。
これを解決することは可能ですか?もしそうなら、どのように?
インデックス付き検索を使用してサイト上のドキュメント(.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']
);
この方法は、クローラーを使用して外部ファイルのインデックス作成を呼び出さない場合にのみ機能します。これはuseCrawlerForExternalFiles
、インデックス付き検索の設定によって制御されます。
この設定を無効にしてください!また、有効にすると、ページの読み込み時間が非常に長くなる可能性があるため、有効にする必要disableFrontendIndexing
があります(ユーザーがページを要求すると、ページ上のリンクされたドキュメントがインデックスに登録される可能性があるため)。