我遇到了无法解决的问题。部分是因为我无法用正确的术语来解释它。我很陌生,对这个笨拙的问题感到抱歉。
您可以在下面看到我的目标概述。
我正在使用Magento CE 1.7.0.2& Solr 4.6.0。
在这里你可以看到我的目标..
我搜索带有adidas black
在这里,我可以看到我的结果
http://127.0.0.1:8080/solr/collection1/select?q=adidas+black
我有大约600种产品,但我发现它搜索 adidas 和黑色和 adidas black 的产品。
它给出了所有这些结果,但我只想要 adidas black 。
我如何直接从Solr获得这些产品。
有什么想法吗?
答案 0 :(得分:2)
您的选项很少,但在您的情况下,简短的答案是在查询字词周围加上双引号,例如:
http://127.0.0.1:8080/solr/collection1/select?q="adidas+black"
除了双引号之外,您还可以指定另一个参数 - qs(查询转换),它指示术语可以显示的距离,并且仍然被视为匹配。如果你说qs = 0,意味着他们必须完全相邻。如果你说qs = 1,那就意味着,一个术语可能在中间,所以'adidas shoes black'仍然匹配
所以,你可以这样查询:
http://127.0.0.1:8080/solr/collection1/select?q="adidas+black"&qs=2
另一个我最喜欢的选择是省略双引号,并添加mm(最小匹配条件)。如果需要,您可以将其设置为100%,这意味着所有条款都是必需的。或者您可以将其设置为合理的百分比,这样即使所有术语都没有完全匹配,用户也会得到一些结果。
您还可以添加pf(短语字段)参数以按短语提升。因此,黑色,阿迪达斯和阿迪达斯黑色将匹配(如果你没有mm = 100%),但'adidas black'将是第一个结果,因为它将获得最高分。
所以,你可以这样查询:
http://127.0.0.1:8080/solr/collection1/select?q=adidas+black&mm=65%&pf=YourFieldName
答案 1 :(得分:0)
就我而言,它的工作正常......
http://127.0.0.1:8080/solr/collection1/select?q="adidas+black"&indent=true&defType=dismax&pf=YourFieldName&qs=2