Lollicupstore add IntegerNet_Solr

电商Magento的lollicupstore集成IntegerNet_Solr插件步骤

1.代码集成

一. 在app/etc/modules 下面创建IntegerNet_Solr.xml

<?xml version="1.0"?>
<config>
<modules>
<IntegerNet_Solr>
<active>true</active>
<codePool>community</codePool>
<depends>
<Mage_Catalog/>
<Mage_CatalogSearch/>
<Mage_Index/>
</depends>
</IntegerNet_Solr>
</modules>
</config>
modules配置

二. 下载solr核心库文件:https://github.com/integer-net/solr-base

安装说明: https://github.com/integer-net/solr-base/blob/master/modman

安装说明

安装成下图效果。

安装代码效果位置

三 . 在 D:\www\lollicupStore2\app\code\community下面集成IntegerNet插件

创建文件夹: D:\www\lollicupStore2\app\code\community\IntegerNet\Solr\etc

1.在etc文件夹下面添加config.xml配置文件

<?xml version="1.0"?>
<config>
<modules>
<IntegerNet_Solr>
<version>1.7.6</version>
<version_suffix />
</IntegerNet_Solr>
</modules>
</config>

2. 在etc文件夹下面添加adminhtml.xml配置文件

<?xml version="1.0"?>
<config>
<acl>
<resources>
<admin>
<children>
<system>
<children>
<config>
<children>
<integernet_solr translate="title" module="integernet_solr">
<title>Solr</title>
</integernet_solr>
</children>
</config>
</children>
</system>
</children>
</admin>
</resources>
</acl>
</config>

3. 在etc文件夹下面添加system.xml配置文件

<?xml version="1.0"?>
<config>
<sections>
<integernet_solr translate="label" module="integernet_solr">
<label>IntegerNet_Solr</label>
<tab>service</tab>
<class>integernet-solr-tab</class>
<frontend_model>integernet_solr/config_adminhtml_form</frontend_model>
<sort_order>28</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>

<groups>
<general translate="label" module="integernet_solr">
<label>General</label>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<description translate="label">
<label/>
<frontend_model>integernet_solr/config_description</frontend_model>
<sort_order>5</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</description>

<is_active translate="label">
<label>Is active</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</is_active>

<log translate="label,comment">
<label>Activate Logging</label>
<comment>The logs can be found at var/log/solr.log. Make sure to have logging activated.</comment>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</log>
</fields>
</general>

<server translate="label" module="integernet_solr">
<label>Solr Server</label>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<host translate="label,comment">
<label>Host</label>
<frontend_type>text</frontend_type>
<comment><![CDATA[Example: localhost, 192.168.46.102]]></comment>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</host>

<port translate="label,comment">
<label>Server Port</label>
<frontend_type>text</frontend_type>
<comment><![CDATA[Example: 8081]]></comment>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</port>

<path translate="label,comment">
<label>Path</label>
<frontend_type>text</frontend_type>
<comment><![CDATA[Example: /solr/]]></comment>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</path>

<core translate="label,comment">
<label>Core</label>
<frontend_type>text</frontend_type>
<comment><![CDATA[Example: collection1, core0]]></comment>
<sort_order>40</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</core>

<http_method translate="label,comment">
<label>HTTP Transport Method</label>
<comment>Please change if you are getting communication errors</comment>
<frontend_type>select</frontend_type>
<source_model>integernet_solr/source_httpTransportMethod</source_model>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</http_method>

<use_https translate="label,comment">
<label>Use HTTPS</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>60</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</use_https>

<use_http_basic_auth translate="label">
<label>Use HTTP Basic Authentication</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>70</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</use_http_basic_auth>

<http_basic_auth_username translate="label">
<label>HTTP Basic Authentication: Username</label>
<frontend_type>text</frontend_type>
<sort_order>80</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<depends>
<use_http_basic_auth>1</use_http_basic_auth>
</depends>
</http_basic_auth_username>

<http_basic_auth_password translate="label">
<label>HTTP Basic Authentication: Password</label>
<frontend_type>text</frontend_type>
<sort_order>90</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<depends>
<use_http_basic_auth>1</use_http_basic_auth>
</depends>
</http_basic_auth_password>

</fields>
</server>

<indexing translate="label">
<label>Indexing</label>
<frontend_type>text</frontend_type>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<pagesize translate="label,comment">
<label>Number of Products per Bunch</label>
<frontend_type>text</frontend_type>
<validate>validate-number validate-zero-or-greater</validate>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Higher number means better indexing performance. Reduce if you are getting memory errors.</comment>
</pagesize>
<delete_documents_before_indexing translate="label">
<label>Delete all Solr Index Entries before Reindexing</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</delete_documents_before_indexing>
<swap_cores translate="label,comment">
<label>Swap Cores after Full Reindex</label>
<comment>Allows reindexing on an inactive core and switch when finished</comment>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>30</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</swap_cores>
<swap_core translate="label">
<label>Name of Core to swap active Core with</label>
<frontend_type>text</frontend_type>
<sort_order>40</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<depends>
<swap_cores>1</swap_cores>
</depends>
</swap_core>
<disconnect_mysql_connections translate="label,comment">
<label>Disconnect and reconnect MySQL Connections during indexing</label>
<comment>Use this to avoid SQL timeout errors during indexing. Only available since Magento CE 1.9.1 / EE 1.14.1.</comment>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
</disconnect_mysql_connections>
</fields>
</indexing>

<fuzzy translate="label">
<label>Fuzzy Search</label>
<frontend_type>text</frontend_type>
<sort_order>40</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<is_active translate="label">
<label>Is active for Search</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</is_active>
<sensitivity translate="label,comment">
<label>Sensitivity for Search</label>
<frontend_type>text</frontend_type>
<validate>validate-number validate-zero-or-greater</validate>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<comment>Value between 0 and 1. Smaller values mean more fuzzy search results.</comment>
<depends>
<is_active>1</is_active>
</depends>
</sensitivity>
<minimum_results translate="label">
<label>Number of Sufficient Direct Search Results</label>
<comment>If there are at least this many search results, fuzzy search will not be performed. If you enter 0 or no value, fuzzy search will always be performed.</comment>
<frontend_type>text</frontend_type>
<validate>validate-number validate-zero-or-greater</validate>
<sort_order>25</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<depends>
<is_active>1</is_active>
</depends>
</minimum_results>
</fields>
</fuzzy>

<results translate="label">
<label>Search Results</label>
<frontend_type>text</frontend_type>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<fields>
<search_operator translate="label">
<label>Search Operator</label>
<frontend_type>select</frontend_type>
<source_model>integernet_solr/source_searchOperator</source_model>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</search_operator>
<max_number_filter_options translate="label,comment">
<label>Maximum number of Filter Options per Filter</label>
<comment>0 = all</comment>
<frontend_type>text</frontend_type>
<validate>validate-number validate-zero-or-greater</validate>
<sort_order>45</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</max_number_filter_options>
<sort_filter_options_alphabetically translate="label,comment">
<label>Sort Filter Options alphabetically</label>
<comment>By default, filters are sorted by number of results.</comment>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>46</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</sort_filter_options_alphabetically>
<show_category_filter translate="label,comment">
<label>Show category filter</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>50</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</show_category_filter>
<priority_categories translate="label,comment">
<label>Solr Priority of Category Names</label>
<comment>1 is default, use higher numbers for higher priority.</comment>
<frontend_type>text</frontend_type>
<validate>validate-number validate-zero-or-greater</validate>
<sort_order>55</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</priority_categories>
<show_outofstock translate="label,comment">
<label>Show products which are out of stock</label>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>57</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</show_outofstock>
<priority_outofstock translate="label,comment">
<label>Solr Priority Multiplier for Products being out of Stock</label>
<comment>0 = don't show at all, 1 = don't modify, anything between = lower priority</comment>
<frontend_type>text</frontend_type>
<validate>validate-number validate-zero-or-greater</validate>
<sort_order>58</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</priority_outofstock>
<price_step_size translate="label,comment">
<label>Size of Price Steps</label>
<comment><![CDATA[i.e. 100]]></comment>
<frontend_type>text</frontend_type>
<validate>validate-number validate-zero-or-greater</validate>
<sort_order>60</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</price_step_size>
<max_price translate="label,comment">
<label>Upper Limit of Price Steps</label>
<comment><![CDATA[i.e. 1000]]></comment>
<frontend_type>text</frontend_type>
<validate>validate-number validate-zero-or-greater</validate>
<sort_order>70</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</max_price>
<use_custom_price_intervals translate="label,comment">
<label>Use Custom Price Intervals</label>
<comment><![CDATA[Needs Solr 4.10+ and Magento CE 1.7+ / Magento EE 1.12+]]></comment>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>80</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</use_custom_price_intervals>
<custom_price_intervals translate="label,comment">
<label>Custom Price Intervals</label>
<comment><![CDATA[Divide steps by comma, i.e. 10,20,50,100,200,300,400,500]]></comment>
<frontend_type>text</frontend_type>
<sort_order>90</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
<depends>
<use_custom_price_intervals>1</use_custom_price_intervals>
</depends>
</custom_price_intervals>
<product_attributes_redirect translate="label,comment">
<label>Redirect to product page on direct match in one of these attributes</label>
<comment><![CDATA[If the exact name / sku / ... is entered in the search field, the customer will be redirected to the product view page.]]></comment>
<frontend_type>multiselect</frontend_type>
<source_model>integernet_solr/source_varcharProductAttribute</source_model>
<sort_order>70</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</product_attributes_redirect>
<category_attributes_redirect translate="label,comment">
<label>Redirect to category page on direct match in one of these attributes</label>
<comment><![CDATA[If the exact name / ... is entered in the search field, the customer will be redirected to the category view page.]]></comment>
<frontend_type>multiselect</frontend_type>
<source_model>integernet_solr/source_varcharCategoryAttribute</source_model>
<sort_order>80</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>1</show_in_website>
<show_in_store>1</show_in_store>
</category_attributes_redirect>
</fields>
</results>

<dev translate="label,comment" module="integernet_solr">
<label>Developer</label>
<sort_order>110</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
<fields>
<register_autoloader>
<label>Register Autoloader</label>
<comment>Disable if you are using an own PSR-4 autoloader, e.g. from composer</comment>
<frontend_type>select</frontend_type>
<source_model>adminhtml/system_config_source_yesno</source_model>
<sort_order>10</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
</register_autoloader>
<autoloader_basepath>
<label>Autoloader Base Path</label>
<comment>Path to IntegerNet_Solr library. Absolute path or relative to Magento base dir.</comment>
<frontend_type>text</frontend_type>
<sort_order>20</sort_order>
<show_in_default>1</show_in_default>
<show_in_website>0</show_in_website>
<show_in_store>0</show_in_store>
<depends>
<register_autoloader>1</register_autoloader>
</depends>
</autoloader_basepath>
</fields>
</dev>
</groups>
</integernet_solr>
</sections>
</config>

4. 下载solr 扩展文件:https://github.com/integer-net/solr-magento1

复制:Helper, Model ,sql ,Test 4个文件夹到相应的位置。

复制这4个文件夹到自己的模块里面

5. 修改config.xml的配置信息如下:

<?xml version="1.0"?>
<config>
<modules>
<IntegerNet_Solr>
<version>1.7.6</version>
<version_suffix />
</IntegerNet_Solr>
</modules>

<global>
<models>
<integernet_solr>
<class>IntegerNet_Solr_Model</class>
<resourceModel>integernet_solr_resource</resourceModel>
</integernet_solr>
<integernet_solr_resource>
<class>IntegerNet_Solr_Model_Resource</class>
</integernet_solr_resource>
</models>
<blocks>
<integernet_solr>
<class>IntegerNet_Solr_Block</class>
</integernet_solr>
</blocks>
<helpers>
<integernet_solr>
<class>IntegerNet_Solr_Helper</class>
</integernet_solr>
</helpers>

<resources>
<integernet_solr_setup>
<setup>
<class>Mage_Catalog_Model_Resource_Setup</class>
<module>IntegerNet_Solr</module>
</setup>
</integernet_solr_setup>
</resources>

</global>
<default>
<integernet_solr>
<general>
<is_active>0</is_active>
<log>0</log>
</general>
<server>
<http_method>curl</http_method>
</server>
<indexing>
<pagesize>1000</pagesize>
<delete_documents_before_indexing>1</delete_documents_before_indexing>
<disconnect_mysql_connections>0</disconnect_mysql_connections>
</indexing>
<fuzzy>
<is_active>1</is_active>
<sensitivity>0.75</sensitivity>
<minimum_results>0</minimum_results>
</fuzzy>
<results>
<use_html_from_solr>0</use_html_from_solr>
<search_operator>AND</search_operator>
<filter_position>1</filter_position>
<show_category_filter>1</show_category_filter>
<priority_categories>2</priority_categories>
<show_outofstock>1</show_outofstock>
<priority_outofstock>1</priority_outofstock>
<max_number_filter_options>0</max_number_filter_options>
<price_step_size>10</price_step_size>
<max_price>200</max_price>
<use_custom_price_intervals>0</use_custom_price_intervals>
<custom_price_intervals>10,20,50,100,200,300,400,500</custom_price_intervals>
<product_attributes_redirect>name,sku</product_attributes_redirect>
<category_attributes_redirect>name</category_attributes_redirect>
</results>
<dev>
<register_autoloader>1</register_autoloader>
<autoloader_basepath>lib/IntegerNet_Solr</autoloader_basepath>
</dev>
</integernet_solr>
</default>

</config>

6. 保存配置信息。刷新后台,则显示solr配置界面

solr配置界面

7. 复制skin下面的文件到相应的配置位置

复制adminhtml
复制后的界面如图

8 . 增加前端和后端的翻译配置信息。复制locale文件夹下面的内容到相应的位置。然后在config.xml 里面增加配置信息

代码复制

9. 在config.xml增加配置

<adminhtml>
<translate>
<modules>
<integernet_solr>
<files>
<default>IntegerNet_Solr.csv</default>
</files>
</integernet_solr>
</modules>
</translate>
</adminhtml>
<frontend>
<translate>
<modules>
<integernet_solr>
<files>
<default>IntegerNet_Solr.csv</default>
</files>
</integernet_solr>
</modules>
</translate>
</frontend>
增加配置后的代码

10. 配置后台的布局以及模板文件:复制app/design/adminhtml/default/default下面的文件到相应的位置(后台模板主要是为显示测试提示信息

11.完成复制之后,刷新网站的后台。我们可以看见下面的效果

安装后之后的效果

12. 安装module Aeo_LayoutCoditions 下载地址:https://github.com/AOEpeople/Aoe_LayoutConditions

下载解压之后,安装到 local下面之后,刷新后台,下面的界面将消失

刷新之后,不存在

13.在config.xml文件中配置下面代码

<index>
<indexer>
<integernet_solr>
<model>integernet_solr/indexer</model>
</integernet_solr>
</indexer>
</index>
配置代码效果

然后打开index Management,即可看见,如果注释上面代码,将看不到下面的 Solr Search Index

solr serach index

14. 在config.xml文件中配置下面代码 ,注意这个代码放在adminhtml标记里面

<layout>
<updates>
<integernet_solr>
<file>integernet/solr.xml</file>
</integernet_solr>
</updates>
</layout>

加了的效果如下:

代码存放位置

然后刷新网站的后台:注意看

增加了布局css样式

15. 生成索引数据 。在后台索引管理选中 Solr Search Index Renindex Data Submit

Submit之后生成的效果

16.检测是否有索引数据

索引数据

17.在admin后台添加事件

    <events>
<adminhtml_catalog_product_attribute_edit_prepare_form>
<observers>
<integernet_solr>
<type>singleton</type>
<class>integernet_solr/observer</class>
<method>adminhtmlCatalogProductAttributeEditPrepareForm</method>
</integernet_solr>
</observers>
</adminhtml_catalog_product_attribute_edit_prepare_form>
<controller_action_predispatch_adminhtml_system_config_edit>
<observers>
<integernet_solr>
<type>singleton</type>
<class>integernet_solr/observer</class>
<method>controllerActionPredispatchAdminhtmlSystemConfigEdit</method>
</integernet_solr>
</observers>
</controller_action_predispatch_adminhtml_system_config_edit>
</events>
</adminhtml>