是否从Solr中的所有搜索结果中排除某些文档?
我是Solr的新手,有一项任务是阻止所有搜索查询结果中的某些文档 我搜索并找到了一些可以阻止结果的方法是否从Solr中的所有搜索结果中排除某些文档?,solr,Solr,我是Solr的新手,有一项任务是阻止所有搜索查询结果中的某些文档 我搜索并找到了一些可以阻止结果的方法 提升.xml() 在查询中使用“excludeIds”参数(:&levatedids=doc3,doc4&excludeIds=doc6,doc8) 使用以下命令: 文件编号1,文件编号2 好吧,您可以随时向查询添加约束,以便不返回这些文档: q=abc&fq=id:[* TO *] -id:(doc_id_1 doc_id_2) 使用上面的fq,可以排除doc_id_1和_2。
文件编号1,文件编号2
好吧,您可以随时向查询添加约束,以便不返回这些文档:
q=abc&fq=id:[* TO *] -id:(doc_id_1 doc_id_2)
使用上面的fq,可以排除doc_id_1和_2。如果要排除的文档集将在稍后的某个时间在另一个查询中重复,请保持这样(fq将由solr缓存),如果它永远不会重复,请避免使用
q=abc&fq={!cache=false}id:[* TO *] -id:(doc_id_1 doc_id_2)
编辑:我知道ID会随着每个请求而改变。如果不是这样,那么您当然可以将fq放在处理程序定义中,或者像另一个答案所说的那样添加一个特定字段。好的,您可以始终向查询添加约束,以便不返回这些文档:
q=abc&fq=id:[* TO *] -id:(doc_id_1 doc_id_2)
使用上面的fq,可以排除doc_id_1和_2。如果要排除的文档集将在稍后的某个时间在另一个查询中重复,请保持这样(fq将由solr缓存),如果它永远不会重复,请避免使用
q=abc&fq={!cache=false}id:[* TO *] -id:(doc_id_1 doc_id_2)
编辑:我知道ID会随着每个请求而改变。如果不是这样,那么您当然可以将fq放在处理程序定义中,或者像另一个答案所说的那样添加一个特定字段。您的问题的另一个答案是添加一个新字段,并将“状态”(要显示或不应该显示)存储在那里,然后在Solr filter查询中使用它。 例如,字符串字段名为“remove”,对于不应显示在结果中的文档,添加“remove”字段值为“true”。 所以你可以像这样查询 “q=abc&fq=-remove:true” 注:
您的问题的另一个答案是添加一个新字段,并将“状态”(要显示或不应该显示)存储在该字段中,然后在Solr filter查询中使用该字段。 例如,字符串字段名为“remove”,对于不应显示在结果中的文档,添加“remove”字段值为“true”。 所以你可以像这样查询 “q=abc&fq=-remove:true” 注:
fq似乎是正确的答案。OP:您可以将fq参数直接放入搜索处理程序中,这样运行查询的客户端就不必知道它在那里,它将应用于所有客户端。但是如果我有(比如)50K个需要阻止的ID,这会影响响应时间吗?因为我们需要发送所有这些50k ID以及每个查询,所以似乎是正确的答案。OP:您可以将fq参数直接放入搜索处理程序中,这样运行查询的客户端就不必知道它在那里,它将应用于所有客户端。但是如果我有(比如)50K个需要阻止的ID,这会影响响应时间吗?因为我们需要发送所有的50k ID和每个查询,他说ID会动态变化,所以不会起作用?不是这样,就是我误解了这个问题。我以为身份证会随着时间的推移而改变request@Persimmonium每当“ID”发生更改时,文档相应的“删除”字段都需要更新为“真”。那么文档将不会自动显示在结果中。这是否意味着每当ID列表更改时,我都需要在Solr中重新索引整个数据?或者有没有办法更新Solr中文档的字段?@maddyman您只能更新需要更改的文档。在Solr中,可以选择只更改整个文档中的一个字段。请查看这个链接@Riya,然后他需要在运行查询之前更新文档……这不会很快。他说ID会动态变化,所以不会起作用?不是这样,就是我误解了这个问题。我以为身份证会随着时间的推移而改变request@Persimmonium每当“ID”发生更改时,文档相应的“删除”字段都需要更新为“真”。那么文档将不会自动显示在结果中。这是否意味着每当ID列表更改时,我都需要在Solr中重新索引整个数据?或者有没有办法更新Solr中文档的字段?@maddyman您只能更新需要更改的文档。在Solr中,可以选择只更改整个文档中的一个字段。请查看这个链接@Riya,然后他需要在运行查询之前更新文档……这不会更快