我已经让 SOLR 愉快地运行索引包含美国各州的部门名称列表。然而,它运行良好,搜索“Virginia”会出现包含“West Virginia”的结果,虽然对某些业务需求肯定有帮助,但我们的需求不存在。
有没有一种特殊的说法,对 X 的查询不能包含 Y(我不介意为“弗吉尼亚”的情况制作一个特殊的查询),或者我只能通过迭代结果来进行这个后查询和排除“西弗吉尼亚”的结果?
我已经让 SOLR 愉快地运行索引包含美国各州的部门名称列表。然而,它运行良好,搜索“Virginia”会出现包含“West Virginia”的结果,虽然对某些业务需求肯定有帮助,但我们的需求不存在。
有没有一种特殊的说法,对 X 的查询不能包含 Y(我不介意为“弗吉尼亚”的情况制作一个特殊的查询),或者我只能通过迭代结果来进行这个后查询和排除“西弗吉尼亚”的结果?
将减号(连字符)与要排除的短语/术语结合使用。如果您使用 dismax 查询解析器,那么您甚至不需要指定字段名称。
例子:
使用 dismax:
q=virginia -"west virginia"
使用标准查询解析器:
q=field_name:(virginia -"west virginia")
有关更多示例,请参阅Solr 查询语法wiki 页面及其更多链接。
您可以创建一个字符串类型的状态字段,然后只搜索状态:“virginia”(在索引/搜索之前小写字符串)