:::

安裝支援單字詞搜尋的Omeka-S / Install Omeka-S with Single Token Fulltext Seach Feature

7月 10, 2023 , , 0 Comments Edit Copy Download

2023-0420-180837.png

沒想到一開始就不應該選擇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

2023-0420-173006.png

找到<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

2023-0420-173610.png

使用者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的建議。

2023-0420-174824.png

(圖片來源: 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/

https://www.techiediaries.com/public-localhost/ 

如果你只是測試使用,Omeka-S所在的Apache沒有對外連線的IP的話,那可以使用暫時取得公開連結的Tunnel Services。Ahmed Bouchefra介紹了ngroklocaltunneltelbitlocalhost.runcloudflare tunnel五種服務。

https://ngrok.com/docs/getting-started/#step-3-connect-your-agent-to-your-ngrok-account

https://ngrok.com/docs/getting-started/#step-3-connect-your-agent-to-your-ngrok-account 

臨時測試的話我最推薦的是ngrok,連線也最穩定。該伺服器第一次連線的時候需要設定授權的權杖,而這個權杖需要你在ngrok註冊帳號後才能取得。每個帳號同時只能使用一個ngrok連線,而帳號本身建立是免費的,可以使用Google帳號建立。

設定完成後,開啟ngrok的方法如下:

ngrok http 80

2023-0420-180019.png

ngrok會隨機分配一個網址給你。

2023-0420-180052.png

第一次開啟的時候會看到通知,按「Visit Site」進入即可。


結論 / Conclusion

2023-0420-180219.png

透過上述方法,我們就能在Omeka-S新增item之後,在搜尋框用單一字詞找到item。

此時用單一英文字是不行的,必須要用一個英文的單字才行。不過MySQL有內建詞幹化的功能,單複數、不同時態的英文,它都能自動調整。真是厲害呀。


文章最後的問題是:除了Google之外,你有在什麼地方用過全文檢索功能嗎?

下面留言喔!