1
我正在致力於電子商務,其中產品主要分爲兩類:非高級和高級。我在索引過程中使用了一個布爾值來確定一個產品是否是溢價。在Algolia中將字符串與布爾值進行匹配搜索
我希望每當用戶搜索「高級」時,只顯示高級產品。
我怎麼能做到這一點?
我正在致力於電子商務,其中產品主要分爲兩類:非高級和高級。我在索引過程中使用了一個布爾值來確定一個產品是否是溢價。在Algolia中將字符串與布爾值進行匹配搜索
我希望每當用戶搜索「高級」時,只顯示高級產品。
我怎麼能做到這一點?
我發現了一個解決方法來做到這一點,但我必須說這不是我最喜歡的。
我基本上在單個數組中存儲每個標籤索引的列表,並根據查詢中寫入的內容構建過濾器。
// [...] 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>
我認爲這是最容易的方式 – redox