2012-02-02 2 views
1

내 웹 사이트에 visualsearch.js 컨트롤을 사용하고 싶지만 설명서를 읽은 후에 출력 검색 컬렉션 데이터를 효과적으로 얻는 방법에 대해서는 아직 명확하지 않습니다. 예제를 기반으로 출력 문자열은 검색 컬렉션의 serialization을 통해 생성됩니다. 그러나 단일 배열 된 문자열을 구문 분석하지 않고 검색 배열에 더 많은 배열 방식으로 액세스 할 수있는 방법이 있는지 궁금해하고있었습니다 (for/in 루프를 사용할 수 있도록). 궁극적으로 검색 수집 데이터에서 SQL 쿼리를 작성해야합니다.visualsearch.js의 출력은 어떻게 사용합니까?

검색 컬렉션 데이터에 더욱 효율적으로 또는 적절한 방식으로 액세스하는 방법이 있으면 알려 주시기 바랍니다.

감사합니다.

+0

나는 내 애플 리케이션에서 성공적으로 visualsearch.js를 사용하고 또한 몇 가지 문제가 그것을 설정했다. 그러나 당신의 문제가 무엇인지 이해할 수는 없습니다. 패싯 출력을 사용하여 컬렉션을 필터링하는 방법을 모릅니다. 예제를 제공해 줄 수 있습니까? –

+0

내가 익숙한 유일한 출력은 searchCollection.serialize() 메소드이지만, 제 목적에는 그리 유용하지 않습니다. 배열과 같은 방식으로 데이터에 액세스 할 수있는 것이 더 적합합니다. 나는 브랜드에 새로운 자바 스크립트 그래서 나는 몇 가지 기본을 놓칠 수도 ... 당신이 "당신의 컬렉션을 필터링하는 패싯 출력에 대한 자세한 정교 할 수 있을까?" – kaspnord

답변

5

는 지금까지 내가 아는 한 당신이 말한 것처럼 직접 usage #4

  1. 자신의 문서에 설명되어 비주얼 검색 에서 데이터를 가져 오기 위해 두 가지 방법, 검색의 캐릭터 라인 버전이있다.

    visualSearch.searchBox.value(); 
    
    // returns: 'country: "United States" state: "New York" account: 5-samuel title: "Pentagon Papers"' 
    
  2. 또는 당신이 볼 수있는

    visualSearch.searchQuery.facets(); 
    
    // returns: [{"country":"United States"},{"state":"New York"},{"account":"5-samuel"},{"title":"Pentagon Papers"}] 
    

    을 통해 루프로 각면 객체는,이 옵션에 여과면 당, 당신에게 배열을 제공하고, 각 자산에 대한 값이 입력 된 것을 .

+0

고마워 - 내가 뭘 찾고있어. – kaspnord

3

mhmmm .. 대답은 그리 간단하지 않습니다. todo-list app에 약간 수정을 가한 백본 구조로 연습을 해보라고 제안합니다. 그것은 훌륭한 출발점입니다. 따라서 컬렉션에 대한 훌륭한 backbone.js 메소드에 익숙해집니다.

기본 아이디어는 다음과 같습니다. visualsearch를 사용하면 "패싯"목록, 즉 키/값 객체의 배열을 얻을 수 있습니다.

var myFacets = visualSearch.searchQuery.facets(); 
//my facets is then something like [{"field1":"value1-a"},{"field2":"value2-c"}] 

이 후에는 iterativrely _underscore lib 디렉토리에서 hinerithed 멋진 filter 방법 당신 수집을 필터링 할 myFacets 요소를 사용할 수 있습니다.

어떻게 만드시겠습니까? 당신은 여기

_.each(myFacets,function(facet){ 
       myCollection=myCollection.filter(function(item){ 
        return item.get(facet.get('category')) == facet.get('value'); 
        }); 
       }); 
      } 

당신은 값이 조항에 따라 해당 반환 backbone.js의 필터 방법을 사용에서는 lib 밑줄에 _.each의 방법을 사용할 수 있습니다. 따라서 각 단일면에 대해 한 번만 수집 물을 필터링하십시오. 그것은 javascript에게 말하는 것과 같습니다 : "이 패싯 (값)과 일치하는 컬렉션의 요소 만 반환하십시오."그리고 당신이 가진 모든 다른 패싯에 대해 반복적으로 수행합니다.

희망이 도움이됩니다.

아 .. 마지막으로, 아이디어를 엉망으로 만드는 것 :-) : Visualsearch는 backbone.js를 기반으로하며 searchQuery 객체는 백본 Collection뿐입니다. 따라서 메소드 및 속성을 사용할 수 있습니다. 기본 백본 수집. 이것이 명확하지 않은 경우이 행을 다시 읽으십시오. 이는 향후 구현을위한 핵심 포인트가 될 수 있습니다!:-)

lib/js/models 폴더의 search_jquery.js 파일을 살펴 보시기 바랍니다. 그것은 매우 흥미 롭습니다 ...

+1

위대한 설명 - 고마워요! – kaspnord