elasticsearch - 在SOLR或Elasticsearch中排除记录的好方法

标签 elasticsearch solr cassandra sphinx

对于婚介门户网站,我们有一个要求,即如果客户查看了新娘或新郎的完整文件详细信息,则我们必须从进一步的搜索结果中排除该文件。当前,连同其他详细信息,我们正在将查看的个人资料ID存储在该新娘或新郎详细信息的字段(逗号分隔)中。

例如,如果A查看了B,那么在B的记录saw_me下的字段中,我们将添加A(逗号分隔)。

在搜索时,假设当前搜索的成员(member)ID为123456,那么我们将触发一个查询,例如

从配置文件详细信息中选择*,其中(OTHER CON)和123456不在saw_me中;

这里的问题是saw_me字段值正以任何形式增长,是否有更好的方法来处理此要求?请指导。

最佳答案

如果使用的是Solr:

  • 首先,不要在q参数中添加'AND NOT ...'子句以及主查询,而是将它们添加到fq中。这有很多好处(fq将被缓存)
  • 在获得可能为1000的值列表之前,此方法很简单,应该可以正常工作
  • 到达列表很大的位置后,也许是时候该迁移到成本较高的post filter了(因此最后查找它)。这将查找要从外部源(redis,db ...)中删除的文档。
  • 关于elasticsearch - 在SOLR或Elasticsearch中排除记录的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43673321/

    相关文章:

    Java API : downloading and calculating tf-idf for a given web page

    Cassandra 服务器抛出 java.lang.AssertionError : DecoratedKey(. ..) != DecoratedKey

    cassandra - 高 native 传输请求始终被阻止

    java - cassandra 中的慢速选择查询

    curl - Elasticsearch/Curl不会读取Bulk API的换行符

    c# - 带有期限和日期范围的汇总

    java - 使用 solr facet stats 时如何分页?

    lucene - 在没有针对内容所用语言的分析器的情况下实现 Lucene?

    elasticsearch - 索引中多种类型的Elasticsearch分页

    sorting - Elasticsearch:如何搜索、排序、限制结果然后再次排序?