근접 검색

근접 검색(단어 간 거리 검색)

근접 검색은 구문에 포함된 단어가 서로 붙어 있지 않더라도 가까운 위치에 있는 문서를 검색하는 방법입니다. 찾으려는 단어 사이에 다른 단어가 들어갈 수 있는 경우에 유용합니다.

사용 방법

단어를 큰따옴표로 묶고, 닫는 따옴표 뒤에 “~”와 숫자를 추가합니다.

예를 들어 다음과 같이 입력하면 “Fess”와 “검색”이 거리 3 이내에 있는 문서를 검색할 수 있습니다.

"Fess 검색"~3

숫자는 단어 사이에서 허용되는 위치 이동 횟수의 최댓값입니다 (자세한 내용은 아래의 “거리 계산 방식”을 참조하십시오). 숫자가 클수록 단어가 더 멀리 떨어져 있어도 일치합니다.

필드를 지정하여 근접 검색을 수행할 수도 있습니다. 다음 예에서는 title 필드를 검색합니다.

title:"Fess 검색"~3

숫자를 생략하고 “~”만 지정한 경우 (예: "Fess 검색"~)에는 단어가 인접해 있어야 하는 일반 구문 검색으로 처리됩니다. 소수를 지정한 경우 소수점 이하는 버려집니다 (~2.5는 ~2로 처리됩니다).

부스트와 함께 사용할 수도 있습니다. 다음 예에서는 근접 검색에 2의 부스트를 적용합니다 (부스트 검색 참조).

"Fess 검색"~5^2

거리 계산 방식

  • 숫자는 단어 사이에서 허용되는 위치 이동 횟수의 최댓값입니다. 대상 필드의 애널라이저가 생성한 토큰을 단위로 계산하며, 문자 수나 공백으로 구분된 단어 수가 아닙니다. 영어 텍스트에서는 대략 단어 사이에 끼어 있는 단어 수에 해당합니다. 분석 시 불용어로 제거된 단어도 계산에 포함됩니다.

  • 단어의 순서가 바뀌어도 일치하지만, 역순인 경우에는 더 큰 숫자가 필요합니다. 예를 들어 “quick brown fox”를 포함하는 문서는 "quick fox"~1에 일치하지만, "fox quick"에 일치시키려면 ~3 이상이 필요합니다.

"quick fox"~1
"fox quick"~3

한국어 등 CJK 텍스트의 경우

일본어, 중국어, 한국어 등 CJK 텍스트에서는 거리를 계산하는 단위가 필드에 따라 다릅니다.

  • title, content 등의 범용 필드에서는 단어 사이에 있는 문자 수에 가까운 값이 됩니다.

  • 언어별 필드에서는 형태소를 단위로 계산되며, 제거된 조사 등도 계산에 포함됩니다.

따라서 단어는 공백으로 구분하고, 숫자는 여유 있게 지정하십시오.

"전문 검색"~5
"오사카 맛있는"~10

공백이 없는 문자열 (예: "오사카맛있는"~10)은 범용 필드에서는 연속된 하나의 문자열로 대조되므로, 단어 간 근접 검색으로 기대한 대로 동작하지 않을 수 있습니다. 단어는 공백으로 구분하십시오. 거리를 문자 수로 정확하게 환산할 수는 없으므로, 먼저 큰 숫자를 지정하고 결과를 확인하면서 좁혀 나가십시오.

관련 항목