TL : DR 토큰 화 알고리즘이 마침표를 처리하는 방식 때문입니다.
텍스트 검색을 수행하면 리터럴 필드가 아닌 처리 된 데이터를 검색합니다. (어쩌면 그것은 명백해야했습니다,하지만 내가 전에 그것에 대해 생각하지 방법이었다.)
는 documentation 텍스트가 처리되는 방법의 개요를 제공합니다 인덱싱 동안
, 아마존 CloudSearch 프로세스를 텍스트 및 텍스트 배열 필드에 대해 필드에 구성된 분석 스키마에 따라 인덱스에 추가 할 용어를 결정합니다. 분석 옵션을 적용하기 전에 텍스트를 토큰 화하고 정규화합니다.
토큰 화하는 동안, 필드에 텍스트의 흐름이 정의 된 단어 휴식의 규칙을 사용하여 감지 경계에 별도의 토큰으로 분할됩니다 :
궁극적으로이 문제를 일으키는 과정의 부분은 토큰 화입니다 유니 코드 텍스트 분할 알고리즘
단어 분리 규칙에 따르면 공백 및 탭과 같이 공백으로 구분 된 문자열은 별도의 토큰으로 처리됩니다. 대부분의 경우 구두점을 삭제하고 공백으로 처리합니다. 예를 들어, 문자열은 하이픈 (-)과 at 기호 (@)로 나뉩니다. 그러나 공백이 오지 않는 기간은 토큰의 일부로 간주됩니다.
질문에서 설명한 것과 일치하는 이유는 파일 확장자가 단일 토큰으로 시작하는 파일에 포함되어 있기 때문입니다. 예제를 되돌아보고이 규칙에 따라 색인을 작성하면 # 1이 아닌 # 3의 # 1, # 2 및 # 4 문서가 'cars'검색에서 반환되는 이유가 있습니다.
# Text Index
1 'cars' ['cars']
2 'Cars Movie.jpg' ['cars', 'movie.jpg']
3 'cars.pdf'. ['cars.pdf']
4 'cars#.jpg' ['cars', '.jpg']
가능한 해결책
그것은이 문제를 해결할 수있는 사용자 정의 분석 방식을 설정하는 것처럼 보일 수도 있지만,이 옵션 중 어느 것도 (중지 단어는 형태소 분석하지 동의어)를 사용하면 토큰 화 문제를 극복하는 데 도움. 원하는 동작을 얻는 유일한 방법은 업로드 전에 파일 이름을 토큰 화 (사용자 지정 알고리즘 사용) 한 다음 토큰을 텍스트 배열 필드에 저장하는 것입니다.여러 언어를 지원하는 사용자 정의 토큰 화 알고리즘을 고안하는 것은 큰 문제입니다.