簡體   English   中英

使用(out)Solr進行分面搜索

[英]Faceted Search With(out) Solr

我想對我的項目實施分面搜索 我正在使用PHP5MysqlSymfony 1.4 顯然,這個社區指向Apache Solr ,它似乎完全符合我想要完成的任務。

問題是該網站將在托管服務提供商上生效,不允許我設置Solr (它是一個共享托管環境,既不允許Tomcat也不允許Solr運行)。

那么請您指點一下可能的替代方案,或者是否有辦法在這樣的環境中設置Solr

編輯
我的托管服務提供商既不支持SOLR也不支持opensolr 一般情況下,我無法使用我的環境連接到同一服務器或遠程服務器上的進程。 似乎唯一可用的選項是使用Zend_Search_Lucene 那么這支持分面搜索嗎? 或者,如果您有其他選擇,請分享! 我覺得自己處在不知名的地方!

編輯2
由於這個問題從給出的答案開始大約一周,我感到驚訝(並且失望)PHP中沒有可用於實現分面搜索的庫( 服務)。 似乎要么需要手動實現,要么使用下面提供的解決方案

更改主機,或在其他地方托管Solr索引 - 例如,快速搜索顯示http://www.opensolr.com/提供Solr托管,毫無疑問其他許多人。

性能不會很好,也不討論擴展,但您始終可以通過HTTP創建反向HTTP隧道。 基本上,不是Web服務器打開到Solr服務器的出站連接,而是Solr服務器連接到Web服務器以請求作業和發布作業結果。

你需要做什么:

  1. 瀏覽器發布搜索查詢,查詢只是在數據庫中排隊。
  2. 反向代理定期連接到Web服務器(通過普通的端口80)以從作業隊列中獲取查詢列表,將查詢傳遞給Solr服務器,並將結果POST回Web服務器。
  3. 瀏覽器定期輪詢Web服務器以查找完成的搜索結果。

獎勵標記:如果您的服務器允許並發請求處理,請使用長輪詢來改善延遲。

簡而言之,咬緊牙關,搬到一個體面的主人。

盡量避免Zend_Search_Lucene,它不是很快。 (鑒於它在Php中實現並且不作為守護進程運行,這是非常好的)

如果你不願意改變東道主,保羅建議的主持Solr聽起來是個不錯的選擇。

暫無
暫無

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

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