安裝支援單字詞搜尋的Omeka-S / Install Omeka-S with Single Token Fulltext Seach Feature
沒想到一開始就不應該選擇MariaDB。
安裝步驟記錄 / Installation steps
這邊我只是簡單記錄一下整體的安裝步驟。
首先是環境。我在Proxmox VE 7.2-3以CT形式安裝,CT範本是ubuntu-22.04-1_amd64.tar.zst。
開機後安裝必要元件:
apt-get install -y wget curl nano apache2 php php-cli libapache2-mod-php php-mysql imagemagick php-xml php-mbstring
啟用Apache的rewrite模組:
a2enmod rewrite
啟用.htaccess / Enable .htaccess
為了啟用.htaccess,我們需要修改Apache設定檔:
nano /etc/apache2/apache2.conf
找到<Directory /var/www/>,將底下的AllowOverride None改為AllowOverride All。
完成後需要重新啟動Apache:
systemctl restart apache2
設定資料庫 / Database Setup
再來是設定MySQL資料庫。在Bash裡面輸入以下指令:
mysql_secure_installation
接著要設定密碼。現在MySQL對密碼要求很嚴格,不能使用常見的單字。設定的密碼足夠複雜的話,就能夠設定成功,不然就得要一直重試。
設定成功後,用以下指令進入mysql:
mysql -u root -p
在mysql的終端介面輸入以下三個指令,表示建立資料庫,並將資料庫的權限給root,然後離開:
CREATE DATABASE `omekas`;
GRANT ALL PRIVILEGES ON omekas.* TO 'root'@'localhost';
exit;
設定資料庫的ngram / ngram configuration of MySQL
接著要修改資料庫的全文檢索斷詞設定檔案。開啟MySQL資料庫的設定檔:
nano /etc/mysql/mysql.conf.d/mysqld.cnf
在最後加上以下設定:
ngram_token_size=1
然後重新啟動MySQL即可:
service mysql restart
Omeka S安裝
首先先下載Omeka S檔案:
wget https://github.com/omeka/omeka-s/releases/download/v4.0.1/omeka-s-4.0.1.zip
解壓縮:
unzip omeka-s-4.0.1.zip
資料庫設定 / Database setup
修改資料庫設定:
nano omeka-s/config/database.ini
使用者user設定root、密碼password為剛剛建立的密碼、資料庫名稱dbname為omekas、連線位置host為localhost。
files權限設定 / Enable write permission of "files" folder
再來啟用files資料夾的寫入權限。指令如下:
chmod -R +w omeka-s/files
全文檢索改用ngram / Enable ngram in fulltext table
開啟Omeka-S建立資料庫表格的檔案:
nano omeka-s/application/data/install/schema.sql
找到「FULLTEXT KEY `IDX_AA31FE4A2B36786B3B8BA7C7` (`title`,`text`)」,改成以下內容:
FULLTEXT KEY `IDX_AA31FE4A2B36786B3B8BA7C7` (`title`,`text`) WITH PARSER NGRAM,
搬移檔案 / Move files
使用以下指令移動檔案:
mv omeka-s/{.*,*} /var/www/html/
這樣才能將隱藏檔案一併移動。此做法是參考了tcarv的建議。
(圖片來源: https://omeka.org/s/docs/user-manual/install/ )
再來打開伺服器網頁,應該就能夠看到Omeka S的首次安裝畫面了。
沒有對外IP的連線方式 / Link a private website with a public URL
https://www.techiediaries.com/public-localhost/
如果你只是測試使用,Omeka-S所在的Apache沒有對外連線的IP的話,那可以使用暫時取得公開連結的Tunnel Services。Ahmed Bouchefra介紹了ngrok、localtunnel、telbit、localhost.run、cloudflare tunnel五種服務。
https://ngrok.com/docs/getting-started/#step-3-connect-your-agent-to-your-ngrok-account
臨時測試的話我最推薦的是ngrok,連線也最穩定。該伺服器第一次連線的時候需要設定授權的權杖,而這個權杖需要你在ngrok註冊帳號後才能取得。每個帳號同時只能使用一個ngrok連線,而帳號本身建立是免費的,可以使用Google帳號建立。
設定完成後,開啟ngrok的方法如下:
ngrok http 80
ngrok會隨機分配一個網址給你。
第一次開啟的時候會看到通知,按「Visit Site」進入即可。
結論 / Conclusion
透過上述方法,我們就能在Omeka-S新增item之後,在搜尋框用單一字詞找到item。
此時用單一英文字是不行的,必須要用一個英文的單字才行。不過MySQL有內建詞幹化的功能,單複數、不同時態的英文,它都能自動調整。真是厲害呀。
文章最後的問題是:除了Google之外,你有在什麼地方用過全文檢索功能嗎?
下面留言喔!