See SOLR-1511 2009/10/7 Noble Paul നോബിള് नोब्ळ् <noble.p...@corp.aol.com>
> hi Lance. db.blob is the correct field name so that is fine. > you can probbaly open an issue and provide the testcase as a patch. > That can help us track this better > > On Wed, Oct 7, 2009 at 12:45 AM, Lance Norskog <goks...@gmail.com> wrote: > > A side note that might help: if I change the dataField from 'db.blob' > > to 'blob', this DIH stack emits no documents. > > > > On 10/5/09, Lance Norskog <goks...@gmail.com> wrote: > >> I've added a unit test for the problem down below. It feeds document > >> field data into the XPathEntityProcessor via the > >> FieldReaderDataSource, and the XPath EP does not emit unpacked fields. > >> > >> Running this under the debugger, I can see the supplied StringReader, > >> with the XML string, being piped into the XPath EP. But somehow the > >> XPath EP does not pick it apart the right way. > >> > >> Here is the DIH configuration file separately. > >> > >> <dataConfig> > >> <dataSource type='FieldReaderDataSource' name='fc' /> > >> <dataSource type='MockDataSource' name='db' /> > >> <document> > >> <entity name='db' query='select * from x' dataSource='db'> > >> <field column='dbid' /> > >> <field column='tag' /> > >> <field column='blob' /> > >> <entity name='unpack' dataSource='fc' > >> processor='XPathEntityProcessor' > >> forEach='/names' dataField='db.blob'> > >> <field column='name' xpath='/names/name' /> > >> </entity> > >> </entity> > >> </document> > >> </dataConfig> > >> > >> Any ideas? > >> > >> > --------------------------------------------------------------------------------------- > >> > >> package org.apache.solr.handler.dataimport; > >> > >> import static > >> > org.apache.solr.handler.dataimport.AbstractDataImportHandlerTest.createMap; > >> import junit.framework.TestCase; > >> > >> import java.util.ArrayList; > >> import java.util.HashMap; > >> import java.util.List; > >> import java.util.Map; > >> > >> import org.apache.solr.common.SolrInputDocument; > >> import org.apache.solr.common.SolrInputField; > >> import org.apache.solr.handler.dataimport.TestDocBuilder.SolrWriterImpl; > >> import org.junit.Test; > >> > >> /* > >> * Demonstrate problem feeding XPathEntity from a FieldReaderDatasource > >> */ > >> > >> public class TestFieldReaderXPath extends TestCase { > >> static final String KISSINGER = > "<names><name>Henry</name></names>"; > >> > >> static final String[][][] DBDOCS = { > >> {{"dbid", "1"}, {"blob", KISSINGER}}, > >> }; > >> > >> /* > >> * Receive a row from SQL and fetch a row from Solr - no value > matching > >> * stolen from TestDocBuilder > >> * */ > >> > >> @Test > >> public void testSolrEmbedded() throws Exception { > >> try { > >> DataImporter di = new DataImporter(); > >> di.loadDataConfig(dih_config_FR_into_XP); > >> DataImporter.RequestParams rp = new > DataImporter.RequestParams(); > >> rp.command = "full-import"; > >> rp.requestParams = new HashMap<String, Object>(); > >> > >> DataConfig cfg = di.getConfig(); > >> DataConfig.Entity entity = > cfg.document.entities.get(0); > >> List<Map<String,Object>> l = new > ArrayList<Map<String,Object>>(); > >> addDBDocuments(l); > >> MockDataSource.setIterator("select * from x", > l.iterator()); > >> entity.dataSrc = new MockDataSource(); > >> entity.isDocRoot = true; > >> SolrWriterImpl swi = new SolrWriterImpl(); > >> di.runCmd(rp, swi); > >> > >> assertEquals(1, swi.docs.size()); > >> SolrInputDocument doc = swi.docs.get(0); > >> SolrInputField field; > >> field = doc.getField("dbid"); > >> assertEquals(field.getValue().toString(), "1"); > >> field = doc.getField("blob"); > >> assertEquals(field.getValue().toString(), > KISSINGER); > >> field = doc.getField("name"); > >> assertNotNull(field); > >> assertEquals(field.getValue().toString(), > "Henry"); > >> } finally { > >> MockDataSource.clearCache(); > >> } > >> } > >> > >> > >> private void addDBDocuments(List<Map<String, Object>> l) { > >> for(String[][] dbdoc: DBDOCS) { > >> l.add(createMap(dbdoc[0][0], dbdoc[0][1], > dbdoc[1][0], dbdoc[1][1])); > >> } > >> } > >> > >> String dih_config_FR_into_XP = "<dataConfig>\r\n" + > >> " <dataSource type='FieldReaderDataSource' name='fc' />\r\n" + > >> " <dataSource type='MockDataSource' name='db' />\r\n" + > >> " <document>\r\n" + > >> " <entity name='db' query='select * from x' > dataSource='db'>\r\n" + > >> " <field column='dbid' />\r\n" + > >> " <field column='tag' />\r\n" + > >> " <field column='blob' />\r\n" + > >> " <entity name='unpack' dataSource='fc' > >> processor='XPathEntityProcessor'\r\n" + > >> " forEach='/names' dataField='db.blob'>\r\n" > + > >> " <field column='name' xpath='/names/name' />\r\n" + > >> " </entity>\r\n" + > >> " </entity>\r\n" + > >> " </document>\r\n" + > >> "</dataConfig>\r\n" > >> ; > >> > >> > >> } > >> > > > > > > -- > > Lance Norskog > > goks...@gmail.com > > > > > > -- > ----------------------------------------------------- > Noble Paul | Principal Engineer| AOL | http://aol.com > -- Regards, Shalin Shekhar Mangar.