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.