package experiments.collective.entdoccentric;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.apache.lucene.search.BooleanClause.Occur;
import experiments.collective.entdoccentric.StandardQueryDataObject.EntityObject;
import experiments.collective.entdoccentric.query.QuerySettings;
public class StandardInitialize {
public StandardInitialize() {
}
public Query createQuery(EntityObject object,
QuerySettings settings) {
Query query = null;
if (settings.isDocumentcentric()) {
BooleanQuery bq = new BooleanQuery();
if (settings.isDescriptionFuzzy()) {
bq.add(new FuzzyQuery(new Term("titleandabs", object
.getText())), Occur.MUST);
if (settings.isUseDescription()) {
String[] words = object.getContext().split(" ");
for (int i = 0; i < words.length; i++) {
bq.add(new FuzzyQuery(new Term("titleandabs", words[i])),
Occur.SHOULD);
}
}
} else {
bq.add(new TermQuery(new Term("titleandabs", object
.getText())), Occur.MUST);
if (settings.isUseDescription()) {
String[] words = object.getContext().split(" ");
for (int i = 0; i < words.length; i++) {
bq.add(new TermQuery(new Term("titleandabs", words[i])),
Occur.SHOULD);
}
}
}
query = bq;
} else if (!settings.isDocumentcentric()) {
//StandardQuery Achtung nicht löschen!
BooleanQuery bq = new BooleanQuery();
if (settings.isDescriptionFuzzy()) {
bq.add(new TermQuery(new Term("title", object.getText())),
Occur.SHOULD);
if (settings.isUseDescription()) {
String[] words = object.getContext().split(" ");
for (int i = 0; i < words.length; i++) {
bq.add(new FuzzyQuery(new Term("description", words[i])),
Occur.SHOULD);
}
}
} else {
bq.add(new FuzzyQuery(new Term("title", object.getText())),
Occur.SHOULD);
if (settings.isUseDescription()) {
String[] words = object.getContext().split(" ");
for (int i = 0; i < words.length; i++) {
bq.add(new TermQuery(new Term("description", words[i])),
Occur.SHOULD);
System.out.println("description");
}
}
}
// SensePriorQuery q = new SensePriorQuery(object.getKeyword());
query = bq;
}
return query;
}
}