2012-07-26 11 views
5

アイデアやご提案があります。私はちょっと混乱しています。私はセットアップソルとマゼンタのカップルを持っていますが、今はmagento 1.12で動作していて、奇妙な結果は得られず、スペルチェックもありません。Magento 1.12 and Solr 3.6適切な結果が得られず、呪文の提案がありません

私たちのmagento 1.11はsolr 1.4で正常に動作しましたが、それでも動作します。1.4とsolr 3.6は使用しないでください。

アイデアやご提案。私は混乱しています

+0

です。あなたは彼らに尋ねましたか? –

答えて

6

Magento EE 1.12でsolrに複数の問題が見つかりました。

  1. あなたはcronジョブを経由してシェルからフルテキストインデクサーを実行する場合、次のイベント(はい、それは間違って綴られる)「catelogsearch_searchable_attributes_load_afterは」派遣されず、このメソッドは実行されません:storeSearchableAttributesを。これにより、すべてのフルテキスト属性がSolrドキュメントで送信されなくなりました。解決策はGUIから実行することですが、.htaccessでPHPのタイムアウトを延長し、PHPのメモリ制限を拡張する必要があります。私はおそらくどこかでハードコードします。なぜなら、明らかにあなたのウェブサイト訪問者にこのような長いタイムアウトが必要ないからです。

  2. 私はmagento admin guiで「部分コミット」を有効にすることをお勧めします。

  3. このインデクサーを実行しているときにsolrログに注意してください。それは貴重な手がかりを与える。我々はsolrに重大なエラーを引き起こしていた2つの問題がありました。 「*」が「\ *」に間違ってエスケープされていた場所。 我々はチェックコアからローカルオーバーライドを作成することによって、それを上書きし== "*":! アプリ/コード/ローカル/エンタープライズ/検索/モデル/アダプタ/ Solrの/ Abstract.php

       foreach ($facetFieldConditions as $facetCondition) { 
           if (is_array($facetCondition) && isset($facetCondition['from']) 
             && isset($facetCondition['to'])) { 
            $from = (isset($facetCondition['from']) && strlen(trim($facetCondition['from'])) && trim($facetCondition['from']) !== "*") 
             ? $this->_prepareQueryText($facetCondition['from']) 
             : '*'; 
            $to = (isset($facetCondition['to']) && strlen(trim($facetCondition['to'])) && trim($facetCondition['to']) !== "*") 
    
  4. 我々 multiselectに設定された属性にオプションが選択されない場合もありました。長い話は、配列が空のときには空の文字列が追加され、エラーが発生しました。解決策は、配列が空であるかどうか最初に確認することでした。だから我々は、ローカル/エンタープライズ/検索/モデル/アダプタ/ Abstract.php

    に/アプリ/コードで上書きする

    if (!empty($val)) { $preparedValue = array_merge($preparedValue, explode(',', $val)); }

1

を持っていた は、我々はまた、単に複数選択/持つ製品が選択問題を修正しました空白のラベルを付けて属性をsolrに送信していました。これにより、インデクサの完了に失敗しました。

私たちは、app/code/core/Enterprise/Search/Model/Adapter/Abstract.phpを上書きし、これを正しく上書きするローカルモジュールを作成します。

は、ここで私はあなたがMagentoのエンタープライズでのサポートを受けると思わ修正

--- a/app/code/core/Enterprise/Search/Model/Adapter/Abstract.php 
+++ b/app/code/local/Enterprise/Search/Model/Adapter/Abstract.php 
@@ -434,6 +434,10 @@ abstract class Enterprise_Search_Model_Adapter_Abstract 
        foreach ($preparedValue as $id => $val) { 
         $preparedValue[$id] = $attribute->getSource()->getOptionText($val); 
        } 
+      
+     $preparedValue = array_filter($preparedValue); 
+     $preparedNavValue = array_filter($preparedNavValue); 
+      
       } else { 
        $preparedValue = $value; 
        if ($backendType == 'datetime') { 
関連する問題