package org.apache.solr.handler.batch;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import org.adsabs.solr.AdsConfig.F;
import org.apache.solr.request.SolrQueryRequest;
public class TestBatchProviderFindWordGroups extends BatchProviderTest {
public void test() throws Exception {
String field = "text_sw";
String field2 = "text";
// now index some data
assertU(adoc(F.ID, "1", F.BIBCODE, "xxxxxxxxxxxx1", field, "green wall for the blue sky", field2, "green wall for the blue sky"));
assertU(adoc(F.ID, "2", F.BIBCODE, "xxxxxxxxxxxx2", field, "of trees angels edens", field2, "of trees angels edens"));
assertU(adoc(F.ID, "3", F.BIBCODE, "xxxxxxxxxxxx3", field, "blue sky no blues dye", field2, "blue sky no blues dye"));
assertU(adoc(F.ID, "4", F.BIBCODE, "xxxxxxxxxxxx4", field, "of high seas and low", field2, "of high seas and low"));
assertU(adoc(F.ID, "5", F.BIBCODE, "xxxxxxxxxxxx5", field, "flights of the heroes", field2, "flights of the heroes"));
assertU(adoc(F.ID, "6", F.BIBCODE, "xxxxxxxxxxxx6", field, "fo the race past race for peace", field2, "fo the race past race for peace"));
assertU(commit());
// this creates another segment
assertU(adoc(F.ID, "7", F.BIBCODE, "xxxxxxxxxxxx7", field, "no fight, no plight", field2, "no fight, no plight"));
assertU(adoc(F.ID, "8", F.BIBCODE, "xxxxxxxxxxxx8", field, "no peace, think twice", field2, "no peace, think twice"));
assertU(commit());
BatchHandlerRequestQueue queue = new BatchHandlerRequestQueue();
String tmpDir = new File("./temp").getAbsolutePath();
writeData(tmpDir + "/00001.input", "blue\nseas\nrace");
BatchProviderFindWordGroups provider = new BatchProviderFindWordGroups();
SolrQueryRequest req = req(
"jobid", "00001",
"#workdir", tmpDir,
"fields", field,
"maxlen", "2",
"lowerLimit", "0.0"
);
provider.run(req, queue);
req.close();
checkFile(tmpDir + "/00001",
"blue|sky\t2",
"high|seas\t1",
"fo|race\t1",
"past|race\t1",
"race|past\t1",
"race|peace\t1",
"seas|low\t1",
"wall|blue\t1"
);
req = req(
"jobid", "00001",
"#workdir", tmpDir,
"fields", field,
"maxlen", "2",
"lowerLimit", "0.5"
);
provider.run(req, queue);
req.close();
checkFile(tmpDir + "/00001",
"blue|sky\t2",
"high|seas\t1",
"fo|race\t1",
"past|race\t1",
"!race|past\t1",
"!race|peace\t1",
"!seas|low\t1",
"!wall|blue\t1"
);
req = req(
"jobid", "00001",
"#workdir", tmpDir,
"fields", field,
"maxlen", "2",
"upperLimit", "0.9",
"lowerLimit", "0.4"
);
provider.run(req, queue);
req.close();
checkFile(tmpDir + "/00001",
"!blue|sky\t2",
"high|seas\t1",
"fo|race\t1",
"past|race\t1",
"race|past\t1",
"!race|peace\t1",
"!seas|low\t1",
"!wall|blue\t1"
);
// use the limit on the number of collected results
req = req(
"jobid", "00001",
"#workdir", tmpDir,
"fields", field,
"maxlen", "2",
"lowerLimit", "0.0",
"stopAfterReaching", "2"
);
provider.run(req, queue);
req.close();
checkFile(tmpDir + "/00001",
"blue|sky\t2",
"sky|blues\t1",
"wall|blue\t1",
"!fo|race\t1",
"!past|race\t1",
"!race|past\t1",
"!race|peace\t1",
"!seas|low\t1"
);
req = req(
"jobid", "00001",
"#workdir", tmpDir,
"fields", field,
"maxlen", "4",
"lowerLimit", "0.0"
);
provider.run(req, queue);
req.close();
checkFile(tmpDir + "/00001",
"blue|sky|blues|dye\t1",
"fo|race|past|race\t1",
"green|wall|blue|sky\t1",
"race|past|race|peace\t1"
);
}
private void writeData(String targetFile, String targetData) throws IOException {
File fo = new File(targetFile);
FileWriter fw = new FileWriter(fo);
fw.write(targetData);
fw.close();
}
}