본문으로 이동

검색 기능 구성

학교의 모든 지식. SMwiki
Sam (토론 | 기여)님의 2025년 12월 24일 (수) 01:45 판 (설치)
(차이) ← 이전 판 | 최신판 (차이) | 다음 판 → (차이)

한글 검색을 제대로 사용하기 위해 필요한 검색 관련 확장 기능 및 구성 방법을 정리한다.

기본 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 # 재부팅 시 재시작.
  • LocalSettings에 설정 추가.

$wgCirrusSearchServers = [

    'http://localhost:9200'

];

CirrusSearch

[편집 | 원본 편집]
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

[편집 | 원본 편집]

굳이 필요한가 싶다; 그냥 키워드 검색만이라면... 굳이..?

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' );추가