//package org.fastcatsearch.ir.index; // //import java.util.HashSet; //import java.util.Map; //import java.util.Set; // //import org.fastcatsearch.ir.document.Document; //import org.fastcatsearch.ir.field.Field; //import org.slf4j.Logger; //import org.slf4j.LoggerFactory; // ///** // * shard 설정의 filter에 맞는 문서인지를 판가름한다. // * 향후 복잡한 filer식도 지원하도록 한다. >= 와 boolean연산. 그리고 다양한 필드셋팅에 대해서.. // * */ //public class ShardFilter { // private static Logger logger = LoggerFactory.getLogger(ShardFilter.class); // // public static String ROOT_FILTER = "ALL"; // private Integer index; // protected Set<String> dataSet; // private boolean hasAll; // // public ShardFilter(Map<String, Integer> fieldSequenceMap, String filter) { // filter = filter.trim(); // // if(filter.equals(ROOT_FILTER)){ // hasAll = true; // return; // } // // dataSet = new HashSet<String>(); // // try{ // int pos = filter.indexOf('='); // // String fieldId = filter.substring(0, pos).trim().toUpperCase(); // String value = filter.substring(pos + 1).trim(); // String[] values = null; // if(value.startsWith("(")){ // values = value.substring(1, value.length() - 1).split(","); // } // // // if(values != null){ // //multi value // for (int i = 0; i < values.length; i++) { // dataSet.add(stripString(values[i].trim())); // } // }else{ // //single value // dataSet.add(stripString(value)); // } // // index = fieldSequenceMap.get(fieldId); // // logger.debug("shard filter id={} index={} dataSet={}", fieldId, index, dataSet); // }catch(Exception e){ // logger.error("Filter condition has error.filter >> \"{}\"", filter); // } // } // // private String stripString(String str){ // if(str.startsWith("'") && str.endsWith("'")){ // return str.substring(1, str.length() - 1); // } // return str; // } // // public boolean accept(Document document) { // if(hasAll){ // return true; // } // if(index == null){ // return false; // } // // Field field = document.get(index); // if(field == null){ // return false; // } // // String fieldValue = field.getDataString(); // return dataSet.contains(fieldValue); // } //}