2

我正在使用 Shopify Storefront 搜索来生成 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”中的所有单词)

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

由于短语“Galaxy S3”出现在 S4 正文中,因此它列在搜索结果中 - 不理想。

myshopify.com/search?q=title:samsung galaxy s3 OR vendor:samsung galaxy s3&type=product&view=json
(搜索“samsung galaxy s3”中所有单词的标题字段或供应商字段 - 这意味着除非所有单词都出现在任一字段中均不返回任何结果。)

  • 没有结果

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

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

4

1 回答 1

2

这是我采取的方法。我正在使用 Javascript 来获取搜索查询并将其转换为标题 OR 供应商 AND 标题 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 OR vendor:samsung AND title:galaxy OR vendor:galaxy AND title:s3 OR vendor:s3&type=product&view=json

返回所需的搜索结果。

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

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

将使“samsun”匹配“samsung”

于 2013-10-03T23:58:30.260 回答