2013-10-03 23 views
2

我使用Shopify店面搜索生成JSON如何搜索Shopify产品:http://wiki.shopify.com/Storefront_search使用标题和供应商

我们的客户有一个非常大的目录,我们需要能够在产品名称和产品供应商搜索但不包括产品本体字段。

这是问题的一个例子:

说我们有一个产品叫“银河S4”和“银河S3”与供应商的“三星”和正文的S4开始“关于推进广受欢迎银河S3" 我们会得到下面的搜索结果:

myshopify.com/search?q=samsung银河S3 &类型=产品&视图= JSON
(搜索所有的产品领域中的所有单词“三星galaxy s3“)

  • “银河S3”
  • “银河S4”

正如那句“银河S3”出现在它在搜索结果中列出的S4正文-not理想。

myshopify.com/search?q=title:samsung星系S3或供应商:三星Galaxy S3 &类型=产品&视图= JSON
(搜索标题字段或供应商领域中的所有单词“三星Galaxy S3" - 这意味着,除非所有的词出现在任何领域没有返回结果)

  • 没有结果

所以我们希望的结果是,只要每个。搜索词中的词出现在标题或项目列出的供应商中。

我希望这是有道理的,任何建议表示赞赏。

回答

2

这是我采取的方法。我使用Javascript采取搜索查询,并把它变成一个标题或供应商和标题或供应商字符串:

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:S3或供应商:S3 &类型=产品&视图= JSON

它返回所期望的搜索结果。

注意: 在搜索词的每一边添加一个星号也会返回部分词匹配。即:

search_string += 'title:*'+words[i]+'* OR vendor:*'+words[i]+'*'; 

将使“萨姆松”匹配“三星”

+0

如果你想知道什么看法= JSON时用Shopify,这可能清楚些。 基本上,view = thing使Shopify加载一个不同的模板液体文件。所以,如果你把view = json,你需要做一个search.json.liquid文件,并让它输出JSON如'{%layout none%} {{search.results | json}}' 您也可以使用它从查询参数中加载备用模板 – Will