使用 SOLR & PHP 通过用户名和姓名搜索查找用户的关注者

Find user's followers by username and name search with SOLR & PHP

我想做的是创建一个输入字段,在您输入时,它会根据输入的用户名 and/or 名称搜索关注您的用户。

我正在尝试使用 SOLR,因为它速度很快,而且我无法使用 MySQL 的 LIKE 功能,但我 运行 遇到了关于我的值数量的问题可以传递给 SOLR 查询(例如 user_id:(1,2,3,5,etc))。 SOLR 显然对您可以传递的值的数量有限制,我需要这个解决方案不受限制。

截至目前,我的 SOLR 索引包括 usernamenameuser_id。然后我将以前收集的列表 follower_ids 传递给查询。

关于如何使这项工作有任何想法吗?

更新:正如评论中关于增加 OR 子句数量的建议...这确实不是一个好的解决方案,因为它会导致未来出现问题。

我在 solr 中遇到了太多布尔子句异常的问题。 我有更多数字的 acl id(访问控制列表),所以查询太长了。

我为解决这个问题所采取的步骤是

  1. 增加maxBooleanCLauses

  2. 在过滤器查询中使用了 &fq=acl:(id1 or id2...)

  3. 如果 acl 的计数大于 8000,那么我将使用以下逻辑发送多个请求

StringBuilder queryString = new StringBuilder(5000); 如果(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:("); for (int j = 0; j < 8000 && aclCounter < acls.length; aclCounter++, j++) { queryString.append(acls[aclCounter]).append(APPEND_OR); } queryString.replace(queryString.length() - 4, queryString.length(), ")"); } }

我希望这能为解决您的问题提供思路。