use of org.apache.solr.client.solrj.impl.XMLResponseParser in project lucene-solr by apache.
the class QueryResponseTest method testIntervalFacetsResponse.
public void testIntervalFacetsResponse() throws Exception {
XMLResponseParser parser = new XMLResponseParser();
try (SolrResourceLoader loader = new SolrResourceLoader()) {
InputStream is = loader.openResource("solrj/sampleIntervalFacetsResponse.xml");
assertNotNull(is);
Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
NamedList<Object> response = parser.processResponse(in);
in.close();
QueryResponse qr = new QueryResponse(response, null);
assertNotNull(qr);
assertNotNull(qr.getIntervalFacets());
assertEquals(2, qr.getIntervalFacets().size());
IntervalFacet facet = qr.getIntervalFacets().get(0);
assertEquals("price", facet.getField());
assertEquals(3, facet.getIntervals().size());
assertEquals("[0,10]", facet.getIntervals().get(0).getKey());
assertEquals("(10,100]", facet.getIntervals().get(1).getKey());
assertEquals("(100,*]", facet.getIntervals().get(2).getKey());
assertEquals(3, facet.getIntervals().get(0).getCount());
assertEquals(4, facet.getIntervals().get(1).getCount());
assertEquals(9, facet.getIntervals().get(2).getCount());
facet = qr.getIntervalFacets().get(1);
assertEquals("popularity", facet.getField());
assertEquals(3, facet.getIntervals().size());
assertEquals("bad", facet.getIntervals().get(0).getKey());
assertEquals("average", facet.getIntervals().get(1).getKey());
assertEquals("good", facet.getIntervals().get(2).getKey());
assertEquals(3, facet.getIntervals().get(0).getCount());
assertEquals(10, facet.getIntervals().get(1).getCount());
assertEquals(2, facet.getIntervals().get(2).getCount());
}
}
use of org.apache.solr.client.solrj.impl.XMLResponseParser in project lucene-solr by apache.
the class QueryResponseTest method testGroupResponse.
@Test
public void testGroupResponse() throws Exception {
XMLResponseParser parser = new XMLResponseParser();
InputStream is = new SolrResourceLoader().openResource("solrj/sampleGroupResponse.xml");
assertNotNull(is);
Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
NamedList<Object> response = parser.processResponse(in);
in.close();
QueryResponse qr = new QueryResponse(response, null);
assertNotNull(qr);
GroupResponse groupResponse = qr.getGroupResponse();
assertNotNull(groupResponse);
List<GroupCommand> commands = groupResponse.getValues();
assertNotNull(commands);
assertEquals(3, commands.size());
GroupCommand fieldCommand = commands.get(0);
assertEquals("acco_id", fieldCommand.getName());
assertEquals(30000000, fieldCommand.getMatches());
assertEquals(5687, fieldCommand.getNGroups().intValue());
List<Group> fieldCommandGroups = fieldCommand.getValues();
assertEquals(10, fieldCommandGroups.size());
assertEquals("116_ar", fieldCommandGroups.get(0).getGroupValue());
assertEquals(2, fieldCommandGroups.get(0).getResult().size());
assertEquals(2236, fieldCommandGroups.get(0).getResult().getNumFound());
assertEquals("116_hi", fieldCommandGroups.get(1).getGroupValue());
assertEquals(2, fieldCommandGroups.get(1).getResult().size());
assertEquals(2234, fieldCommandGroups.get(1).getResult().getNumFound());
assertEquals("953_ar", fieldCommandGroups.get(2).getGroupValue());
assertEquals(2, fieldCommandGroups.get(2).getResult().size());
assertEquals(1020, fieldCommandGroups.get(2).getResult().getNumFound());
assertEquals("953_hi", fieldCommandGroups.get(3).getGroupValue());
assertEquals(2, fieldCommandGroups.get(3).getResult().size());
assertEquals(1030, fieldCommandGroups.get(3).getResult().getNumFound());
assertEquals("954_ar", fieldCommandGroups.get(4).getGroupValue());
assertEquals(2, fieldCommandGroups.get(4).getResult().size());
assertEquals(2236, fieldCommandGroups.get(4).getResult().getNumFound());
assertEquals("954_hi", fieldCommandGroups.get(5).getGroupValue());
assertEquals(2, fieldCommandGroups.get(5).getResult().size());
assertEquals(2234, fieldCommandGroups.get(5).getResult().getNumFound());
assertEquals("546_ar", fieldCommandGroups.get(6).getGroupValue());
assertEquals(2, fieldCommandGroups.get(6).getResult().size());
assertEquals(4984, fieldCommandGroups.get(6).getResult().getNumFound());
assertEquals("546_hi", fieldCommandGroups.get(7).getGroupValue());
assertEquals(2, fieldCommandGroups.get(7).getResult().size());
assertEquals(4984, fieldCommandGroups.get(7).getResult().getNumFound());
assertEquals("708_ar", fieldCommandGroups.get(8).getGroupValue());
assertEquals(2, fieldCommandGroups.get(8).getResult().size());
assertEquals(4627, fieldCommandGroups.get(8).getResult().getNumFound());
assertEquals("708_hi", fieldCommandGroups.get(9).getGroupValue());
assertEquals(2, fieldCommandGroups.get(9).getResult().size());
assertEquals(4627, fieldCommandGroups.get(9).getResult().getNumFound());
GroupCommand funcCommand = commands.get(1);
assertEquals("sum(price, price)", funcCommand.getName());
assertEquals(30000000, funcCommand.getMatches());
assertNull(funcCommand.getNGroups());
List<Group> funcCommandGroups = funcCommand.getValues();
assertEquals(10, funcCommandGroups.size());
assertEquals("95000.0", funcCommandGroups.get(0).getGroupValue());
assertEquals(2, funcCommandGroups.get(0).getResult().size());
assertEquals(43666, funcCommandGroups.get(0).getResult().getNumFound());
assertEquals("91400.0", funcCommandGroups.get(1).getGroupValue());
assertEquals(2, funcCommandGroups.get(1).getResult().size());
assertEquals(27120, funcCommandGroups.get(1).getResult().getNumFound());
assertEquals("104800.0", funcCommandGroups.get(2).getGroupValue());
assertEquals(2, funcCommandGroups.get(2).getResult().size());
assertEquals(34579, funcCommandGroups.get(2).getResult().getNumFound());
assertEquals("99400.0", funcCommandGroups.get(3).getGroupValue());
assertEquals(2, funcCommandGroups.get(3).getResult().size());
assertEquals(40519, funcCommandGroups.get(3).getResult().getNumFound());
assertEquals("109600.0", funcCommandGroups.get(4).getGroupValue());
assertEquals(2, funcCommandGroups.get(4).getResult().size());
assertEquals(36203, funcCommandGroups.get(4).getResult().getNumFound());
assertEquals("102400.0", funcCommandGroups.get(5).getGroupValue());
assertEquals(2, funcCommandGroups.get(5).getResult().size());
assertEquals(37852, funcCommandGroups.get(5).getResult().getNumFound());
assertEquals("116800.0", funcCommandGroups.get(6).getGroupValue());
assertEquals(2, funcCommandGroups.get(6).getResult().size());
assertEquals(40393, funcCommandGroups.get(6).getResult().getNumFound());
assertEquals("107800.0", funcCommandGroups.get(7).getGroupValue());
assertEquals(2, funcCommandGroups.get(7).getResult().size());
assertEquals(41639, funcCommandGroups.get(7).getResult().getNumFound());
assertEquals("136200.0", funcCommandGroups.get(8).getGroupValue());
assertEquals(2, funcCommandGroups.get(8).getResult().size());
assertEquals(25929, funcCommandGroups.get(8).getResult().getNumFound());
assertEquals("131400.0", funcCommandGroups.get(9).getGroupValue());
assertEquals(2, funcCommandGroups.get(9).getResult().size());
assertEquals(29179, funcCommandGroups.get(9).getResult().getNumFound());
GroupCommand queryCommand = commands.get(2);
assertEquals("country:fr", queryCommand.getName());
assertNull(queryCommand.getNGroups());
assertEquals(30000000, queryCommand.getMatches());
List<Group> queryCommandGroups = queryCommand.getValues();
assertEquals(1, queryCommandGroups.size());
assertEquals("country:fr", queryCommandGroups.get(0).getGroupValue());
assertEquals(2, queryCommandGroups.get(0).getResult().size());
assertEquals(57074, queryCommandGroups.get(0).getResult().getNumFound());
}
use of org.apache.solr.client.solrj.impl.XMLResponseParser in project lucene-solr by apache.
the class TestConfigSetImmutable method testAddSchemaFieldsImmutable.
@Test
public void testAddSchemaFieldsImmutable() throws Exception {
final String error = "error";
// check writing an existing field is okay
String updateXMLSafe = "<add><doc><field name=\"id\">\"testdoc\"</field></doc></add>";
String response = restTestHarness.update(updateXMLSafe);
XMLResponseParser parser = new XMLResponseParser();
NamedList<Object> listResponse = parser.processResponse(new StringReader(response));
assertNull(listResponse.get(error));
// check writing a new field is not okay
String updateXMLNotSafe = "<add><doc><field name=\"id\">\"testdoc\"</field>" + "<field name=\"newField67\">\"foobar\"</field></doc></add>";
response = restTestHarness.update(updateXMLNotSafe);
listResponse = parser.processResponse(new StringReader(response));
assertNotNull(listResponse.get(error));
assertTrue(listResponse.get(error).toString().contains("immutable"));
}
use of org.apache.solr.client.solrj.impl.XMLResponseParser in project lucene-solr by apache.
the class TestWriterPerf method doPerf.
void doPerf(String writerName, SolrQueryRequest req, int encIter, int decIter) throws Exception {
SolrQueryResponse rsp = getResponse(req);
QueryResponseWriter w = h.getCore().getQueryResponseWriter(writerName);
ByteArrayOutputStream out = null;
System.gc();
RTimer timer = new RTimer();
for (int i = 0; i < encIter; i++) {
if (w instanceof BinaryQueryResponseWriter) {
BinaryQueryResponseWriter binWriter = (BinaryQueryResponseWriter) w;
out = new ByteArrayOutputStream();
binWriter.write(out, req, rsp);
out.close();
} else {
out = new ByteArrayOutputStream();
// to be fair, from my previous tests, much of the performance will be sucked up
// by java's UTF-8 encoding/decoding, not the actual writing
Writer writer = new OutputStreamWriter(out, StandardCharsets.UTF_8);
w.write(writer, req, rsp);
writer.close();
}
}
double encodeTime = timer.getTime();
byte[] arr = out.toByteArray();
timer = new RTimer();
writerName = writerName.intern();
for (int i = 0; i < decIter; i++) {
ResponseParser rp = null;
if (writerName == "xml") {
rp = new XMLResponseParser();
} else if (writerName == "javabin") {
rp = new BinaryResponseParser();
} else {
break;
}
ByteArrayInputStream in = new ByteArrayInputStream(arr);
rp.processResponse(in, "UTF-8");
}
double decodeTime = timer.getTime();
log.info("writer " + writerName + ", size=" + out.size() + ", encodeRate=" + (encIter * 1000L / encodeTime) + ", decodeRate=" + (decIter * 1000L / decodeTime));
req.close();
}
use of org.apache.solr.client.solrj.impl.XMLResponseParser in project lucene-solr by apache.
the class SolrExampleTests method testRealtimeGet.
@Test
public void testRealtimeGet() throws Exception {
SolrClient client = getSolrClient();
// Empty the database...
// delete everything!
client.deleteByQuery("*:*");
// Now add something...
SolrInputDocument doc = new SolrInputDocument();
doc.addField("id", "DOCID");
doc.addField("name", "hello");
client.add(doc);
// Since the transaction log is disabled in the example, we need to commit
client.commit();
SolrQuery q = new SolrQuery();
q.setRequestHandler("/get");
q.set("id", "DOCID");
q.set("fl", "id,name,aaa:[value v=aaa]");
// First Try with the BinaryResponseParser
QueryRequest req = new QueryRequest(q);
req.setResponseParser(new BinaryResponseParser());
QueryResponse rsp = req.process(client);
SolrDocument out = (SolrDocument) rsp.getResponse().get("doc");
assertEquals("DOCID", out.get("id"));
assertEquals("hello", out.get("name"));
assertEquals("aaa", out.get("aaa"));
// Then with the XMLResponseParser
req.setResponseParser(new XMLResponseParser());
rsp = req.process(client);
out = (SolrDocument) rsp.getResponse().get("doc");
assertEquals("DOCID", out.get("id"));
assertEquals("hello", out.get("name"));
assertEquals("aaa", out.get("aaa"));
}
Aggregations