如何在cakePHP中实现solr和日光浴

时间:2014-12-17 12:13:46

标签: cakephp solr solarium

我必须在我的CakePHP项目中集成Solr搜索。我使用composer安装了Solr和Solarium,但无法找到如何使用Solr开始搜索。 CakePHP中是否有任何示例代码?

3 个答案:

答案 0 :(得分:2)

首先要弄清楚的是如何在CakePHP应用程序中公开Solarium API。通常这意味着将一些第三方PHP文件保存到应用程序的Vendor目录中(请查看here以获取更多信息)。

完成此操作后,您有两种选择:

  1. 直接在控制器的操作中与Solarium API交互。
  2. 实现Solarium数据源,以便您可以使用CakePHP的模型构造。
  3. 选项1

    这个选项与CakePHP的开发人员希望你做MVC的方式不太一致,每次你想在Solr中放置或查询它时你必须生成相当多的代码(例如连接到Solr数据库) )。如果您与Solr数据库的交互最少,那么我建议您沿着这条路线前进。也许你可以将你的访问权限包含在单独的帮助程序类或函数中,而不是这样:

    public function void myControllerAction() {
      // create a client instance
      $client = new Solarium\Client($config);
    
      // get a select query instance
      $query = $client->createQuery($client::QUERY_SELECT);
    
      // this executes the query and returns the result
      $resultset = $client->execute($query);
    
      // expose the result set to your view
      $this->set('records', $resultset);
    }
    
    你可以拥有这个:

    public function void myControllerAction() {
      $resultset = solarium_get_records();
    
      // expose the result set to your view
      $this->set('records', $resultset);
    }
    

    选项2

    此选项涉及更多,需要您编写一个Solarium datasource,就像开发人员为MySql和Postgres编写的那样。这确实需要你彻底了解CakePHP模型引擎的内部工作原理,但是通过看看另一个datasources如何工作,它不应该是火箭科学。请放心,如果您这样做并使您的代码开源,其他开发人员将喜欢在他们自己的CakePHP应用程序中使用它!

    这种方法的好处是您将成功地从特定的数据库实现中抽象出您的应用程序。因此,如果您认为自己并不喜欢使用Solr并且喜欢使用其他搜索引擎,那么您可以迁移数据,编写新的数据源(如果尚未存在)并且您已完成设置。

    这可能并不能完全回答你的问题,而是引导你朝着正确的方向前进,并突出你应该考虑的一些方面。

答案 1 :(得分:0)

我已将Solr与选项1集成在一起。但是选项2是可行的,但由于时间限制,我必须选择选项1.我们可以直接包括日光浴供应商,并在需要时将其类别包含在我们的控制器中并使用solr'添加/获取查询。

基本上有3个主要步骤:1:安装Solr。 2:使用composer 3安装日光浴场:在控制器或组件文件中使用脚本来获得结果。

您可以从此处获得完整的参考和示例代码库:

http://findnerd.com/list/view/Solr-integration-in-CakePHP-with-solarium-client/1946/

感谢。

答案 2 :(得分:0)

我使用Sam的选项2 (作为DataSource)集成了Solr

https://github.com/Highstrike/cakephp-solr-datasource

您还可以找到有关如何将其与示例

一起使用的说明