package com.senseidb.clue.commands;
import java.io.PrintStream;
import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.MatchAllDocsQuery;
import org.apache.lucene.search.Query;
import com.senseidb.clue.ClueContext;
public class DeleteCommand extends ClueCommand {
public DeleteCommand(ClueContext ctx) {
super(ctx);
}
@Override
public String getName() {
return "delete";
}
@Override
public String help() {
return "deletes a list of documents from searching via a query, input: query";
}
@Override
public void execute(String[] args, PrintStream out) throws Exception {
QueryParser qparser = new QueryParser("contents", new StandardAnalyzer());
Query q = null;
if (args.length == 0){
q = new MatchAllDocsQuery();
}
else{
StringBuilder buf = new StringBuilder();
for (String s : args){
buf.append(s).append(" ");
}
String qstring = buf.toString();
try{
q = qparser.parse(qstring);
}
catch(Exception e){
out.println("cannot parse query: "+e.getMessage());
return;
}
}
if (q != null){
IndexWriter writer = ctx.getIndexWriter();
if (writer != null) {
writer.deleteDocuments(q);
writer.commit();
ctx.refreshReader();
}
else {
out.println("unable to open writer, index is in readonly mode");
}
}
}
}