한글 검색을 제대로 사용하기 위해 필요한 검색 관련 확장 기능 및 구성 방법을 정리한다.
기본 DB 검색으로는 한글 형태소 검색에 한계가 있으므로,
OpenSearch + CirrusSearch 조합을 사용한다.
| 기능명
|
역할
|
설치방법
|
| java
|
아래 이어지는 것들을 위해.
|
보통 자바 설치 안되어있으니 설치 진행.
작업
| 과정
|
설치방법
|
| JDK설치 명령어
|
맞는 자바를 아래 중 하나로 설치한다.(열받게도... 최신버전이 적절하지 않을 때가 많다.)
MediaWiki 1.45 기준에서는 '''Java 17''' 사용을 권장
sudo apt install openjdk-17-jdk -y
|
| 확인
|
java -version
javac -version
|
|
| OpenSearch
|
CirrusSearch가 사용하는 검색 엔진.
서버용이라, 램이 최소 4G는 되어야 함;;;
|
https://www.mediawiki.org/wiki/Extension:CirrusSearch 통해서 맞는 버전 찾아서 설치해야 함. 버전 안맞으면 정말 골아픔;; 아무 생각 없으면 최신버전으로 설치하니, 유의.
- curl -fsSL https://artifacts.opensearch.org/publickeys/opensearch.pgp | sudo gpg --dearmor -o /usr/share/keyrings/opensearch-keyring.gpg
- echo "deb [signed-by=/usr/share/keyrings/opensearch-keyring.gpg] https://artifacts.opensearch.org/releases/bundle/opensearch/1.x/apt stable main" | sudo tee /etc/apt/sources.list.d/opensearch.list
- sudo apt update
- sudo apt install opensearch -y
- 보통 설치 후에 에러가 뜸. 복사해서 AI에 위키용이라고 말하면 괜찮다고 해주는데..
설정
- sudo nano /etc/opensearch/opensearch.yml # 아예 파일을 삭제한 후 아래 주석을 붙여넣어도 됨.설정파일이 꽤 긴데, 검색해서 대강 주석을 풀거나 정리한다. 없는 건 추가하자. 외부노출이 아닌 경우, 보안 단순화를 위해 security 플러그인 비활성화.
cluster.name: mediawiki-search
node.name: node-1
network.host: 127.0.0.1
http.port: 9200
discovery.type: single-node
plugins.security.disabled: true
path.data: /usr/share/opensearch/data # 요거 없어서 에러가 나는 경우가 상당히;; 이 설정들 괜찮은지 AI 점검 후 진행하자.
- sudo systemctl daemon-reload
- sudo systemctl enable opensearch
- sudo systemctl start opensearch
- curl http://localhost:9200 # 동작확인.
- sudo systemctl enable opensearch # 재부팅 시 재시작.
$wgCirrusSearchServers = [
'http://localhost:9200'
];
|
|
|
|
|
| OpenSearch(구 Elasticsearch)를 위키에서 제어하기 위한 확장기능.
검색창에서 실제로 작동.
|
링크를 참고하여 구성하였다.
https://www.mediawiki.org/wiki/Extension:CirrusSearch
복잡하니.. 명령 후에 떠오르는 메시지를 찬찬히 보며 잘 따라가길.
일반 검색규약을 따르는듯. Help페이지가 따로 있다.
| 과정
|
방법
|
| 링크에서 다운 후, extension 폴더에 옮긴 긴다.
|
mediawiki 디렉토리에서 진행.
버전은 수정해서 기입. git clone -b REL1_45 "https://gerrit.wikimedia.org/r/mediawiki/extensions/CirrusSearch" extensions/CirrusSearch
|
| CirrusSearch 디렉터리에서 명령 실행.
|
- cd extensions/CirrusSearch
- sudo apt install composer
- composer install --no-dev
학교망에선 인증서 문제가 지속적으로 발생하는데.. 해결하기 어렵다. 인증서 무시를 명시해준다.
- composer config --global disable-tls false # 위에서 문제가 생기면.
- ### 엘라스티카 설치.
- cd /var/www/mediawiki/extensions
- sudo git clone -b REL1_45 https://gerrit.wikimedia.org/r/mediawiki/extensions/Elastica # 버전에 유의
- cd /var/www/mediawiki/extensions/Elastica
- sudo composer install --no-dev
|
| LocalSettings에 반영.
(기본 디렉토리에서)
|
- wfLoadExtension( 'Elastica' ); wfLoadExtension( 'CirrusSearch' ); $wgCirrusSearchServers = [ [ 'host' => '127.0.0.1', 'port' => 9200 ] ]; $wgDisableSearchUpdate = true; $wgSearchType = 'CirrusSearch';
|
| php 실행
|
- cd /var/www/mediawiki/extensions/CirrusSearch
- php /var/www/mediawiki/maintenance/run.php /var/www/mediawiki/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php
|
| php 실행(인덱스 만들기)
/extensions/CirrusSearch 안에서. mysql처럼 특정 데이터를 서버에 저장하는듯.
|
이번엔 시간이 상당히 오래걸린다.
- cd /var/www/mediawiki/extensions/CirrusSearch/
- php maintenance/ForceSearchIndex.php --skipLinks --indexOnSkip
- php maintenance/ForceSearchIndex.php --skipParse
빨리 끝나는 경우도 있는데.. 이땐 한글검색이 가능하게 되기까지 반영시간이 있다.(최신기능인듯.)
|
| LocalSettings 변경
|
위에서 입력했던 $wgDisableSearchUpdate = true;를 지우거나 주석처리한다.
|
| php 실행
|
미디어위키 루트에서
php maintenance/update.php
php /var/www/mediawiki/maintenance/run.php /var/www/mediawiki/extensions/CirrusSearch/maintenance/UpdateSearchIndexConfig.php
|
나중에 DB를 바꾼다든가, Elasticsearch를 업데이트 할 땐 $wgDisableSearchUpdate = true; 를 넣어주는 것부터 다시 진행하면 됨.
|
굳이 필요한가 싶다; 그냥 키워드 검색만이라면... 굳이..?
| AdvancedSearch
|
특수:검색 기능 제공. Special:Search기능 강화.
CirrusSearch를 토대로 작동한다.
검색할 때 고급검색이 가능해진다.
커스텀 검색필드 제작 가능.
|
Extension:CirrusSearch 가 설치되어 있어야 한다.
| 과정
|
방법
|
| 링크에서 다운 후, extension 폴더에 옮긴 긴다.
|
git clone https://gerrit.wikimedia.org/r/mediawiki/extensions/AdvancedSearch --branch REL1_45 extensions/AdvancedSearch
|
| LocalSettings 변경
|
echo "wfLoadExtension( 'AdvancedSearch' );" >> LocalSettings.php
|
https://www.mediawiki.org/wiki/Special:ExtensionDistributor?extdistname=AdvancedSearch&extdistversion=REL1_34 굉장히 간단. 폴더에 옮겨둔 후, LocalSettings에 wfLoadExtension( 'AdvancedSearch' );추가
|