lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mishra, Shikhar" <Shikhar.Mis...@telcobuy.com>
Subject RE: DataImport Handler : Transformer Function Eval Failed Error
Date Fri, 02 Nov 2012 14:06:37 GMT
We have a scenario where the same products are available from multiple vendors at different
prices. We want to store these prices along with the products in the index (product has many
prices), so that we can apply dynamic filtering on the prices at the time of search.


Thanks,
Shikhar

-----Original Message-----
From: Otis Gospodnetic [mailto:otis.gospodnetic@gmail.com] 
Sent: Thursday, November 01, 2012 8:13 PM
To: solr-user@lucene.apache.org
Subject: Re: DataImport Handler : Transformer Function Eval Failed Error

Hi,

That looks a little painful... what are you trying to achieve by storing JSON in there? Maybe
there's a simpler way to get there...

Otis
--
Performance Monitoring - http://sematext.com/spm On Nov 1, 2012 6:16 PM, "Mishra, Shikhar"
<Shikhar.Mishra@telcobuy.com>
wrote:

> Hi,
>
> I'm trying to store a list of JSON objects as stored value for the 
> field prices (see below).
>
> I'm getting the following error from the custom transformer function 
> (see the data-config file at the end) of data import handler.
>
> Error Message
>
> ----------------------------------------------------------------------
> --------- Caused by: 
> org.apache.solr.handler.dataimport.DataImportHandlerException:
> 'eval' failed with language: JavaScript and script:
> function vendorPrices(row)    {
>
>                     var wwtCost = row.get('WWT_COST');
>                     var listPrice = row.get('LIST_PRICE');
>                     var vendorName = row.get('VENDOR_NAME');
>
>                     //Below approach fails
>                     var prices = [];
>
>                     prices.push({'vendor':vendorName});
>                     prices.push({'wwtCost':wwtCost});
>                     prices.push({'listPrice':listPrice});
>
>                     row.put('prices':prices);
>
>                     //Below approach works
>                     //row.put('prices', '{' + 'vendor:' + vendorName + 
> ', ' + 'wwtCost:' + wwtCost + ', ' + 'listPrice:' + listPrice + '}');
>                     return row;
>                 } Processing Document # 1
>         at
> org.apache.solr.handler.dataimport.DataImportHandlerException.wrapAndT
> hrow(DataImportHandlerException.java:71)
>
> Data Import Handler Configuration File <dataConfig>
>
>         <script>
>         <![CDATA[
>                 function vendorPrices(row)    {
>
>                     var wwtCost = row.get('WWT_COST');
>                     var listPrice = row.get('LIST_PRICE');
>                     var vendorName = row.get('VENDOR_NAME');
>
>                     //Below approach fails
>                     var prices = [];
>
>                     prices.push({'vendor':vendorName});
>                     prices.push({'wwtCost':wwtCost});
>                     prices.push({'listPrice':listPrice});
>
>                     row.put('prices':prices);
>
>                     //Below approach works
>                     //row.put('prices', '{' + 'vendor:' + vendorName + 
> ', ' + 'wwtCost:' + wwtCost + ', ' + 'listPrice:' + listPrice + '}');
>                     return row;
>                 }
>         ]]>
>         </script>
>
>     <dataSource driver="oracle.jdbc.driver.OracleDriver"
> url="jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=
> rac-scan.somr.com)(PORT=3465))(CONNECT_DATA=(SERVICE_NAME=
> ERP_GENERAL.SOMR.ORG)))" user="dummy" password="xxxxxx"/>
>     <document>
>         <entity name="item" query="select * from 
> wwt_catalog.wwt_product prod, wwt_catalog.wwt_manufacturer mfg where 
> prod.mfg_id = mfg.mfg_id and prod.mfg_product_number = 'CON-CBO2-B22HPF'">
>                 <field column="PRODUCT_ID" name="id" />
>             <field column="MFG_PRODUCT_NUMBER" name="name" />
>             <field column="MFG_PRODUCT_NUMBER" name="nameSort" />
>             <field column="MFG_NAME" name="manu" />
>             <field column="MFG_ITEM_NUMBER" name="alphaNameSort" />
>             <field column="DESCRIPTION" name="features" />
>             <field column="DESCRIPTION" name="description" />
>
>             <entity name="vendor_sources"
> transformer="script:vendorPrices" query="SELECT PRICE.WWT_COST, 
> PRICE.LIST_PRICE, VEND.VENDOR_NAME, AVAIL.LEAD_TIME, 
> AVAIL.QTY_AVAILABLE FROM wwt_catalog.wwt_product prod, 
> wwt_catalog.wwt_product_pricing price, wwt_catalog.wwt_vendor vend, 
> wwt_catalog.wwt_product_availability avail WHERE  PROD.PRODUCT_ID = 
> price.product_id(+) AND price.vendor_id =
> vend.vendor_id(+) AND PRICE.PRODUCT_ID = avail.product_id(+) AND 
> PRICE.VENDOR_ID = AVAIL.VENDOR_ID(+) AND prod.PRODUCT_ID = 
> '${item.PRODUCT_ID}'">
>
>             </entity>
>         </entity>
>
>     </document>
> </dataConfig>
>
>
> Are there any syntactic errors in the JavaScript code above? Thanks.
>
> Shikhar
>
>
>

Mime
View raw message