lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Lance Norskog <goks...@gmail.com>
Subject Re: Greater-than and less-than in data import SQL queries
Date Thu, 29 Oct 2009 01:15:10 GMT
It is easier to put SQL select statements in a view, and just use that
view from the DIH configuration file.

On Tue, Oct 27, 2009 at 12:30 PM, Andrew Clegg <andrew.clegg@gmail.com> wrote:
>
>
> 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 &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.
>>>
>>
>>
>>
>
> --
> 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.
>
>



-- 
Lance Norskog
goksron@gmail.com

Mime
View raw message