我正在使用Shopify店面搜索来生成JSON:http://wiki.shopify.com/Storefront_search
我们的客户有一个非常大的目录,我们需要能够搜索产品标题和产品供应商字段,但排除产品主体字段。
以下是问题的一个示例:
假设我们有一个名为“Galaxy S4”和“Galaxy S3”的产品与供应商“Samsung”并且S4的正文开始“改进广受欢迎的Galaxy S3”我们将得到以下搜索结果:
myshopify.com/search?q=samsung galaxy s3& type = product& view = json
(在所有产品字段中搜索“samsung galaxy s3”中的所有单词)
由于短语“Galaxy S3”出现在S4正文中,它在搜索结果中列出 - 不理想。
myshopify.com/search?q=title:samsung galaxy s3 OR供应商:samsung galaxy s3& type = product& view = json
(在“samsung galaxy s3”中搜索标题字段或供应商字段中的所有单词 - 这意味着除非所有单词出现在任一字段中,否则不会返回任何结果。)
因此,我们希望的结果是,只要搜索词中的每个单词都出现在标题中,或者列出该项目的供应商。
我希望这是有道理的,任何建议都值得赞赏。
答案 0 :(得分:2)
这是我采取的方法。我正在使用Javascript来获取搜索查询并将其转换为标题OR供应商和标题或供应商字符串:
var words = search_query.split(" ");
var search_string = '';
var i;
for (i = 0; i < words.length; ++i) {
if(words[i].length>0){
if(i > 0){
search_string += ' AND ';
}
search_string += 'title:'+words[i]+' OR vendor:'+words[i];
}
}
使用上面的示例,它给出了以下字符串:
myshopify.com/search?q=title:samsung或供应商:samsung和标题:galaxy或供应商:galaxy AND title:s3 OR vendor:s3&amp; type = product&amp; view = json
返回所需的搜索结果。
注意: 在搜索词的每一侧添加星号也将返回部分词匹配。即:
search_string += 'title:*'+words[i]+'* OR vendor:*'+words[i]+'*';
将使“samsun”匹配“三星”