如何使用更新请求处理器取消索引文档的索引

时间:2014-11-24 15:24:37

标签: java plugins solr indexing

你好我面临的情况是我不应该在不需要的内容中找出文件的索引。在我的情况下,我想使用一个包含黑名单的文件。所以当文档被提交给索尔进程的索尔时。在将该文档存储到索引之前, Solr 应验证文档是否包含不需要的内容(黑名单关键字)。我在 SOLR 上找到的索引编制过程之前没有实施黑名单。

所以我想开发一个扩展UpdateRequestProcessor的java类。没有文档可以评论UpdateRequestProcessor方法的用途。

我认为我应该在 processAdd(AddUpdateCommand cmd)方法中实施de blacklisting逻辑调查,然后我应该包含哪些代码来取消与blacklist关键字匹配的文档?

public class BlackListUpdateRequestProcessor extends UpdateRequestProcessor{

public BlackListUpdateRequestProcessor(UpdateRequestProcessor next) {
    super(next);
}

@Override
public void finish() throws IOException {
    // TODO Auto-generated method stub
    super.finish();
}

@Override
public void processAdd(AddUpdateCommand cmd) throws IOException {
    // blacklist investigation logic
    // cancel indexing code here. how to do that?
    super.processAdd(cmd);
}

@Override
public void processCommit(CommitUpdateCommand cmd) throws IOException {
    // TODO Auto-generated method stub
    super.processCommit(cmd);
}

@Override
public void processDelete(DeleteUpdateCommand cmd) throws IOException {
    // TODO Auto-generated method stub
    super.processDelete(cmd);
}

@Override
public void processMergeIndexes(MergeIndexesCommand cmd) throws IOException {
    // TODO Auto-generated method stub
    super.processMergeIndexes(cmd);
}

@Override
public void processRollback(RollbackUpdateCommand cmd) throws IOException {
    // TODO Auto-generated method stub
    super.processRollback(cmd);
}

}

谢谢!

1 个答案:

答案 0 :(得分:1)

如果黑名单逻辑返回true,请不要调用super.processAdd方法

@Override
public void processAdd(AddUpdateCommand cmd) throws IOException {
    if(!blacklistService.isBlackListed(cmd.getSolrInputDocument())){
       super.processAdd(cmd);
    }
}