簡體   English   中英

如何在cakePHP中實現solr和日光浴

[英]How to implement solr and solarium in cakePHP

我必須將Solr搜索集成到我的CakePHP項目之一中。 我已經使用composer安裝了Solr和Solarium,但是找不到如何使用Solr開始搜索的方法。 CakePHP中是否有示例代碼?

您需要弄清的第一件事是如何在CakePHP應用程序中公開Solarium API。 通常,這意味着將一些第三方PHP文件保存到應用程序的Vendor目錄中(有關更多信息,請參見此處 )。

完成此操作后,您有兩個選擇:

  1. 在控制器的操作中直接與Solarium API進行交互。
  2. 實現一個Solarium數據源,以便您可以使用CakePHP的模型構造。

選項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

這個選項涉及更多,並且需要您像開發人員為MySql和Postgres編寫的那樣編寫Solarium 數據源 這確實需要您徹底了解CakePHP模型引擎的內部工作原理,但是通過查看其他數據源的工作方式,這不應該是火箭科學。 請放心,如果您做到了這一點並使代碼開源,其他開發人員將喜歡在自己的CakePHP應用程序中使用它!

這種方法的好處是您將從特定的數據庫實現中成功抽象出您的應用程序。 因此,如果您決定不喜歡使用Solr並喜歡使用其他搜索引擎,則可以遷移數據,編寫新的數據源(如果尚不存在),就可以完成工作。

這可能無法完全回答您的問題,但可以引導您朝正確的方向發展,並突出顯示您應考慮的某些方面。

我已經將Solr與選項1集成在一起。但是選項2可行,但由於時間限制,我必須選擇選項1。我們可以直接包括Solarium供應商,並在需要時在控制器中包括其類,並使用solr的添加/獲取查詢。

基本上有3個主要步驟:1:安裝Solr。 2:使用composer安裝Solarium 3:在控制器或組件文件中使用腳本來獲取結果。

您可以從此處獲取完整的參考和示例代碼庫:

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

謝謝。

我已經使用Sam的Option 2 (作為DataSource)集成了Solr

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

您還可以在此處找到有關如何使用它的說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM