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