Which version of Solr are you using? The deltaImportQuery feature was added recently, you'd need a nightly build for it to work.
On Mon, Dec 29, 2008 at 4:57 PM, Manupriya <manupriya.si...@gmail.com>wrote: > > Hi Noble, > > I tried with the deltaImportQuery as well. But still I am getting the same > exception on the server console - > > Dec 29, 2008 4:53:52 PM org.apache.solr.handler.dataimport.DataImporter > doDeltaImport > > SEVERE: Delta Import Failed > java.lang.NullPointerException > at > > org.apache.solr.handler.dataimport.SqlEntityProcessor.getDeltaImportQuery(SqlEntityProcessor.java:153) > at > > org.apache.solr.handler.dataimport.SqlEntityProcessor.getQuery(SqlEntityProcessor.java:125) > at > > org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73) > at > > org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:285) > at > org.apache.solr.handler.dataimport.DocBuilder.doDelta(DocBuilder.java:211) > at > org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:133) > at > > org.apache.solr.handler.dataimport.DataImporter.doDeltaImport(DataImporter.java:359) > at > > org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:388) > at > > org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:377) > > Another thing, I do have proper data in the DB. > > Thanks, > Manu > > > Noble Paul നോബിള് नोब्ळ् wrote: > > > > The same example with deltaImportQuery would look as follows > > <dataConfig> > > <dataSource driver="com.mysql.jdbc.Driver" > > url="jdbc:mysql://localhost/solr_demo_db" user="root" password="root" /> > > <document name="products"> > > <entity name="item" pk="ID" query="select * from item" > > deltaQuery="select id from item where last_modified > > > '${dataimporter.last_index_time}'" > > deltaImportQuery="select * from item where ID=${dataimporter.delta.ID}" > >> > > <field column="NAME" name="name" /> > > <field column="NAME" name="nameSort" /> > > <field column="NAME" name="alphaNameSort" /> > > > > <entity name="feature" pk="ITEM_ID" > > query="select DESCRIPTION from FEATURE where > > ITEM_ID='${item.ID}'" > > deltaQuery="select ITEM_ID from FEATURE where > > last_modified > '${dataimporter.last_index_time}'" > > parentDeltaQuery="select ID from item where > > ID=${feature.ITEM_ID}"> > > <field name="features" column="DESCRIPTION" /> > > </entity> > > > > <entity name="item_category" pk="ITEM_ID, CATEGORY_ID" > > query="select CATEGORY_ID from item_category where > > ITEM_ID='${item.ID}'" > > deltaQuery="select ITEM_ID, CATEGORY_ID from > > item_category where last_modified > '${dataimporter.last_index_time}'" > > parentDeltaQuery="select ID from item where > > ID=${item_category.ITEM_ID}"> > > <entity name="category" pk="ID" > > query="select DESCRIPTION from category where ID = > > '${item_category.CATEGORY_ID}'" > > deltaQuery="select ID from category where > > last_modified > '${dataimporter.last_index_time}'" > > parentDeltaQuery="select ITEM_ID, CATEGORY_ID from > > item_category where CATEGORY_ID=${category.ID}"> > > <field column="description" name="cat" /> > > </entity> > > </entity> > > </entity> > > </document> > > </dataConfig> > > > > On Mon, Dec 29, 2008 at 3:30 PM, Noble Paul നോബിള് नोब्ळ् > > <noble.p...@gmail.com> wrote: > >> did you put in the data? > >> > >> On Mon, Dec 29, 2008 at 3:07 PM, Manupriya <manupriya.si...@gmail.com> > >> wrote: > >>> > >>> Hi Shalin, > >>> > >>> I am actually trying out the example provided at > >>> http://wiki.apache.org/solr/DataImportHandler. > >>> > >>> My db-data-config.xml is as following - > >>> > >>> <dataConfig> > >>> <dataSource driver="com.mysql.jdbc.Driver" > >>> url="jdbc:mysql://localhost/solr_demo_db" user="root" password="root" > /> > >>> <document name="products"> > >>> <entity name="item" pk="ID" query="select * from item" > >>> deltaQuery="select id from item where last_modified > > >>> '${dataimporter.last_index_time}'"> > >>> <field column="NAME" name="name" /> > >>> <field column="NAME" name="nameSort" /> > >>> <field column="NAME" name="alphaNameSort" /> > >>> > >>> <entity name="feature" pk="ITEM_ID" > >>> query="select DESCRIPTION from FEATURE where > >>> ITEM_ID='${item.ID}'" > >>> deltaQuery="select ITEM_ID from FEATURE where > >>> last_modified > '${dataimporter.last_index_time}'" > >>> parentDeltaQuery="select ID from item where > >>> ID=${feature.ITEM_ID}"> > >>> <field name="features" column="DESCRIPTION" /> > >>> </entity> > >>> > >>> <entity name="item_category" pk="ITEM_ID, CATEGORY_ID" > >>> query="select CATEGORY_ID from item_category where > >>> ITEM_ID='${item.ID}'" > >>> deltaQuery="select ITEM_ID, CATEGORY_ID from > >>> item_category where last_modified > '${dataimporter.last_index_time}'" > >>> parentDeltaQuery="select ID from item where > >>> ID=${item_category.ITEM_ID}"> > >>> <entity name="category" pk="ID" > >>> query="select DESCRIPTION from category where ID > >>> = > >>> '${item_category.CATEGORY_ID}'" > >>> deltaQuery="select ID from category where > >>> last_modified > '${dataimporter.last_index_time}'" > >>> parentDeltaQuery="select ITEM_ID, CATEGORY_ID > >>> from > >>> item_category where CATEGORY_ID=${category.ID}"> > >>> <field column="description" name="cat" /> > >>> </entity> > >>> </entity> > >>> </entity> > >>> </document> > >>> </dataConfig> > >>> > --------------------------------------------------------------------------------------------------- > >>> > >>> My DB structure is as following - > >>> > >>> DROP TABLE IF EXISTS solr_demo_db.item; > >>> CREATE TABLE `item` ( > >>> `ID` int(2) NOT NULL auto_increment, > >>> `name` varchar(100) default NULL, > >>> `manu` varchar(20) default NULL, > >>> `weight` varchar(20) default NULL, > >>> `price` varchar(20) default NULL, > >>> `popularity` varchar(2) default NULL, > >>> `includes` varchar(10) default NULL, > >>> `last_modified` datetime default NULL, > >>> PRIMARY KEY (`ID`) > >>> ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1; > >>> > >>> DROP TABLE IF EXISTS solr_demo_db.feature; > >>> CREATE TABLE `feature` ( > >>> `DESCRIPTION` varchar(100) default NULL, > >>> `ITEM_ID` int(2) NOT NULL, > >>> `last_modified` datetime default NULL, > >>> PRIMARY KEY (`ITEM_ID`) > >>> ) ENGINE=InnoDB DEFAULT CHARSET=latin1; > >>> > >>> DROP TABLE IF EXISTS solr_demo_db.category; > >>> CREATE TABLE `category` ( > >>> `ID` int(2) NOT NULL auto_increment, > >>> `DESCRIPTION` varchar(100) default NULL, > >>> `last_modified` date default NULL, > >>> PRIMARY KEY (`ID`) > >>> ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1; > >>> > >>> DROP TABLE IF EXISTS solr_demo_db.item_category; > >>> CREATE TABLE `item_category` ( > >>> `ITEM_ID` int(2) NOT NULL default '0', > >>> `CATEGORY_ID` int(2) NOT NULL default '0', > >>> `last_modified` date default NULL, > >>> PRIMARY KEY (`ITEM_ID`,`CATEGORY_ID`) > >>> ) ENGINE=InnoDB DEFAULT CHARSET=latin1; > >>> > >>> Am I doing something wrong here? > >>> > >>> Thanks, > >>> Manu > >>> > >>> > >>> Shalin Shekhar Mangar wrote: > >>>> > >>>> What does your data-config look like? especially the delta query part. > >>>> > >>>> On Mon, Dec 29, 2008 at 2:35 PM, Manupriya > >>>> <manupriya.si...@gmail.com>wrote: > >>>> > >>>>> > >>>>> Hi, > >>>>> > >>>>> I am using Delta DataImport feature to partially refresh the indexes. > >>>>> > >>>>> Note - full-import is working perfectly fine. But I need to do > >>>>> delta-import > >>>>> as I do not want to rebuild all the indexes. > >>>>> > >>>>> My database structure is same as mentioned in the example at > >>>>> http://wiki.apache.org/solr/DataImportHandler. > >>>>> > >>>>> http://www.nabble.com/file/p21200498/example-schema.png > >>>>> > --------------------------------------------------------------------------- > >>>>> The dataimport.properties has the value as - > >>>>> > >>>>> #Mon Dec 29 14:08:12 IST 2008 > >>>>> last_index_time=2008-12-29 14\:08\:12 > >>>>> > --------------------------------------------------------------------------- > >>>>> I have changed the last_modified for the 'tem' table as current > >>>>> timestamp. > >>>>> And when I query the DB, I get the following result - > >>>>> > >>>>> http://www.nabble.com/file/p21200498/data.jpg > >>>>> > >>>>> > ------------------------------------------------------------------------------------------------- > >>>>> > >>>>> But when I call delta data-import, it returns me the following > >>>>> response - > >>>>> > >>>>> Server Response: > >>>>> > >>>>> > {responseHeader={status=0,QTime=16},initArgs={defaults={config=db-data-config.xml}},command=delta-import,status=idle,importResponse=,statusMessages={},WARNING=This > >>>>> response format is experimental. It is likely to change in the > >>>>> future.} > >>>>> > >>>>> > >>>>> > --------------------------------------------------------------------------------------------------- > >>>>> And when I query for data for '*:*', I get the following - > >>>>> Note - Data returned by query doesnt reflect the correct timestamp > >>>>> from > >>>>> database. > >>>>> > >>>>> SolrDocument(1) > >>>>> Field Name & Value: includes=12 > >>>>> Field Name & Value: features=[demo feature, demo feature 1] > >>>>> Field Name & Value: price=12.0 > >>>>> Field Name & Value: timestamp=Mon Dec 29 13:57:54 IST 2008 > >>>>> Field Name & Value: manu=manu-12 > >>>>> Field Name & Value: sku=1 > >>>>> Field Name & Value: id=1 > >>>>> Field Name & Value: popularity=1 > >>>>> Field Name & Value: weight=12.0 > >>>>> SolrDocument(2) > >>>>> Field Name & Value: includes=43 > >>>>> Field Name & Value: features=demo feature 2 > >>>>> Field Name & Value: price=10.0 > >>>>> Field Name & Value: timestamp=Mon Dec 29 13:57:54 IST 2008 > >>>>> Field Name & Value: manu=Demo - 12 > >>>>> Field Name & Value: sku=2 > >>>>> Field Name & Value: id=2 > >>>>> Field Name & Value: popularity=5 > >>>>> Field Name & Value: weight=12.0 > >>>>> SolrDocument(3) > >>>>> Field Name & Value: includes=1 > >>>>> Field Name & Value: features=demo -3 > >>>>> Field Name & Value: price=1.0 > >>>>> Field Name & Value: timestamp=Mon Dec 29 13:57:54 IST 2008 > >>>>> Field Name & Value: manu=manu - 36 > >>>>> Field Name & Value: sku=3 > >>>>> Field Name & Value: id=3 > >>>>> Field Name & Value: popularity=1 > >>>>> Field Name & Value: weight=1.0 > >>>>> SolrDocument(4) > >>>>> Field Name & Value: includes=2 > >>>>> Field Name & Value: features=demo - 4 > >>>>> Field Name & Value: price=2.0 > >>>>> Field Name & Value: timestamp=Mon Dec 29 13:57:55 IST 2008 > >>>>> Field Name & Value: manu=manu - 46 > >>>>> Field Name & Value: sku=4 > >>>>> Field Name & Value: id=4 > >>>>> Field Name & Value: popularity=2 > >>>>> Field Name & Value: weight=2.0 > >>>>> SolrDocument(5) > >>>>> Field Name & Value: includes=3 > >>>>> Field Name & Value: features=demo - 5 > >>>>> Field Name & Value: price=3.0 > >>>>> Field Name & Value: timestamp=Mon Dec 29 13:57:55 IST 2008 > >>>>> Field Name & Value: manu=manu - 56 > >>>>> Field Name & Value: sku=5 > >>>>> Field Name & Value: id=5 > >>>>> Field Name & Value: popularity=3 > >>>>> Field Name & Value: weight=3.0 > >>>>> SolrDocument(6) > >>>>> Field Name & Value: includes=4 > >>>>> Field Name & Value: features=demo - 66 > >>>>> Field Name & Value: price=4.0 > >>>>> Field Name & Value: timestamp=Mon Dec 29 13:57:55 IST 2008 > >>>>> Field Name & Value: manu=manu - 66 > >>>>> Field Name & Value: sku=6 > >>>>> Field Name & Value: id=6 > >>>>> Field Name & Value: popularity=4 > >>>>> Field Name & Value: weight=4.0 > >>>>> > >>>>> > >>>>> > ------------------------------------------------------------------------------------------ > >>>>> My Java code that calls delta import is as follows - > >>>>> > >>>>> public static void main(String[] args) throws IOException, > >>>>> SolrServerException { > >>>>> CommonsHttpSolrServer server = new > >>>>> CommonsHttpSolrServer("http://localhost:8983/solr"); > >>>>> BinaryResponseParser parser = new BinaryResponseParser(); > >>>>> server.setParser(parser); > >>>>> > >>>>> ModifiableSolrParams params = new ModifiableSolrParams(); > >>>>> params.set("qt", "/dataimport"); > >>>>> params.set("command", "delta-import"); > >>>>> params.set("commit", "true"); > >>>>> params.set("wt","json"); > >>>>> > >>>>> try{ > >>>>> > >>>>> QueryResponse response = server.query(params); > >>>>> server.commit(); > >>>>> System.out.println("Server Response: " + response); > >>>>> > >>>>> SolrQuery query = new SolrQuery("*:*"); > >>>>> QueryResponse results = server.query(query); > >>>>> > >>>>> SolrDocumentList list = results.getResults(); > >>>>> > >>>>> int index = 1; > >>>>> for (SolrDocument solrDocument : list) { > >>>>> > >>>>> System.out.println("SolrDocument("+index+")"); > >>>>> Iterator<Entry<String, Object>> iterator = > >>>>> solrDocument.iterator(); > >>>>> > >>>>> while(iterator.hasNext()){ > >>>>> System.out.println("Field Name & Value: > >>>>> "+iterator.next()); > >>>>> } > >>>>> > >>>>> index++; > >>>>> } > >>>>> > >>>>> }catch(Exception ex){ > >>>>> > >>>>> System.out.println("Exception Occured:"+ex); > >>>>> } > >>>>> > >>>>> } > >>>>> > --------------------------------------------------------------------------- > >>>>> > >>>>> Does SOLR do some kind of caching? I dont understand as why the > >>>>> updated > >>>>> values are not queried correctly from DB? > >>>>> > >>>>> There are no errors in the logs. But I can see an error on the server > >>>>> console - > >>>>> > >>>>> SEVERE: Delta Import Failed > >>>>> java.lang.NullPointerException > >>>>> at > >>>>> > >>>>> > org.apache.solr.handler.dataimport.SqlEntityProcessor.getDeltaImportQuery(SqlEntityProcessor.java:153) > >>>>> at > >>>>> > >>>>> > org.apache.solr.handler.dataimport.SqlEntityProcessor.getQuery(SqlEntityProcessor.java:125) > >>>>> at > >>>>> > >>>>> > org.apache.solr.handler.dataimport.SqlEntityProcessor.nextRow(SqlEntityProcessor.java:73) > >>>>> at > >>>>> > >>>>> > org.apache.solr.handler.dataimport.DocBuilder.buildDocument(DocBuilder.java:285) > >>>>> at > >>>>> > org.apache.solr.handler.dataimport.DocBuilder.doDelta(DocBuilder.java:211) > >>>>> at > >>>>> > org.apache.solr.handler.dataimport.DocBuilder.execute(DocBuilder.java:133) > >>>>> at > >>>>> > >>>>> > org.apache.solr.handler.dataimport.DataImporter.doDeltaImport(DataImporter.java:359) > >>>>> at > >>>>> > >>>>> > org.apache.solr.handler.dataimport.DataImporter.runCmd(DataImporter.java:388) > >>>>> at > >>>>> > >>>>> > org.apache.solr.handler.dataimport.DataImporter$1.run(DataImporter.java:377) > >>>>> > >>>>> > >>>>> What can be the reason for this error? > >>>>> > >>>>> Thanks, > >>>>> Manu > >>>>> > >>>>> -- > >>>>> View this message in context: > >>>>> > http://www.nabble.com/Delta-DataImport-is-not-picking-the-modified-value-in-DB-tp21200498p21200498.html > >>>>> Sent from the Solr - User mailing list archive at Nabble.com. > >>>>> > >>>>> > >>>> > >>>> > >>>> -- > >>>> Regards, > >>>> Shalin Shekhar Mangar. > >>>> > >>>> > >>> > >>> -- > >>> View this message in context: > >>> > http://www.nabble.com/Delta-DataImport-is-not-picking-the-modified-value-in-DB-tp21200498p21200786.html > >>> Sent from the Solr - User mailing list archive at Nabble.com. > >>> > >>> > >> > >> > >> > >> -- > >> --Noble Paul > >> > > > > > > > > -- > > --Noble Paul > > > > > > -- > View this message in context: > http://www.nabble.com/Delta-DataImport-is-not-picking-the-modified-value-in-DB-tp21200498p21201980.html > Sent from the Solr - User mailing list archive at Nabble.com. > > -- Regards, Shalin Shekhar Mangar.