원하는 것을 성취하기위한 여러 가지 방법이 있습니다. 전 접두사를 일치시키는 방식에 달려 있다고 말할 수 있습니다. Prefix Query을 사용하거나 EdgeNGrams을 사용자 입력란에서 빼고 접두사 쿼리없이 검색 할 수 있습니다. 첫 번째 옵션은 조금 느리고 두 번째 옵션은 더 많은 용어 (ngrams)를 색인하기 때문에 색인 크기가 증가합니다.
접두어 쿼리를 결정하면 다른 쿼리를 함께 사용해야합니다. bool query을 사용하면됩니다. 일치해야하는 검색어와 일치해야하는 검색어 (선택 사항 인 경우)를 결정하면됩니다. 접두어 일치가 예를 들어 더 중요하다는 것을 나타 내기 위해 각 쿼리를 향상시킬 수도 있습니다. 당신이 인덱스 EdgeNGrams하기로 결정하는 경우 반면에
, 단일 query string를 사용하고 이런 그들에게 서로 다른 가중치를 부여 다른 필드에 검색 할 수 있습니다
{
"query" : {
"query_string" : {
"fields" : "user.ngrams^3 field1^2 field2",
"query" : "query"
}
}
}
또한 고려해야 할 쿼리 문자열을 사용하면 여러 용어 (부울 쿼리가 생성 됨)를 검색하고 lucene query syntax을 사용할 수 있습니다. 또한 접두사 쿼리가 아닌 동안 쿼리 문자열이 분석됩니다. 그것은 모두 당신이 필요로하고 그 기능이 당신의 유스 케이스에 유용한지 여부에 달려 있습니다.
자세한 정보가 필요한 경우 알려주십시오.
@javanna 확실히 아직 테스트하지는 않았지만 유용 할 것으로 확신합니다. – samuraisam