我通过solrcrudrepository查询solr。我在存储库中定义了一个名为:findByUsernameContainsOrNameContains(String username,String name)的方法。该方法应该将搜索项与用户名和名称进行比较,如果匹配,则返回文档(根据文档)。这不是它的行为方式,而是匹配术语,它返回存储在solr中的整个文档列表。即使搜索词是空字符串。问题是什么?
答案 0 :(得分:0)
repo.findByUsernameContainsOrNameContains("someUsername", "someName");
将生成q=username:*someUsername* OR name:*someName*
使用空字符串repo.findByUsernameContainsOrNameContains("", "someName");
调用
这将转换为q=username:** OR name:*someName*
因此username:**
将匹配所有拥有用户名的文档。