apache solr

2012 年 project III http://business-services.scmp.com/

Snapshot: 

2012 年 project III (project II 仍然為內部使用中)

第一個我製作的使用 Drupal 7.x 的網站
集團內第一個 7.x 網站

因為是第一次使用 7.x 開發
功能上沒有要超越過去的功能的意思
志在將過去在 6.x 的經驗轉移到 7.x 的平台上
還好有這個決定, 否則可能真的會趕不上

一般的設定, 例如 cck都沒有太大的問題
介面都很類似
views 的介面上雖然類似, 但要細心使用額外的功能的話還是要花點時間適應
特別是處理輸出 html 的時候更明顯
新增的 field.tpl.php 和 views 的 field template 時有沖突
處理 node.tpl.php 的時候要細心開始吸收 entity 的概念和 API
再加上為 solr 所用的客制欄位等等

hook_apachesolr_prepare_query()

Apache solr/PHP solr client 可以使用的 development API 其實還有很多
這次介紹的是其中一個最常用的 hook_apachesolr_prepare_query()

分開 apachesolr 和 apachesolr_search

下一個進階的 solr blog 已經寫了大半, 但發覺有必要分開一篇
先談談 apachesolr 和 apachesolr_search 的分別

apachesolr 是一個接口模組, 是連接 Drupal 和 SolrPhpClient 的接口
而 SolrPhpClient 是 PHP 和 solr 的接口
但 solr 是 java base 的, 而且其實有一個易用的 web service query 接口: /solr/CORE0/admin/form.jsp

所以, 嚴格來說, 假如你要自己硬幹, 是可以不使用以上的接口的
但當然無需要就不必重做輪子了

apachesolr 的功能包括提供方便的函數,
以調用正在處理的 query, query 的參數, 它的回傳 response, response 的列數目等等
也會送出 cck 的欄位的資料到 solr

Apache solr 多站設定 multi core setup

在 solr 的詞彙裏面, mulit site 的意思是指一個實體 solr 對應多個網站
和 apache virtual host 類似,
所以你可以同一部機器的一個 solr 放置數個站, 方便管理

而 solr 自帶的 example 資料夾本身已經有一個 multi site 的範例
而要認識 mutli core 的設定, 便先要了解 solr 的預設檔案結構:

什麼是 apache solr, 安裝

-
Free tags: 

Apache solr 是一個搜尋器
當網站的流量, 用戶, 內容日益增加的時候
Drupal 內建的 search 很快便會變得很慢
而 apache solr 便是其中的解決方案了

Solr 本身是一個 Java 的程式,
所以安裝的時候會和一般的不一樣
但它 search 的能力是非常強
支持全文搜索, 速度快, 支持單線程多站搜索等等
它還可以加其他的插件
支持更多功能, 例如 faceted search 等等

Faceted search 是指用戶可以根據預定的參數,
再過濾搜尋結果.
例如使用分類, 日期, 作者, 地點或任何一個 field 的值都可以是過濾的參數
這些參數稱為 criteria facets.
有了這些參數, 你便可以根據你的求進行更精確的搜尋了

假如你是使用 windows,
你可以很方便的使用 xampp 的 tomcat server
快速建立一個測試的 solr:

PHP side:

[Solr] 數值的搜尋 integer index

patch: http://drupal.org/node/949768

問題主要出現在沒有 integer 的 filters
例如 integer checkbox, 沒有辦法可以像 text select dropdown refine 搜尋結果
而這個patch 可以修正, 令 widget 為 checkbox, checkboxes, dropdown 的 Integer/Float 可以有一個獨立的block 來收緊搜尋的結果

[2012-12-21] 續 apache solr (二)

我測試的 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 的需要, 但我只測試英文內容, 不知道有否關連

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

使用過 Drupal 內建的 search 的話
便會發覺這個功能是雞肋
的確是一個基於 tree 而不是 "SQL like" 的搜尋, 也是全文檢索
但就沒有辦法對搜尋結果加以 filter (faceted search)
也不可以用日期或者其他方式排序
Drupal 的開發者們都發覺言個問題

Google