2017-01-25 5 views
1

ArangoDB를 사용하여 이름에 대한 전체 텍스트 쿼리를 수행하려고합니다. 예를 들어, 초기 검색을 원합니다. "John J. Doe"또는 "J. Doe"를 검색하면 John James Doe가 반환됩니다. minLength: 1 색인을 설정하고 prefix 태그를 검색에 사용하려고합니다. 예 : "prefix:J,Doe". 불행하게도 이것은 검색을 사용할 수 없게 느리게 만듭니다 (1.6M 레코드를 넘는 단일 검색의 경우 5 초). 이 작업이 더 빨라지거나 길이가 1 인 prefix: 쿼리의 예상되는 동작입니까?접두어를 사용하는 전체 텍스트 쿼리

답변

0

ArangoDB는 ICU 토크 나이저를 사용하여 경계에서 단어를 분리합니다. 당신은 SYS_SPLIT_WORDS_ICU 명령을 사용하여 arangosh에서 작업을 inpsect 수 있습니다 : 당신의 사건에 대한 그래서

SYS_SPLIT_WORDS_ICU() 
usage: SplitWordlist(<value>, minLength, [<maxLength>, [<lowerCase>]]) 

을 당신이 시도 할 수 있습니다 : 아마도 높은 CPU 사용률의 원인 인

SYS_SPLIT_WORDS_ICU('John J. Doe', 1) 
[ 
    "John", 
    " ", 
    "J", 
    ".", 
    " ", 
    "Doe" 
] 

. 3의 최소 길이는 좋은 절충안 인 것 같습니다. 특정 기능이 필요한 경우 응용 프로그램에서 색인 텍스트를 준비하는 특수 검색 필드를 준비해야합니다.