2014-09-03 105 views
0

要从搜索结果中排除一些文档,我可以使用not in或 - negative sign来通过查询指定这样的id。如何配置Solr从搜索结果中排除某些文档?

select/?q=*:*&fq=-id:86+-id:338 

这是确定的,如果有只需要排除一些IDS,但查询将是非常非常长,如果我有成千上万需要从搜索中排除的ID。我需要有条件地排除搜索结果中的文档列表。我怎样才能通过solr配置文件来创建排除列表?例如,如果usstate等于NY,CA,VA和以3结尾的邮政编码,则需要从搜索结果中排除文档。

+0

添加一个新的布尔型字段“排除”。使用true更新这些文档中的字段。 &fq = -exclude:true – everreadyeddy 2014-09-04 21:51:17

+0

是的,有这样的字段可以用来排除它们,但是要求声明不使用这个字段。有没有办法通过配置来做到这一点? – 2014-09-05 14:54:44

回答

0

您可以使用QueryElevationComponent添加要排除某个查询的文档列表。这将要求您执行与配置文件中提到的查询相匹配的搜索以使其工作。

如果您的意思是“我不希望任何带有美国纽约州,加利福尼亚州,弗吉尼亚州的邮政编码以3结尾的文档”为例,那么您最好直接使用该标准您的查询(使用-(usstate:(NY OR CA OR VA) AND zipcode:*3)的修改版本以获得您想要的行为)(有关更快的反向匹配,请参阅ReverseWildcardFilterFactory)。

+0

我需要排除文档列表而不考虑查询字符串,因此提升将无法正常工作?而不是把查询条件 - (usstate:(NY或CA OR VA)和zipcode:* 3)放在查询本身中,solr允许你把它放在一个配置文件中,所以这个条件将应用于所有的传入查询? – 2014-09-04 14:23:47

相关问题