我尝试做的是创建一个输入字段,当您键入时,它会根据输入的用户名和/或名称搜索关注您的用户。
我尝试使用SOLR,因为它速度快,而且我无法使用MySQL的LIKE功能,但我遇到了数值问题我可以传递给SOLR查询(例如user_id:(1,2,3,5,etc)
)。 SOLR显然对您可以通过的值的数量有限制,我需要这个解决方案不受限制。
截至目前,我的SOLR索引包括username
,name
和user_id
。然后我将先前收集的follower_ids
列表传递给查询。
关于如何使这项工作的任何想法?
更新:正如在增加OR条款的评论中所建议的......这确实不是一个好的解决方案,因为它会导致未来的问题。
答案 0 :(得分:0)
我在solr中遇到过多布尔子句异常的问题。 我有了更多的acl ID(访问控制列表),因此查询得太长了。
我采取的克服这个问题的步骤是
增加maxBooleanCLauses
在过滤器查询中使用& fq = acl:(id1或id2 ...)
如果acl的计数大于8000,那么我将发送多个具有以下逻辑的请求
StringBuilder queryString = new StringBuilder(5000); if(acls.length> 8000){ 整数aclCounter = 0; long requestCnt = Math.round(Math.ceil((acls.length / 8000.0))); for(int i = 0; i< requestCnt; i ++) { queryString = new StringBuilder(acls.length * 10); queryString.append("&安培; FQ = ACL:(&#34); for(int j = 0; j< 8000&& aclCounter< acls.length; aclCounter ++,j ++) { queryString.append(ACL的[aclCounter])追加(APPEND_OR)。 } queryString.replace(queryString.length() - 4,queryString.length(),")"); } }
我希望这可以解决您的问题。