我目前正在使用在两个集群 Apache Web 服务器上运行的 Magento Enterprise 1.12 安装。我的两个 Web 服务器都从位于不同服务器上的自己的数据库中提取数据,这些服务器采用主-主 MySQL 配置进行集群。
我的问题是,我试图将 Solr 3.6.1 引入到图片中,但我不太确定如何正确地将其添加到我的集群中。我是否应该能够设置一个 Solr 实例(可能在不同的服务器上)并将两个站点指向它,还是我需要为两个服务器设置一个独立的 Solr 实例?我是否需要以某种方式一起配置两个 Solr 实例?如果我没有提供足够的信息,我深表歉意。
答案1
您应该在其中一台服务器上设置 solr,并在 Magento 管理配置中将其配置Solr Server Hostname
为该服务器的地址(如果您没有单独的域名,请在那里插入 IP 地址)- 因为您有 Mysql 复制,所以它们都将使用相同的配置。
只需确保主机名和端口(如 8080)可从第二台服务器访问即可。
答案2
Slayer 给出了基本答案。Solr run 是一个 Java 应用程序,在 getty 等 Java Web 服务器中运行。现在假设您的 apache 在端口 80 上运行,您应该配置您的网络,以便两个 Web 服务器都可以与该 solr 服务器通信(使用 magento 配置中的真实 IP 地址,显然不是 127.0.0.1),但网络外部的任何人都无法通信。
此外,我会使用 THAT 作为您的安全措施,而不是 httpauth 身份验证,因为我们遇到了它不起作用的问题。基本上,magento 在某些操作期间会发送一个没有凭据的 ping 并失败,因此不会发送带有凭据的真实查询。
好的。另一个重点是“全文索引”。
我在 stack overflow 上有一个很长的答案https://stackoverflow.com/questions/11667728/magento-1-12-and-solr-3-6-no-proper-results-and-no-spell-suggestions/12984270#12984270但我会尽量简短地说。
如果您通过 php shell/indexer.php --reindex-all catalogsearch_fulltext 从 shell 运行全文索引器,它将无法正常工作。不会触发事件。因此,请从 UI 运行它。然而,这是一个问题,因为该操作将需要 4 个多小时,具体取决于您拥有的产品数量。快速修复是围绕全文索引器功能调整 php 超时。因为显然您的 apache 超时应该很短。它们可以继续缩短,但如果 php 超时很长,它应该继续运行,即使 apache 将显示死页。
此外,最新的 magento 将全文索引器代码包装在事务中。因此,当它运行时,网站上的搜索会在 catalogsearch_query 表上返回“等待锁定超时”。我们删除了包装它的事务,一切正常。