你好我面临的情况是我不应该在不需要的内容中找出文件的索引。在我的情况下,我想使用一个包含黑名单的文件。所以当文档被提交给索尔进程的索尔时。在将该文档存储到索引之前, 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);
}
}
谢谢!
答案 0 :(得分:1)
如果黑名单逻辑返回true,请不要调用super.processAdd
方法
@Override
public void processAdd(AddUpdateCommand cmd) throws IOException {
if(!blacklistService.isBlackListed(cmd.getSolrInputDocument())){
super.processAdd(cmd);
}
}