我们拥有SiteA和SiteB,它们共享我们完全控制的相同服务器和数据库。 SiteC,siteD和siteE也是我们拥有的一些站点,但位于不同的Web主机上。
目标是为上述所有网站创建统一的搜索功能。也就是说,如果有人在SiteA中搜索一个术语,搜索结果将自动获得SiteB,SiteC,SiteD和Site E的结果。搜索结果应显示在他们找到的网站下。
所有这些网站内容都存储在自己的数据库中。
如果我使用SphinxSearch索引上述网站,我会要求那些我们没有完全控制的网站来设置一个Web服务,我可以下载数据库转储或csv文件进行索引。
我不太清楚sphider会如何在这里发挥作用所以需要你的意见。
狮身人面像还是蜘蛛?
谢谢!
答案 0 :(得分:0)
如果您可以要求其他网站的所有者免费为您提供内容,则无需蜘蛛。只需使用sphinxsearch来索引内容。
如果您无法直接从他们那里获取内容,蜘蛛是您的唯一选择。没有什么可以考虑这个问题。
答案 1 :(得分:0)
Sphinx是一种全文搜索引擎解决方案,而蜘蛛则用于从互联网上获取内容。它们不是彼此的替代品。即使您使用蜘蛛,您仍然必须使用一些全文搜索引擎软件,例如sphinx或lucene / solr。 所以你必须先做出决定:我是否想用sphinx进行搜索?如果答案是肯定的,那么只剩下一件事:我如何索引搜索内容?
sphinx支持使用数据库或XML作为数据源。作为数据源的数据库更受欢迎,因为以特定格式准备和更新XML文档非常繁琐(与维护数据库表相比)。所以我想最后你必须将所有数据存储到数据库中。如您所述,所有数据都已在数据库中准备就绪,但某些数据库不受您的控制。对于您自己的数据库,没有问题。对于无法控制的数据库,我建议您使用分布式sphinx搜索:http://sphinxsearch.com/docs/2.0.6/distributed.html
关键的想法是横向分区(HP)搜索到的数据 搜索节点,然后并行处理它。
手动完成分区。你应该
设置几个Sphinx程序实例(索引器和搜索器) 不同的服务器;
使实例索引(并搜索)不同的数据部分;
在某些searchd上配置一个特殊的分布式索引 实例;
并查询此索引。
此索引仅包含对其他本地和远程索引的引用 - 因此无法直接重新编制索引,您应该重新索引它引用的索引。