SOLRを使用したEEで製品を作成日でソート


7

製品コレクションを作成日でソートする必要があります。これは、製品エンティティテーブルの静的属性です。SOLRは、eav属性で索引付けおよびソートできます。1つのオプションは、製品の保存イベントで新しい属性とコピー日付を作成することです。他の提案はありますか?カスタムデータをSOLRインデックスに追加する最良の方法は何ですか?

回答:


4

製品created_atupdated_at属性を参照している場合->addVisibleFilter()は、管理者のカタログ製品属性グリッドでをコメント化し、[検索]および[並べ替え]フィールドを[はい]に設定して、インデックスを再作成すると、日付がわかります。今ではcatalogsearch_fulltext企業のSolrを認識し、同様にそのドキュメントレコードにデータを追加しますテーブル。

注:必要に応じて、コアコードの変更を削除することを忘れないでください。

class Mage_Adminhtml_Block_Catalog_Product_Attribute_Grid extends Mage_Eav_Block_Adminhtml_Attribute_Grid_Abstract
{
    /**
     * Prepare product attributes grid collection object
     *
     * @return Mage_Adminhtml_Block_Catalog_Product_Attribute_Grid
     */
    protected function _prepareCollection()
    {
        $collection = Mage::getResourceModel('catalog/product_attribute_collection');
            //->addVisibleFilter();
        $this->setCollection($collection);

        return parent::_prepareCollection();
    }

この後、Solrにソート可能なメタデータフィールドを通知します。

Enterprise / Search / Model / Adapter / Abstract.phpに気づくでしょう:

/**
 * Store common Solr metadata fields
 * All fields, that come up from search engine will be filtered by these keys
 *
 * @var array
 */
protected $_usedFields = array('sku', 'visibility', 'in_stock');

また、法の上に見てみたいことがあります:_prepareIndexProductData

エンタープライズ/検索/モデル/アダプター/Abstract.php

/**
 * Prepare index data for using in search engine metadata.
 * Prepare fields for advanced search, navigation, sorting and fulltext fields for each search weight for
 * quick search and spell.
 *
 * @param array $productIndexData
 * @param int $productId
 * @param int $storeId
 *
 * @return  array|bool
 */
protected function _prepareIndexProductData($productIndexData, $productId, $storeId)

私は「非表示」属性を編集する機能をテストし、フルテキストテーブルへの追加を確認しました。現時点では、Solrをローカルで実行してテストしていませんが、理論上はミラーリングする必要なく機能するはずです。冗長データ。

お役に立てれば!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.