2012-02-02 60 views
1

我對我的網站使用visualsearch.js控件感興趣,但通過閱讀文檔,我仍不清楚如何有效獲取輸出搜索收集數據。基於該示例,輸出字符串是通過搜索集合的序列化構造的。然而,我想知道是否有一種方法可以更類似數組的方式訪問搜索集合(以便for/in循環可以使用),而不必解析單個序列化的字符串。最終,我需要從搜索集合數據構建S​​QL查詢。我們如何使用visualsearch.js的輸出?

如果有更高效或適當的方式來訪問搜索集合數據,請讓我知道!

謝謝!

+0

我成功地在我的應用程序中使用visualsearch.js,並且我也有一些麻煩把它編了起來。不過,我不確定要了解您的問題:您不知道如何使用facets輸出來過濾收藏夾?你能提供一個例子嗎? – 2012-02-02 15:29:07

+0

我熟悉的唯一輸出是searchCollection.serialize()方法,但它對我的目的並不是很有用。能夠以更像數組的方式訪問數據將更加合適。我是全新的JavaScript,所以我可能會缺少一些基礎知識......你能詳細解釋「facet輸出來過濾你的集合」嗎? – kaspnord 2012-02-02 15:37:32

回答

5

,據我所知有2種方式,從視覺搜索 獲取數據它也直接在其文檔中的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 2012-02-02 16:01:52

3

mhmmm ..好吧,答案並不那麼簡單。我建議你去做一些骨幹結構的練習,只是對待辦事項列表應用程序進行一些修改。這是一個很好的起點。所以你熟悉一些精彩的backbone.js收藏方法

基本思想如下: 通過visualsearch,你可以獲得一個「方面」列表,也就是說一個鍵/值對象數組。

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

在此之後,你可以使用myFacets元素與_underscore LIB hinerithed精彩filter方法iterativrely過濾收集你。

怎麼辦?您可以在下劃線LIB

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

在這裏,您使用Backbone.js的的過濾方法,該方法只返回值,根據您的從句是真正的使用方法_.each。所以,你爲每個單一面過濾你的收藏。這就像告訴javascript:「只返回與這個facets(value)相匹配的集合中的元素」,並且你爲迭代獲得所有不同的方面。

希望這會有所幫助。

啊..最後一件事,只是把想法弄亂了:-):Visualsearch建立在backbone.js之上,而searchQuery對象只不過是一個骨幹集合,所以你可以使用方法和屬性基本骨幹收集。如果不清楚,請再次閱讀此行,因爲這可能是未來實施的關鍵點!:-)

我建議你看看lib/js/models文件夾中的search_jquery.js文件。這是非常有趣的...

+1

很好的解釋 - 謝謝! – kaspnord 2012-02-02 16:56:00