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