自动完成算法中的 facetFilters
facetFilters in autocomplete algolia
我在为 algolia-autocomplete 设置 facetFilters 时遇到困难。如果我想根据一些组织进行过滤,例如:
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, facetFilters:[ ['organization_id:1', 'organization_id:10'], ['listing_status:Published' ]] })
它工作得很好。
现在我想从文本框中选取值,但它不起作用。如果文本框的值为
<input type="hidden" id="marketplace_organization_ids" value="'organization_id:1', 'organization_id:10'">
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, facetFilters:[ [$('#marketplace_organization_ids').val()], ['listing_status:Published' ]] }),
也尝试使用数组但没有结果:
var name = ["'organization_id:1'","'organization_id:10'"];
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, facetFilters:[ [name.join(',')], ['listing_status:Published' ]] })
我已经在一个组织中使用了上面的方法,并且效果很好:
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, facetFilters:[ ['organization_id:'+$('#user_organization_id').val() , 'distributors.id:'+$('#user_organization_id').val()] ] }),
感谢任何帮助。
您似乎在 facetFilters 中传递了不正确的值,因为没有解析从您的输入中提取的值。
source: $.fn.autocomplete.sources.hits(index, {
hitsPerPage: 5,
facetFilters:[
[$('#marketplace_organization_ids').val()],
['listing_status:Published']
]
})
评估为
source: $.fn.autocomplete.sources.hits(index, {
hitsPerPage: 5,
facetFilters:[
["'organization_id:1', 'organization_id:10'"],
['listing_status:Published']
]
})
根据 Algolia's documentation about facetFilters,您应该 提供字符串数组而不是数组的字符串表示形式,例如
source: $.fn.autocomplete.sources.hits(index, {
hitsPerPage: 5,
facetFilters:[
['organization_id:1', 'organization_id:10'], // no more double-quotes
['listing_status:Published']
]
})
您可以在将值传递给数组之前拆分您的值:
const organizationFilter = $('#marketplace_organization_ids').val()
.split(',') // split string into array
.map(filter => filter.trim()) // remove whitespaces
console.log(organizationFilter); // ['organization_id:1', 'organization_id:10']
我在为 algolia-autocomplete 设置 facetFilters 时遇到困难。如果我想根据一些组织进行过滤,例如:
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, facetFilters:[ ['organization_id:1', 'organization_id:10'], ['listing_status:Published' ]] })
它工作得很好。
现在我想从文本框中选取值,但它不起作用。如果文本框的值为
<input type="hidden" id="marketplace_organization_ids" value="'organization_id:1', 'organization_id:10'">
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, facetFilters:[ [$('#marketplace_organization_ids').val()], ['listing_status:Published' ]] }),
也尝试使用数组但没有结果:
var name = ["'organization_id:1'","'organization_id:10'"];
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, facetFilters:[ [name.join(',')], ['listing_status:Published' ]] })
我已经在一个组织中使用了上面的方法,并且效果很好:
source: $.fn.autocomplete.sources.hits(index, { hitsPerPage: 5, facetFilters:[ ['organization_id:'+$('#user_organization_id').val() , 'distributors.id:'+$('#user_organization_id').val()] ] }),
感谢任何帮助。
您似乎在 facetFilters 中传递了不正确的值,因为没有解析从您的输入中提取的值。
source: $.fn.autocomplete.sources.hits(index, {
hitsPerPage: 5,
facetFilters:[
[$('#marketplace_organization_ids').val()],
['listing_status:Published']
]
})
评估为
source: $.fn.autocomplete.sources.hits(index, {
hitsPerPage: 5,
facetFilters:[
["'organization_id:1', 'organization_id:10'"],
['listing_status:Published']
]
})
根据 Algolia's documentation about facetFilters,您应该 提供字符串数组而不是数组的字符串表示形式,例如
source: $.fn.autocomplete.sources.hits(index, {
hitsPerPage: 5,
facetFilters:[
['organization_id:1', 'organization_id:10'], // no more double-quotes
['listing_status:Published']
]
})
您可以在将值传递给数组之前拆分您的值:
const organizationFilter = $('#marketplace_organization_ids').val()
.split(',') // split string into array
.map(filter => filter.trim()) // remove whitespaces
console.log(organizationFilter); // ['organization_id:1', 'organization_id:10']