/**
*
*/
package proj.zoie.test.data;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field.Store;
import org.apache.lucene.document.StringField;
import org.apache.lucene.document.TextField;
import proj.zoie.api.indexing.AbstractZoieIndexable;
import proj.zoie.api.indexing.ZoieIndexable;
import proj.zoie.api.indexing.ZoieIndexableInterpreter;
/**
* @author "Xiaoyang Gu<xgu@linkedin.com>"
*
*/
public class InRangeDataInterpreterForTests implements ZoieIndexableInterpreter<String> {
long _delay;
final Analyzer _analyzer;
public InRangeDataInterpreterForTests() {
this(0, null);
}
public InRangeDataInterpreterForTests(long delay) {
this(delay, null);
}
public InRangeDataInterpreterForTests(long delay, Analyzer analyzer) {
_delay = delay;
_analyzer = analyzer;
}
public ZoieIndexable interpret(final String src) {
String[] parts = src.split(" ");
final long id = Long.parseLong(parts[parts.length - 1]);
return new AbstractZoieIndexable() {
public Document buildDocument() {
Document doc = new Document();
doc.add(new TextField("contents", src, Store.NO));
doc.add(new StringField("id", String.valueOf(id), Store.YES));
try {
Thread.sleep(_delay); // slow down indexing process
} catch (InterruptedException e) {
}
return doc;
}
@Override
public IndexingReq[] buildIndexingReqs() {
return new IndexingReq[] { new IndexingReq(buildDocument(), getAnalyzer()) };
}
public Analyzer getAnalyzer() {
return id % 2 == 0 ? null : _analyzer;
}
@Override
public long getUID() {
return id;
}
@Override
public boolean isDeleted() {
return false;
}
@Override
public boolean isSkip() {
return false;
}
};
}
@Override
public ZoieIndexable convertAndInterpret(String src) {
return interpret(src);
}
}