[Elasticsearch] 부분 일치(3) - 검색 중 실시간 검색
질의 중 실시간 검색(Query-time Search-as-you-type)
이제 접두사가 일치하면 전체 텍스트 검색을 어떻게 도와줄 수 있는지 봅시다.사용자는 입력을 완료하기 전에 검색 결과를 보는 것에 익숙해졌다. - 이것은 실시간 검색(Instant Search, 또는 Search-as-you-type)이라고 부른다.이것은 사용자로 하여금 더욱 짧은 시간 안에 검색 결과를 볼 수 있게 할 뿐만 아니라, 그들로 하여금 우리의 색인에 실제로 존재하는 결과를 얻게 할 수 있다.
예를 들어 사용자가 Johnnie walker bl을 입력하면 사용자 입력이 완료되기 전에 Johnnie Walker Black Label과 Johnnie Walker Blue Label과 관련된 결과를 표시합니다.
여느 때와 마찬가지로 다양한 방식으로 우리의 목적을 달성할 수 있다!우선 우리는 가장 간단한 방식부터 시작한다.어떤 방식으로든 데이터를 준비할 필요가 없고, 전체 텍스트 필드(Full-text Field)에서 실시간 검색을 할 수 있다.
구문 일치(Phrase Matching)에서 match_를 소개했습니다.phrase 조회는 단어 순서에 따라 모든 지정한 단어를 일치시킬 수 있습니다.조회 기간의 실시간 검색에 대해 우리는 이 조회의 특례, 즉 match_를 사용할 수 있다phrase_prefix 쿼리:
{
"match_phrase_prefix" : {
"brand" : "johnnie walker bl"
}
}
2차 조회 및 match_phrase 검색의 작업 방식은 기본적으로 같습니다. 검색 문자열의 마지막 단어를 접두사로 사용할 수 있습니다.즉, 앞의 예제에서는 다음을 찾습니다.
johnnie
이어서 워커
이어서bl로 시작하는 단어입니다
이 질의를 validate-query API를 통해 실행하면 다음과 같은 설명이 나타납니다.
"johnnie walker bl*"
및 match_phrase 조회와 같이 단어 간의 순서와 상대적인 위치가 엄격하지 않도록slop 매개 변수를 받아들일 수 있습니다.
{
"match_phrase_prefix" : {
"brand" : {
"query": "walker johnnie bl",
"slop": 10
}
}
}
그러나 검색 문자열의 마지막 단어는 항상 접두사로 사용됩니다.
이전에prefix 조회를 소개했을 때, 우리는prefix 조회의 주의해야 할 부분인 prefix 조회를 할 때 자원을 어떻게 소모하는지 이야기했다.match_ 사용 중phrase_prefix가 조회할 때도 같은 문제에 직면해 있습니다.접두사 a는 매우 많은 단어와 일치할 수 있다.이렇게 많은 단어를 일치시키면 많은 자원을 소모할 뿐만 아니라 사용자에게도 쓸모가 없다.
우리는 매개 변수를 max_expansions는 접두사 확장(Prefix Expansion)의 영향을 제한하기 위해 합리적인 수치로 설정됩니다. 예를 들어 50:
{
"match_phrase_prefix" : {
"brand" : {
"query": "johnnie walker bl",
"max_expansions": 50
}
}
}
max_expansions 매개 변수는 이 접두사와 일치하는 단어의 수를 제어합니다.bl로 시작하는 첫 번째 단어를 찾아서 (알파벳 순서로) 모든 bl로 시작하는 단어가 옮겨다니거나 비max_expansions 더 많은 단어.
사용자가 문자를 칠 때마다 이 검색은 한 번 실행되기 때문에 속도가 빨라야 한다는 것을 잊지 마세요.만약 첫 번째 결과 집합이 사용자의 기대에 부합되지 않는다면, 그들은 그들이 필요로 하는 결과를 얻을 때까지 계속 입력할 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
elasticsearchnested 삽입 대상 전체 텍스트 검색 및 정렬ES Nested 중첩 유형은 무엇입니까?Elasticsearch에는 다음과 같은 다양한 데이터 유형이 있습니다. 기본 데이터 형식:string 형식.ES 7.x에서string 형식은:text와 키워드로 업그레이드됩...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.