lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Erik Hatcher <erik.hatc...@gmail.com>
Subject Re: Greater-than and less-than in data import SQL queries
Date Tue, 27 Oct 2009 18:57:48 GMT
Use &lt; 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.
>


Mime
View raw message