자동 완성과 미리 입력이란 무엇인가요?
자동 완성으로 위키백과 말한다
"자동 완성 또는 단어 완성은 애플리케이션이 사용자가 입력하는 나머지 단어를 예측하는 기능입니다."
제안 또는 미리 입력 또는 입력 시 검색이라고도 합니다. 이는 사용자가 텍스트를 입력할 때 가능한 완성형 및 대체형을 제시하여 탐색 또는 안내하는 데 도움이 됩니다. 또한 최종 검색 결과를 얻기 위해 사용자가 입력해야 하는 문자의 양을 줄여 사용자의 검색 경험을 향상시킵니다.
Couchbase FTS를 사용하여 자동 완성 기능을 구현하는 방법에 대한 몇 가지 기능적 접근 방식을 살펴보겠습니다.
엣지 N그램 접근 방식 사용.
이 접근 방식에는 다양한 인덱스 및 쿼리 시간 분석기를 사용하는 것이 포함됩니다.
Step1 - 는 자동 완성이 필요한 필드에 대한 올바른 FTS 인덱스 정의를 갖는 것입니다. 따라서 인덱싱하는 동안 자동 완성하려는 필드는 사용자 정의 분석기로 분석하여 엣지-엔그램 토큰 필터. 와 연결할 수도 있습니다. to_lower 대소문자 구분이 걱정된다면 토큰 필터를 사용하세요. store - 옵션을 인덱스 정의의 자동 완성 필드에 사용하도록 설정해야 FTS 인덱스 내에서 필드 내용을 그대로 유지하여 쿼리 단계에서 이 저장된 필드 값을 명시적으로 가져와 실제 자동 완성 또는 사용자에게 제안을 수행할 수 있습니다.
엣지 엔그램 토큰 필터는 어떻게 작동하나요?
에지 엔그램 토큰화 도구는 주어진 자동 완성 텍스트 값을 주어진 최소 및 최대 길이 매개변수 범위의 하위 토큰으로 토큰화합니다. 예를 들어, 최소 길이 2, 최대 길이 6의 에지 엔그램 토큰화기는 주어진 텍스트 "쥬라기 공원'를 입력합니다.
주, 주르, 주라, 주라스, 주라스, 파, 파, 파크.
여기서 아이디어는 인덱싱된 필드의 토큰화된 텍스트가 향후 사용자 인터페이스에서 사용자의 잠재적인 부분 텍스트 입력으로 사용될 수 있다는 것입니다.
Step2 - 나중에 최종 사용자가 실제로 사용자 인터페이스의 텍스트 상자에 입력을 시작하면 클라이언트 애플리케이션은 텍스트 상자에서 사용 가능한 부분 텍스트를 사용하여 백그라운드에서 검색 쿼리를 트리거할 수 있습니다. 클라이언트는 특히 일치 쿼리 명시적으로 제공할 수 있는 조항이 있기 때문입니다,
- 분석기를 검색 텍스트에 사용할 수 있습니다.
검색 단계에서 불필요한 텍스트 분할을 방지하기 위해 검색 쿼리에 간단한 분석기를 사용해야 합니다.
- 적용해야 합니다.
고객이 퍼지 적용 자동 완성 제안을 받고자 하는 경우 퍼지 요소를 언급할 수도 있습니다.
이러한 옵션은 자동 완성 기능을 제어하는 데 도움이 됩니다.
일치 쿼리와 함께 클라이언트는 다음을 사용하여 실제 자동 완성된 필드 내용을 요청해야 합니다. 필드 옵션을 입력하면 이 값이 자동 완성 텍스트 또는 사용자 입력으로 사용됩니다.
예를 들어 "jur" 또는 "pa"와 같은 부분 텍스트에 대한 일치 쿼리는 아래의 모든 제목과 일치합니다.
쥬라기 공원
쥬라기 공원 III
잃어버린 세계: 쥬라기 공원
결과의 순서/순위 – 기본값 TF-IDF 순위는 인덱싱되는 n-그램에 적용될 수 있습니다. 클라이언트 측에서 검색된 필드 값에 클라이언트/애플리케이션별 사용자 지정 정렬을 적용하여 특정 제안 순서를 지정할 수 있습니다.
자동 완성 샘플을 확인할 수 있습니다. 부트스트랩 애플리케이션 여기 -
접두사 기반 접근 방식
이 접근 방식에는 동일한 인덱스 및 쿼리 시간 분석기를 사용하는 것이 포함됩니다.
Step1 – 인덱싱하는 동안 자동 완성 의도 필드를 분석해야 합니다. 키워드 분석기. 키워드 분석기를 사용하면 이 필드의 값이 키워드로 저장되어 전체 값이 모든 용어와 공백이 유지된 단일 토큰처럼 취급됩니다.
Step2- 나중에 쿼리 시간 동안 이 접근 방식은 다음을 시도합니다. 접두사 쿼리 를 문서에서 원하는 필드에 대입합니다. 첫 번째 접근 방식과 유사하게 클라이언트는 명시적으로 를 사용하여 실제 자동 완성된 필드 콘텐츠에 대한 요청 필드 옵션을 입력하면 이 값이 사용자의 자동 완성 텍스트로 사용됩니다.
이 접근 방식은 필드 값의 시작/접두사로만 매칭이 엄격하게 제한된다는 제한이 있습니다.
예를 들어, 위에서 언급한 사용 사례("Jur"와 같은 부분 텍스트 포함)에서 접두사 기반 접근 방식을 사용하면 다음과 같습니다.
"쥬라기 공원"
"쥬라기 공원 III"
가 결과에 표시되지만 "잃어버린 세계: 쥬라기 공원'은 접두사("잃어버린 세계:")가 "Jur"로 시작하지 않기 때문에 표시되지 않습니다.