Heh, eventually I decided
"where 4 > node_depth" was the most pleasing (if slightly WTF-ish) way of writing it... Cheers, Andrew. Erik Hatcher-4 wrote: > > Use < instead of < in that attribute. That should fix the issue. > Remember, it's an XML file, so it has to obey XML encoding rules which > make it ugly but whatcha gonna do? > > Erik > > On Oct 27, 2009, at 11:50 AM, Andrew Clegg wrote: > >> >> Hi, >> >> If I have a DataImportHandler query with a greater-than sign in, >> like this: >> >> <entity name="higher_node" dataSource="database" >> query="select *, >> title as keywords from cathnode_text where node_depth > 4"> >> >> Everything's fine. However, if it contains a less-than sign: >> >> <entity name="higher_node" dataSource="database" >> query="select *, >> title as keywords from cathnode_text where node_depth < 4"> >> >> I get this exception: >> >> INFO: Processing configuration from solrconfig.xml: >> {config=dataconfig.xml} >> [Fatal Error] :240:129: The value of attribute "query" associated >> with an >> element type "null" must not contain the '<' character. >> 27-Oct-2009 15:30:49 >> org.apache.solr.handler.dataimport.DataImportHandler >> inform >> SEVERE: Exception while loading DataImporter >> org.apache.solr.handler.dataimport.DataImportHandlerException: >> Exception >> occurred while initializing context >> at >> org >> .apache >> .solr >> .handler.dataimport.DataImporter.loadDataConfig(DataImporter.java:184) >> at >> org >> .apache >> .solr.handler.dataimport.DataImporter.<init>(DataImporter.java:101) >> at >> org >> .apache >> .solr >> .handler.dataimport.DataImportHandler.inform(DataImportHandler.java: >> 113) >> at >> org >> .apache.solr.core.SolrResourceLoader.inform(SolrResourceLoader.java: >> 424) >> at org.apache.solr.core.SolrCore.<init>(SolrCore.java:588) >> at >> org.apache.solr.core.CoreContainer >> $Initializer.initialize(CoreContainer.java:137) >> at >> org >> .apache.solr.servlet.SolrDispatchFilter.init(SolrDispatchFilter.java: >> 83) >> at >> org >> .apache >> .catalina >> .core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java: >> 275) >> at >> org >> .apache >> .catalina >> .core >> .ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java: >> 397) >> at >> org >> .apache >> .catalina >> .core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108) >> at >> org >> .apache >> .catalina.core.StandardContext.filterStart(StandardContext.java:3709) >> at >> org.apache.catalina.core.StandardContext.start(StandardContext.java: >> 4356) >> at >> org.apache.catalina.manager.ManagerServlet.start(ManagerServlet.java: >> 1244) >> at >> org >> .apache >> .catalina.manager.HTMLManagerServlet.start(HTMLManagerServlet.java: >> 604) >> at >> org >> .apache >> .catalina.manager.HTMLManagerServlet.doGet(HTMLManagerServlet.java: >> 129) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:690) >> at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) >> at >> org >> .apache >> .catalina >> .core >> .ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java: >> 290) >> at >> org >> .apache >> .catalina >> .core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) >> at >> org >> .apache >> .catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java: >> 233) >> at >> org >> .apache >> .catalina.core.StandardContextValve.invoke(StandardContextValve.java: >> 175) >> at >> org >> .apache >> .catalina >> .authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:525) >> at >> org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java: >> 568) >> at >> org >> .apache >> .catalina.core.StandardHostValve.invoke(StandardHostValve.java:128) >> at >> org >> .apache >> .catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) >> at >> org >> .apache >> .catalina.core.StandardEngineValve.invoke(StandardEngineValve.java: >> 109) >> at >> org >> .apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java: >> 286) >> at >> org >> .apache.coyote.http11.Http11Processor.process(Http11Processor.java: >> 844) >> at >> org.apache.coyote.http11.Http11Protocol >> $Http11ConnectionHandler.process(Http11Protocol.java:583) >> at >> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java: >> 447) >> at java.lang.Thread.run(Thread.java:619) >> Caused by: org.xml.sax.SAXParseException: The value of attribute >> "query" >> associated with an element type "null" must not contain the '<' >> character. >> at >> com >> .sun >> .org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java: >> 239) >> at >> com >> .sun >> .org >> .apache >> .xerces >> .internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283) >> at >> org >> .apache >> .solr >> .handler.dataimport.DataImporter.loadDataConfig(DataImporter.java:172) >> ... 30 more >> >> Is this fixable, or an unavoidable feature of Xerces? If the latter, >> perhaps >> the docs could benefit from a note to say "use NOT a >= b" or >> something? >> >> Speaking of, I found this in the wiki examples for the DIH: >> >> <entity name="item" pk="ID" >> query="select * from item" >> deltaImportQuery="select * from item where >> ID=='${dataimporter.delta.id}'" >> deltaQuery="select id from item where last_modified > >> '${dataimporter.last_index_time}'"> >> >> Shouldn't that be one equals sign: >> >> deltaImportQuery="select * from item where >> ID='${dataimporter.delta.id}'" >> >> Or is it doing something clever with Java operators? >> >> Cheers, >> >> Andrew. >> >> -- >> View this message in context: >> http://www.nabble.com/Greater-than-and-less-than-in-data-import-SQL-queries-tp26080100p26080100.html >> Sent from the Solr - User mailing list archive at Nabble.com. >> > > > -- View this message in context: http://www.nabble.com/Greater-than-and-less-than-in-data-import-SQL-queries-tp26080100p26083680.html Sent from the Solr - User mailing list archive at Nabble.com.