您在這裡

[2010-12-14] 初探 apache solr on Drupal

joetsuihk's 的頭像
joetsuihk 在 2010-12-14 (二) 22:52 發表

使用過 Drupal 內建的 search 的話
便會發覺這個功能是雞肋
的確是一個基於 tree 而不是 "SQL like" 的搜尋, 也是全文檢索
但就沒有辦法對搜尋結果加以 filter (faceted search)
也不可以用日期或者其他方式排序
Drupal 的開發者們都發覺言個問題
所以便導入了 Apache solr 這個專案了以達成更強大的搜尋功能
大家可以參考新版的 Drupal 官網的搜尋, 和 issue queue 作例子

當然, 社群自己重寫一個也不是不可以
但要做到和 Solr 同一高度倒不如整合還比較快和可靠
而缺點則是, Solr 是基於 java 技術的 (java 1.5 或以上)
也即是說你的伺服器未必支援....
如果你的伺服器不能讓你以 SSH 連接
你便很大機會不能使用了...Drupal 的 Apache solr module 就是連結兩者的鑰匙
翻譯一下安裝文件 (2010-12-14 6.x-1.2 版本)

  1. 下載 Drupal Apache solr module
  2. 解壓到 sites/all/modules/
  3. 下載 Solr 的PHP 庫, 到 http://code.google.com/p/solr-php-client/downloads/list 下載 r22 的壓縮檔
  4. 解壓到 sites/all/modules/apachesolr/
  5. 下載 Solr, http://www.apache.org/dyn/closer.cgi/lucene/solr/
  6. 解壓到 htdocs 以外, 令apache 不能以 http 的方式訪問 solr
  7. 將 sites/all/modules/apachesolr/schema.xml 和 solrconfig.xml 抄到 Solr 的 example/solr/conf
  8. 啟用 Drupal Apache solr module

待續...
創作共用許可[2010-12-14] 初探 apache solr on Drupal由joetsuihk製作,以共享創意署名-非商業性-禁止衍生 3.0 Unported 授權條款釋出。

我的小小 BLOG 也有,歡迎測試:
http://www.notabluescreen.com/search/apachesolr_search/Drupal

以我個人經驗,D6 core 沒有 patch 過的話,apache solr 會經常抓不到

simplexml_load_string() [function.simplexml-load-string]: ^ in /xxxxxxxxxxxxxx/xxxxxxxxxx/xxxxxxxxxxxxxxxxxxxxxxx/sites/all/modules/apachesolr/Drupal_Apache_Solr_Service.php on line 83.

---
notaBlueScreen

我測試的 apachesolr module 是 6.x-2.0-beta3

我發覺站內的內容並不是即時更新到 solr 的 index 之內的
應該是有以下的步驟:

  1. 新建/修改的 node 會在 Drupal 內部先整理好, 再一次送到 solr, 可選立即送, 而admin page 有一個數字顯示目前未被送出之 node 的數目
  2. Solr 收到更新名單, 但仍需要時間建立 index, 已建立的數字可以在 admin page 看到, 但 index 的更新不可以手動發動, 要等, 或者重啟 solr

暫時未看到有 patch core 的需要, 但我只測試英文內容, 不知道有否關連

原文: http://joetsuihk.com/20121221_%E7%BA%8C_apache_solr_%E4%BA%8C

Joetsui's blog

在有討論區的網站,我都會停用search module。
文章數一多,資料庫暴增、效能變差的效應就會跑出來煩人。

解決的辦法就是用Google CS + finder來代替一般搜尋與特殊搜尋的功能。

tky

tky