검색 기능

개요

Fess 는 강력한 전문 검색 기능을 제공합니다. 본 섹션에서는 검색 기능의 상세 설정과 사용 방법에 대해 설명합니다.

검색 결과 건수 표시

기본 동작

query.track.total.hits 의 기본값은 10000 입니다. 따라서 검색 결과가 10,000건을 초과하는 경우, 검색 결과 화면의 건수 표시는「약 10,000건 이상」으로 표시됩니다. 이는 OpenSearch 가 정확한 총 히트 건수를 계산하는 상한을 query.track.total.hits 의 값으로 제한함으로써, 대규모 검색 시 성능 영향을 억제하기 위한 기본 설정입니다.

검색 예제

image0

정확한 히트 건수 표시

더 많은 건수까지 정확한 히트 건수를 표시하려면 fess_config.properties 에서 query.track.total.hits 의 값을 변경합니다.

query.track.total.hits=100000

위 예제에서는 최대 100,000건까지의 정확한 히트 건수를 가져올 수 있습니다. 건수 표시가「약 N건 이상」으로 표시되는 임계값도 이 설정값에 연동하여 변경됩니다. 단, 큰 값을 설정하면 성능에 영향을 줄 수 있습니다.

경고

값을 너무 크게 설정하면 검색 성능이 저하될 수 있습니다. 실제 사용 상황에 맞게 적절한 값을 설정하십시오.

검색 옵션

기본 검색

Fess 에서는 검색 상자에 키워드를 입력하기만 하면 전문 검색이 실행됩니다. 여러 키워드를 입력하면 AND 검색이 실행됩니다.

검색 엔진

위 예제에서는「검색」과「엔진」두 키워드를 모두 포함하는 문서가 검색됩니다.

OR 검색

OR 검색을 실행하려면 키워드 사이에 OR 을 삽입합니다.

검색 OR 엔진

NOT 검색

특정 키워드를 제외하려면 키워드 앞에 - (마이너스 기호)를 붙입니다.

검색 -엔진

구문 검색

완전 일치 구문을 검색하려면 큰따옴표로 묶습니다.

"검색엔진"

필드 지정 검색

특정 필드를 지정하여 검색할 수 있습니다.

title:검색엔진
url:https://fess.codelibs.org/

주요 필드:

  • title: 문서 제목

  • content: 문서 본문

  • url: 문서 URL

  • filetype: 파일 유형(예: pdf, html, doc)

  • label: 레이블(분류)

  • mimetype: MIME 타입(예: text/html, application/pdf)

  • filename: 파일명

  • host: 호스트명

  • site: 사이트(호스트명과 경로의 조합)

  • lang: 언어

검색 대상 필드는 fess_config.propertiesquery.additional.search.fields 에서 추가할 수 있습니다.

와일드카드 검색

와일드카드를 사용한 검색이 가능합니다.

  • *: 0개 이상의 임의 문자열

  • ?: 임의의 1개 문자

검색*
검색?진

퍼지 검색

철자 오류나 표기 차이에 대응하는 퍼지 검색을 사용할 수 있습니다. 기본적으로 4자 이상의 키워드에 대해 일반 검색과 함께 퍼지 검색 쿼리가 추가로 실행됩니다.

검색엔진~

~ 뒤에 숫자를 지정하여 편집 거리를 지정할 수 있습니다.

검색 결과 정렬

검색 결과는 기본적으로 관련도 순으로 정렬됩니다. 관리 화면의 설정이나 API 매개변수로 다음과 같은 정렬 순서를 지정할 수 있습니다.

  • 관련도 순(score, 기본값)

  • 업데이트 일시 순(last_modified)

  • 생성 일시 순(created)

  • 파일 크기 순(content_length)

  • 파일명 순(filename)

  • 클릭 수 순(click_count)

  • 즐겨찾기 수 순(favorite_count)

정렬 대상 필드는 fess_config.propertiesquery.additional.sort.fields 에서 추가할 수 있습니다.

패싯 검색

패싯 검색을 사용하면 검색 결과를 카테고리별로 필터링할 수 있습니다. 기본적으로 레이블(label) 필드가 패싯으로 설정되어 있습니다.

검색 화면 왼쪽에 표시되는 패싯을 클릭하여 검색 결과를 필터링할 수 있습니다.

검색 결과 하이라이트

검색 키워드는 검색 결과의 제목과 요약 부분에서 하이라이트 표시됩니다. 하이라이트 설정은 fess_config.properties 에서 사용자 정의할 수 있습니다.

query.highlight.tag.pre=<strong>
query.highlight.tag.post=</strong>
query.highlight.fragment.size=60
query.highlight.number.of.fragments=2
  • query.highlight.tag.pre / query.highlight.tag.post: 하이라이트 부분을 감싸는 태그(기본값: <strong> / </strong>)

  • query.highlight.fragment.size: 하이라이트할 단편(프래그먼트)의 문자 수(기본값: 60)

  • query.highlight.number.of.fragments: 표시할 프래그먼트의 최대 수(기본값: 2)

요약(스니펫)으로 하이라이트 대상이 되는 필드는 query.highlight.content.description.fields (기본값: hl_content,digest)에서 지정합니다.

추천 기능

검색 상자에 문자를 입력하면 추천(입력 자동완성)이 표시됩니다. 추천은 과거 검색 키워드나 인기 있는 검색 키워드를 기반으로 생성됩니다.

추천 기능은 관리 화면의「일반」설정에서 활성화/비활성화를 전환할 수 있습니다.

검색 로그

Fess 는 모든 검색 쿼리와 클릭 로그를 기록합니다. 이러한 로그는 다음 목적으로 사용할 수 있습니다.

  • 검색 품질 분석 및 개선

  • 사용자 행동 분석

  • 인기 검색 키워드 파악

  • 검색 결과가 0건인 키워드 특정

검색 로그와 클릭 로그는 OpenSearch 의 fess_log 프리픽스를 가진 인덱스에 저장됩니다 (검색 쿼리는 fess_log.search_log, 클릭 로그는 fess_log.click_log 인덱스). 이러한 로그는 OpenSearch Dashboards 를 통해 시각화 및 분석할 수 있습니다. Fess 에는 시각화용 대시보드 정의 파일이 동봉되어 있습니다. 자세한 내용은 검색 로그 시각화 설정 를 참조하십시오.

성능 튜닝

검색 타임아웃 설정

검색 타임아웃 시간을 설정할 수 있습니다. 기본값은 10초입니다.

query.timeout=10000

검색 쿼리 최대 문자 수

보안과 성능을 위해 검색 쿼리의 최대 문자 수를 제한할 수 있습니다.

query.max.length=1000

캐시 활용

Fess 자체에는 검색 결과(검색 응답)를 캐시하는 기능이 없습니다. 다만, 백엔드의 OpenSearch 가 샤드 요청 캐시 및 쿼리 캐시를 엔진 레벨에서 제공하며, 동일 조건의 검색에 대한 응답 시간 단축에 기여합니다. 이는 OpenSearch 측의 기능이므로, 필요에 따라 OpenSearch 의 설정에서 조정하십시오.

문제 해결

검색 결과가 표시되지 않음

  1. 인덱스가 올바르게 생성되었는지 확인하십시오.

  2. 크롤링이 정상적으로 완료되었는지 확인하십시오.

  3. 롤/권한 기반의 검색 필터링으로 인해 현재 사용자(게스트 포함)에 대해 대상 문서가 제외되지 않는지 확인하십시오.

  4. OpenSearch 가 정상적으로 작동하는지 확인하십시오.

검색 속도가 느림

  1. OpenSearch 의 힙 메모리 크기를 확인하십시오.

  2. 인덱스의 샤드 수와 복제본 수를 최적화하십시오.

  3. 검색 쿼리의 복잡도를 확인하십시오.

  4. 하드웨어 리소스(CPU, 메모리, 디스크 I/O)를 확인하십시오.

관련성 낮은 결과가 표시됨

  1. 부스트 설정을 조정하십시오(query.boost.title, query.boost.content 등).

  2. 퍼지 검색 설정을 재검토하십시오.

  3. Analyzer 설정을 확인하십시오.

  4. 필요한 경우 상용 지원에 문의하십시오.

  5. Rank Fusion 을 활용하여 검색 정확도를 향상시킬 수도 있습니다. 자세한 내용은 Rank Fusion 설정 을 참조하십시오.