2016-06-20 22 views
1

我正在致力於電子商務,其中產品主要分爲兩類:非高級和高級。我在索引過程中使用了一個布爾值來確定一個產品是否是溢價。在Algolia中將字符串與布爾值進行匹配搜索

我希望每當用戶搜索「高級」時,只顯示高級產品。

我怎麼能做到這一點?

回答

1

我發現了一個解決方法來做到這一點,但我必須說這不是我最喜歡的。

我基本上在單個數組中存儲每個標籤索引的列表,並根據查詢中寫入的內容構建過濾器。

// [...] code containing the initialization of algolia-client-js 
 

 
var tags = ["premium"]; 
 

 
function formatFilters(parameters) { 
 

 
    var filters = { 
 
    numeric: [], 
 
    tags: [], 
 
    query: parameters.query || "" 
 
    }; 
 

 
    angular.forEach(parameters.ranges, function(value, key) { 
 
    filters.numeric.push(key + ">=" + value.from, key + "<=" + value.to); 
 
    }); 
 

 
    angular.forEach(filters.query.split(" "), function(value, key) { 
 
    if (tags.indexOf(value) > -1) { 
 
     filters.tags.push(value); 
 
     filters.query = filters.query.replace(value, "").trim(); 
 
    } 
 
    }); 
 

 
    return filters; 
 
} 
 

 
filters = formatFilters({ ranges: [], query: "premium iphone" }); 
 
console.log(filters); 
 

 
function search(parameters, clearHits) { 
 
    var index  = client.initIndex(parameters.order.id); 
 
    var builtFilters = formatFilters(parameters); 
 

 
    return index.search(
 
    builtFilters.query, 
 
    { 
 
     numericFilters: builtFilters.numeric, 
 
     tagFilters: builtFilters.tags 
 
    } 
 
); 
 
};
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

+0

我認爲這是最容易的方式 – redox

相關問題