package org.fastcatsearch.ir.search;
import java.util.ArrayList;
import java.util.List;
public class ClauseExplanation {
private String id; //필드아이디.또는 Operator
private String term; //검색어 full term
private int rows;
private long time;
private List<ClauseExplanation> subExplanations;
public ClauseExplanation(){
}
public ClauseExplanation(String id, String term){
this.id = id;
this.term = term;
}
public ClauseExplanation createSubExplanation(){
if(subExplanations == null){
subExplanations = new ArrayList<ClauseExplanation>(2);
}
ClauseExplanation sub = new ClauseExplanation();
subExplanations.add(sub);
return sub;
}
public List<ClauseExplanation> getSubExplanations() {
return subExplanations;
}
public String toString(){
return getResultInfo(0);
}
public String getResultInfo(int depth){
StringBuffer sb = new StringBuffer();
String indent = "";
for (int i = 0; i < depth; i++) {
indent += " ";
}
sb.append("<").append(id).append(">").append(term != null ? term : "").append(" rows[").append(rows).append("] time[").append(time).append("]");
if (subExplanations != null) {
for(ClauseExplanation exp : subExplanations){
sb.append("\n").append(indent).append(" |--");
sb.append(exp.getResultInfo(depth + 1));
}
}
return sb.toString();
}
// public String getRowInfo(int depth){
// StringBuffer sb = new StringBuffer();
// String indent = "";
// for (int i = 0; i < depth; i++) {
// indent += " ";
// }
// sb.append("[").append(id).append("]").append(term != null ? term : "").append(" score[").append(score).append("] weight[").append(weight).append("]");
// if (subExplanations != null) {
// for(ClauseExplanation exp : subExplanations){
// sb.append("\n").append(indent).append(" |--");
// sb.append(exp.getRowInfo(depth + 1));
// }
// }
// return sb.toString();
// }
public void addTime(long t){
time += t;
}
public void addRow(){
rows += 1;
}
// public void set(int score, int tf){
// this.score = score;
// this.tf = tf;
// }
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTerm() {
return term;
}
public void setTerm(String term) {
this.term = term;
}
// public float getWeight() {
// return weight;
// }
// public void setTerm(float weight) {
// this.weight = weight;
// }
// public int getScore() {
// return score;
// }
// public void setScore(int score) {
// this.score = score;
// }
// public int getTf() {
// return tf;
// }
// public void setTf(int tf) {
// this.tf = tf;
// }
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public long getTime() {
return time;
}
public void setTime(long time) {
this.time = time;
}
}