2017-11-28 22 views
1

단어 내부의 문자를 검색 할 수있는 고급 Query Filter을 만들어야합니다.Google App Engine에서 내부 하위 문자열에 대한 검색어 필터를 단어로 작성

예를 들어 Angel에 대해 gel이라는 단어를 찾으면 일치하는 필터가됩니다.

Filter propertyFilter = new FilterPredicate("name", FilterOperator.EQUAL, name); 

Query<User> result = ObjectifyService.ofy().load().type(User.class) 
        .filter(propertyFilter); 

Query은 단어가 일치하는 경우에만 작동합니다.

답변

3

데이터 저장소는 이러한 종류의 작업에 적합하지 않습니다. 접두어 일치 또는 접미사 일치를 수행하는 것은 매우 간단하지만 문자열 중간의 임의 텍스트는 일치 할 수있는 각 조각을 색인화해야합니다. 예 : 천사가 [Angel, ngel, gel, el, l]이됩니다. 이 모든 데이터를 저장하는 데 다소 비싸며 긴 문자열에는 잘 맞지 않습니다.

GAE의 검색 API는 이런 종류의 경우에 더 좋은 경향이 있으며 색인을보다 효율적으로 저장합니다.

참고 : 이것은 데이터베이스의 경우 어려운 문제입니다. RDBMS는 LIKE '%gel%'을 작은 데이터 세트에 대해서만 작동하는 테이블 스캔으로 변환합니다. 전체 텍스트 검색 엔진은 일반적으로 단어 만 검색하며 내부 하위 문자열은 검색하지 않습니다.