2012-07-26 19 views
5

Bất kỳ ý tưởng hoặc đề xuất nào. Tôi là loại nhầm lẫn, tôi đã thiết lập solr và Magento vài lần nhưng bây giờ với Magento 1,12 hành xử kỳ lạ của nó không có kết quả thích hợp và không có kiểm tra chính tả.Magento 1.12 và Solr 3.6 Không có kết quả phù hợp và không có đề xuất chính tả

Chúng tôi đã có magento 1.11 của chúng tôi làm việc tốt với solr 1.4, nó vẫn hoạt động tốt tôi cố gắng sử dụng 1,4 và không có sửa chữa 3,6.

Bất kỳ ý tưởng hoặc đề xuất nào. Tôi là loại nhầm lẫn

+0

Tôi nghĩ rằng bạn sẽ có được sự ủng hộ với Magento Enterprise. Bạn đã hỏi họ chưa? –

Trả lời

6

Chúng tôi đã tìm thấy nhiều vấn đề với solr với Magento EE 1.12.

  1. Nếu bạn chạy indexer toàn văn từ vỏ thông qua một cronjob sự kiện sau (có nó được đánh vần sai) "catelogsearch_searchable_attributes_load_after" sẽ không được gửi đi và phương pháp này sẽ không thể chạy: storeSearchableAttributes. Điều này ngăn chặn tất cả các thuộc tính fulltext được gửi trong tài liệu Solr. Giải pháp là chạy nó từ GUI NHƯNG bạn phải mở rộng thời gian chờ php của bạn trong .htaccess và có thể mở rộng giới hạn bộ nhớ php là tốt. Tôi có lẽ sẽ hardcode nó một nơi nào đó bởi vì bạn rõ ràng là không muốn một thời gian chờ lâu như vậy cho khách truy cập trang web của bạn.

  2. Tôi khuyên bạn nên bật "cam kết một phần" trong gui quản trị Magento.

  3. Chú ý đến nhật ký solr khi bạn đang chạy trình lập chỉ mục này. Nó cho những manh mối có giá trị. Chúng tôi đã có hai vấn đề gây ra lỗi nghiêm trọng trong solr. Một nơi một "*" đã được chuyển sang "\ *" không chính xác. Chúng tôi gạt nó bằng cách tạo một ghi đè địa phương từ cốt lõi mà chúng tôi kiểm tra == "*": app/code/local/Enterprise/Tìm kiếm/mẫu/Adaptor/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. Chúng tôi cũng đã có một trường hợp mà một thuộc tính đã được thiết lập để multiselect có thể không có tùy chọn được chọn. Câu chuyện dài ngắn khi mảng trống, kết quả là một chuỗi rỗng được nối thêm vào đó đã ném ra một lỗi. Giải pháp đầu tiên là kiểm tra xem mảng có trống không. Vì vậy, chúng tôi phải ghi đè lên với ứng dụng/code/local/Enterprise/Tìm kiếm/mẫu/Adaptor/Abstract.php

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

1

Chúng tôi cũng chỉ cố định một vấn đề mà sản phẩm với chọn/chọn nhiều các thuộc tính đã được gửi với nhãn trống để solr. Điều này khiến cho người lập chỉ mục không hoàn thành được.

Chúng tôi đã overrode app/code/core/Enterprise/Search/Model/Adapter/Abstract.php và sẽ tạo mô-đun cục bộ để ghi đè chính xác điều này.

Dưới đây là sửa chữa

--- 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') { 
Các vấn đề liên quan