我有一个包含菜谱的Solr安装。
每个食谱都有多种成分,我目前正在建立一个食谱搜索,你可以输入"包括/排除",然后我有一个自制的重量系统,在此之后。
查询构建是关闭的,因此需要改进。
// Works perfect - 109 results
ingredients:chicken OR tomatoes OR bacon
// Down to 7 results - Definitely wrong
ingredients:chicken OR tomatoes OR bacon AND -ingredients:garlic
我已经尝试过以任何方式构建这个查询,但无法找出一个可接受的"模糊过滤器"
我会这样做:
ingredients:((chicken OR tomatoes OR bacon) AND NOT garlic)
这个适合我。
您可以像这样添加所有不包含项:
ingredients:((chicken OR tomatoes OR bacon) AND NOT (garlic OR peanuts OR spinach))
尝试ingredients:chicken OR tomatoes OR bacon AND (-ingredients:garlic)
我假设你正在使用Solr 3.1和edismax
。
我发现在括号中包含否定查询是有效的。我没有时间更详细地研究这一点,并弄清楚这是预期的行为还是一个bug。如果您对此进行了更详细的调查并确认这是一个错误,请在这里打开Jira问题。
请注意,我上面建议的查询将根据您的配置在默认字段中搜索西红柿/培根。如果您只想在ingredients
中搜索它们,那么使用ingredients:(chicken OR tomatoes OR bacon) AND (-ingredients:garlic)