0

いずれかのWebサイトの検索ソリューションとしてindexed_searchを使用しています。.pdf最近、私が管理しているWebサイトのインデックス付き検索とドキュメントに問題がありました。

インデックス付き検索では、ドキュメントにインデックスが付けられますが、デフォルトの言語に「リンク」されるだけです。したがって、別の言語を選択してWebサイトを閲覧する場合、ドキュメントが検索結果に表示されることはありません。

これを解決することは可能ですか?もしそうなら、どのように?

4

1 に答える 1

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

警告

この方法は、クローラーを使用して外部ファイルのインデックス作成を呼び出さない場合にのみ機能します。これはuseCrawlerForExternalFiles、インデックス付き検索の設定によって制御されます。

この設定を無効にしてください!また、有効にすると、ページの読み込み時間が非常に長くなる可能性があるため、有効にする必要disableFrontendIndexingがあります(ユーザーがページを要求すると、ページ上のリンクされたドキュメントがインデックスに登録される可能性があるため)。

于 2013-01-17T19:17:46.987 に答える