검색 결과 처리

통합 검색 서비스로부터 받는 SearchResponse 객체는 EntityBasedSearchable 그리고 키워드와 일치하는 검색 필드를 기준으로 검색 결과를 정리합니다. 데이터에 액세스하려면 이 객체를 구문 분석해야 합니다.
시작하기 전에: UnifiedSearchServices.search()SearchResponse 객체를 데이터와 함께 반환했는지 확인하십시오. SearchResponse 객체를 parseResponse()에 전달하십시오.
  1. 필요한 클래스와 인터페이스를 가져옵니다.
    import net.rim.device.api.unifiedsearch.entity.*;
    import net.rim.device.api.util.Arrays;
    import net.rim.device.api.system.Application;
    import java.util.*;
    
  2. BlackBerry 단말기 사용자에게 표시할 검색 가능 객체를 저장하기 위한 인스턴스 변수를 만듭니다.
    MySearchableEntity[] _myEntities;
  3. parseResponse를 구현합니다. 이 메소드는 검색 스레드가 종료된 후에 실행되므로 SearchResponse 매개 변수를 final로 선언합니다.
    private void parseResponse(final SearchResponse searchResult) {
  4. 프로그램이 이벤트 스레드를 다시 제어할 수 있게 될 때 실행되도록 이 메소드를 구성합니다.
        Application.getApplication().invokeLater(new Runnable() {
            public void run() {
  5. 검색 결과에서 EntityBasedSearchable에 대한 검색 필드 및 검색 가능 엔터티를 포함하고 있는 Hashtable 객체를 검색합니다.
                final Hashtable results = searchResult.getSearchResult(_searchable);
  6. Hashtable에 값을 포함하고 있는 Enumeration 객체를 검색하고, 열거로부터 고유 값을 저장하기 위한 배열을 선언합니다.
                Enumeration values = results.elements();
                Object[] searchableEntities;
  7. 표시할 검색 가능 엔터티의 배열을 초기화합니다.
                _myEntities = new MySearchableEntity[0];
  8. values 열거를 통해 반복하고 고유 값을 searchableEntities에 추가합니다.
                while(values.hasMoreElements()) {
                    searchableEntities = (Object[]) values.nextElement();
                    for(int i = searchableEntities - 1; i >= 0; --i) {
                        if(!Arrays.contains(_myEntities, searchableEntities[i]) {
                            Arrays.add(_myEntities, searchableEntities[i]);
                        }
                    }
                }
            }
        });
    } 
_myEntities 배열에는 사용자에게 검색 결과를 표시하는 데 사용할 수 있는 고유 MySearchableEntity 객체의 집합이 포함되어 있습니다.
이전 주제: 검색 구성 및 시작

이 정보가 도움이 되었습니까? 의견을 보내 주십시오.