Re: Getting Solr Document Attributes from a Custom Function

2013-12-12 Thread Mukundaraman valakumaresan
Hi

Thanks a lot , that helps

Regards
Mukund


On Thu, Dec 12, 2013 at 1:18 AM, Kydryavtsev Andrey werde...@yandex.ruwrote:

 As I know (not 100% sure actually), function queries don't work with
 multivalued fields. Why do you need multivalued fields here? Your price
 and numberOfCities don't look like multivalued. At least you can try to
 use, you know, some tricky format like
 50;40;20 to index multivalued field as single-valued and then parse this
 into values list in function.

 11.12.2013, 11:13, Mukundaraman valakumaresan muk...@8kmiles.com:
  Hi Kydryavtsev
 
  Thanks a lot it works,  but how do i pass a multivalued field values to a
  function query?
 
  Can it be passed as a String array?
 
  Thanks  Regards
  Mukund
 
  On Tue, Dec 10, 2013 at 12:05 PM, Kydryavtsev Andrey werde...@yandex.ru
 wrote:
 
   You can implement it in this way:
   Index number of cities as new int field (like field
   name=numberOfCities2/field) and implement user function like
 
   customFunction(price, numberOfCities, 1, 2000, 5)
 
   Custom parser should parse this into value sources list. From first two
   field sources we can get per doc value for this particular fields,
 another
   three will be ConstValueSource instances - just constants, so we can
 access
   all 5 values and implement custom formula per doc id. Find examples in
   ValueSourceParser and solr functions like DefFunction or
 MinFloatFunction
 
   10.12.2013, 09:31, Mukundaraman valakumaresan muk...@8kmiles.com:
   Hi Hoss,
 
   Thanks a lot for your response. The actual problem is,
 
   For every record that I query, I have to execute a formula and sort
 the
   records based on the value of the formula.
   The formula has elements from the record.
 
   For eg. for the following document ,I need to apply the formula
   (maxprice -
   solrprice)/ (maxprice - minprice)  +  count(cities)/totalcities.
   where maxprice, maxprice and total cities will be available at run
 time.
 
   So for the following record, it has to execute as  (1 -
   *5000*)/(1-2000)
   + *2*/5   (where 5000 and 2, which are in bold are from the document)
 
   doc
   field name=idapartment_1/field
   field name=nameCasa Grande/field
   field name=localitychennai/field
   field name=localitybangalore/field
   field name=price5000/field
   /doc
 
   Thanks  Regards
   Mukund
 
   On Tue, Dec 10, 2013 at 12:22 AM, Chris Hostetter
   hossman_luc...@fucit.orgwrote:
Smells like an XY problem ...
 
Can you please describe what your end goal is in writing a custom
function, and what you would do with things like the name field
   inside
your funciton?
 
In general, accessing stored field values for indexed documents ca
 be
prohibitively expensive, it rather defeats the entire point of the
inverted index data structure.  If you help us understand what your
   goal
is, people may be able to offer performant suggestions.
 
https://people.apache.org/~hossman/#xyproblem
XY Problem
 
Your question appears to be an XY Problem ... that is: you are
   dealing
with X, you are assuming Y will help you, and you are asking
 about
   Y
without giving more details about the X so that we can understand
 the
full issue.  Perhaps the best solution doesn't involve Y at all?
See Also: http://www.perlmonks.org/index.pl?node_id=542341
 
: Date: Mon, 9 Dec 2013 20:24:15 +0530
: From: Mukundaraman valakumaresan muk...@8kmiles.com
: Reply-To: solr-user@lucene.apache.org
: To: solr-user@lucene.apache.org
: Subject: Getting Solr Document Attributes from a Custom Function
:
: Hi All,
:
: I have a written a custom solr function and I would like to read a
property
: of the document inside my custom function. Is it possible to get
 that
using
: Solr?
:
: For eg. inside the floatVal method, I would like to get the value
 of
   the
: attribute name
:
: public class CustomValueSource extends ValueSource {
:
: @Override
: public FunctionValues getValues(Map context,
: AtomicReaderContext readerContext) throws IOException {
:  return new FloatDocValues(this) { @Override public float
   floatVal(int
doc)
: {
: /***
:  getDocument(doc).getAttribute(name)
:
: / }}}
:
: Thanks  Regards
: Mukund
:
 
-Hoss
http://www.lucidworks.com/



Re: Getting Solr Document Attributes from a Custom Function

2013-12-11 Thread Kydryavtsev Andrey
As I know (not 100% sure actually), function queries don't work with 
multivalued fields. Why do you need multivalued fields here? Your price and 
numberOfCities don't look like multivalued. At least you can try to use, you 
know, some tricky format like 
50;40;20 to index multivalued field as single-valued and then parse this into 
values list in function.

11.12.2013, 11:13, Mukundaraman valakumaresan muk...@8kmiles.com:
 Hi Kydryavtsev

 Thanks a lot it works,  but how do i pass a multivalued field values to a
 function query?

 Can it be passed as a String array?

 Thanks  Regards
 Mukund

 On Tue, Dec 10, 2013 at 12:05 PM, Kydryavtsev Andrey 
 werde...@yandex.ruwrote:

  You can implement it in this way:
  Index number of cities as new int field (like field
  name=numberOfCities2/field) and implement user function like

  customFunction(price, numberOfCities, 1, 2000, 5)

  Custom parser should parse this into value sources list. From first two
  field sources we can get per doc value for this particular fields, another
  three will be ConstValueSource instances - just constants, so we can access
  all 5 values and implement custom formula per doc id. Find examples in
  ValueSourceParser and solr functions like DefFunction or MinFloatFunction

  10.12.2013, 09:31, Mukundaraman valakumaresan muk...@8kmiles.com:
  Hi Hoss,

  Thanks a lot for your response. The actual problem is,

  For every record that I query, I have to execute a formula and sort the
  records based on the value of the formula.
  The formula has elements from the record.

  For eg. for the following document ,I need to apply the formula
  (maxprice -
  solrprice)/ (maxprice - minprice)  +  count(cities)/totalcities.
  where maxprice, maxprice and total cities will be available at run time.

  So for the following record, it has to execute as  (1 -
  *5000*)/(1-2000)
  + *2*/5   (where 5000 and 2, which are in bold are from the document)

  doc
  field name=idapartment_1/field
  field name=nameCasa Grande/field
  field name=localitychennai/field
  field name=localitybangalore/field
  field name=price5000/field
  /doc

  Thanks  Regards
  Mukund

  On Tue, Dec 10, 2013 at 12:22 AM, Chris Hostetter
  hossman_luc...@fucit.orgwrote:
   Smells like an XY problem ...

   Can you please describe what your end goal is in writing a custom
   function, and what you would do with things like the name field
  inside
   your funciton?

   In general, accessing stored field values for indexed documents ca be
   prohibitively expensive, it rather defeats the entire point of the
   inverted index data structure.  If you help us understand what your
  goal
   is, people may be able to offer performant suggestions.

   https://people.apache.org/~hossman/#xyproblem
   XY Problem

   Your question appears to be an XY Problem ... that is: you are
  dealing
   with X, you are assuming Y will help you, and you are asking about
  Y
   without giving more details about the X so that we can understand the
   full issue.  Perhaps the best solution doesn't involve Y at all?
   See Also: http://www.perlmonks.org/index.pl?node_id=542341

   : Date: Mon, 9 Dec 2013 20:24:15 +0530
   : From: Mukundaraman valakumaresan muk...@8kmiles.com
   : Reply-To: solr-user@lucene.apache.org
   : To: solr-user@lucene.apache.org
   : Subject: Getting Solr Document Attributes from a Custom Function
   :
   : Hi All,
   :
   : I have a written a custom solr function and I would like to read a
   property
   : of the document inside my custom function. Is it possible to get that
   using
   : Solr?
   :
   : For eg. inside the floatVal method, I would like to get the value of
  the
   : attribute name
   :
   : public class CustomValueSource extends ValueSource {
   :
   : @Override
   : public FunctionValues getValues(Map context,
   : AtomicReaderContext readerContext) throws IOException {
   :  return new FloatDocValues(this) { @Override public float
  floatVal(int
   doc)
   : {
   : /***
   :  getDocument(doc).getAttribute(name)
   :
   : / }}}
   :
   : Thanks  Regards
   : Mukund
   :

   -Hoss
   http://www.lucidworks.com/


Re: Getting Solr Document Attributes from a Custom Function

2013-12-10 Thread Mukundaraman valakumaresan
Hi Kydryavtsev

Thanks a lot it works,  but how do i pass a multivalued field values to a
function query?

Can it be passed as a String array?

Thanks  Regards
Mukund


On Tue, Dec 10, 2013 at 12:05 PM, Kydryavtsev Andrey werde...@yandex.ruwrote:

 You can implement it in this way:
 Index number of cities as new int field (like field
 name=numberOfCities2/field) and implement user function like

 customFunction(price, numberOfCities, 1, 2000, 5)

 Custom parser should parse this into value sources list. From first two
 field sources we can get per doc value for this particular fields, another
 three will be ConstValueSource instances - just constants, so we can access
 all 5 values and implement custom formula per doc id. Find examples in
 ValueSourceParser and solr functions like DefFunction or MinFloatFunction

 10.12.2013, 09:31, Mukundaraman valakumaresan muk...@8kmiles.com:
  Hi Hoss,
 
  Thanks a lot for your response. The actual problem is,
 
  For every record that I query, I have to execute a formula and sort the
  records based on the value of the formula.
  The formula has elements from the record.
 
  For eg. for the following document ,I need to apply the formula
 (maxprice -
  solrprice)/ (maxprice - minprice)  +  count(cities)/totalcities.
  where maxprice, maxprice and total cities will be available at run time.
 
  So for the following record, it has to execute as  (1 -
  *5000*)/(1-2000)
  + *2*/5   (where 5000 and 2, which are in bold are from the document)
 
  doc
  field name=idapartment_1/field
  field name=nameCasa Grande/field
  field name=localitychennai/field
  field name=localitybangalore/field
  field name=price5000/field
  /doc
 
  Thanks  Regards
  Mukund
 
  On Tue, Dec 10, 2013 at 12:22 AM, Chris Hostetter
  hossman_luc...@fucit.orgwrote:
 
   Smells like an XY problem ...
 
   Can you please describe what your end goal is in writing a custom
   function, and what you would do with things like the name field
 inside
   your funciton?
 
   In general, accessing stored field values for indexed documents ca be
   prohibitively expensive, it rather defeats the entire point of the
   inverted index data structure.  If you help us understand what your
 goal
   is, people may be able to offer performant suggestions.
 
   https://people.apache.org/~hossman/#xyproblem
   XY Problem
 
   Your question appears to be an XY Problem ... that is: you are
 dealing
   with X, you are assuming Y will help you, and you are asking about
 Y
   without giving more details about the X so that we can understand the
   full issue.  Perhaps the best solution doesn't involve Y at all?
   See Also: http://www.perlmonks.org/index.pl?node_id=542341
 
   : Date: Mon, 9 Dec 2013 20:24:15 +0530
   : From: Mukundaraman valakumaresan muk...@8kmiles.com
   : Reply-To: solr-user@lucene.apache.org
   : To: solr-user@lucene.apache.org
   : Subject: Getting Solr Document Attributes from a Custom Function
   :
   : Hi All,
   :
   : I have a written a custom solr function and I would like to read a
   property
   : of the document inside my custom function. Is it possible to get that
   using
   : Solr?
   :
   : For eg. inside the floatVal method, I would like to get the value of
 the
   : attribute name
   :
   : public class CustomValueSource extends ValueSource {
   :
   : @Override
   : public FunctionValues getValues(Map context,
   : AtomicReaderContext readerContext) throws IOException {
   :  return new FloatDocValues(this) { @Override public float
 floatVal(int
   doc)
   : {
   : /***
   :  getDocument(doc).getAttribute(name)
   :
   : / }}}
   :
   : Thanks  Regards
   : Mukund
   :
 
   -Hoss
   http://www.lucidworks.com/



Getting Solr Document Attributes from a Custom Function

2013-12-09 Thread Mukundaraman valakumaresan
Hi All,

I have a written a custom solr function and I would like to read a property
of the document inside my custom function. Is it possible to get that using
Solr?

For eg. inside the floatVal method, I would like to get the value of the
attribute name

public class CustomValueSource extends ValueSource {

@Override
public FunctionValues getValues(Map context,
AtomicReaderContext readerContext) throws IOException {
 return new FloatDocValues(this) { @Override public float floatVal(int doc)
{
/***
 getDocument(doc).getAttribute(name)

/ }}}

Thanks  Regards
Mukund


Re: Getting Solr Document Attributes from a Custom Function

2013-12-09 Thread Chris Hostetter

Smells like an XY problem ...

Can you please describe what your end goal is in writing a custom 
function, and what you would do with things like the name field inside 
your funciton?

In general, accessing stored field values for indexed documents ca be 
prohibitively expensive, it rather defeats the entire point of the 
inverted index data structure.  If you help us understand what your goal 
is, people may be able to offer performant suggestions.



https://people.apache.org/~hossman/#xyproblem
XY Problem

Your question appears to be an XY Problem ... that is: you are dealing
with X, you are assuming Y will help you, and you are asking about Y
without giving more details about the X so that we can understand the
full issue.  Perhaps the best solution doesn't involve Y at all?
See Also: http://www.perlmonks.org/index.pl?node_id=542341




: Date: Mon, 9 Dec 2013 20:24:15 +0530
: From: Mukundaraman valakumaresan muk...@8kmiles.com
: Reply-To: solr-user@lucene.apache.org
: To: solr-user@lucene.apache.org
: Subject: Getting Solr Document Attributes from a Custom Function
: 
: Hi All,
: 
: I have a written a custom solr function and I would like to read a property
: of the document inside my custom function. Is it possible to get that using
: Solr?
: 
: For eg. inside the floatVal method, I would like to get the value of the
: attribute name
: 
: public class CustomValueSource extends ValueSource {
: 
: @Override
: public FunctionValues getValues(Map context,
: AtomicReaderContext readerContext) throws IOException {
:  return new FloatDocValues(this) { @Override public float floatVal(int doc)
: {
: /***
:  getDocument(doc).getAttribute(name)
: 
: / }}}
: 
: Thanks  Regards
: Mukund
: 

-Hoss
http://www.lucidworks.com/


Re: Getting Solr Document Attributes from a Custom Function

2013-12-09 Thread Mukundaraman valakumaresan
Hi Hoss,

Thanks a lot for your response. The actual problem is,

For every record that I query, I have to execute a formula and sort the
records based on the value of the formula.
The formula has elements from the record.

For eg. for the following document ,I need to apply the formula (maxprice -
solrprice)/ (maxprice - minprice)  +  count(cities)/totalcities.
where maxprice, maxprice and total cities will be available at run time.

So for the following record, it has to execute as  (1 -
*5000*)/(1-2000)
+ *2*/5   (where 5000 and 2, which are in bold are from the document)

doc
field name=idapartment_1/field
field name=nameCasa Grande/field
field name=localitychennai/field
field name=localitybangalore/field
field name=price5000/field
/doc

Thanks  Regards
Mukund



On Tue, Dec 10, 2013 at 12:22 AM, Chris Hostetter
hossman_luc...@fucit.orgwrote:


 Smells like an XY problem ...

 Can you please describe what your end goal is in writing a custom
 function, and what you would do with things like the name field inside
 your funciton?

 In general, accessing stored field values for indexed documents ca be
 prohibitively expensive, it rather defeats the entire point of the
 inverted index data structure.  If you help us understand what your goal
 is, people may be able to offer performant suggestions.



 https://people.apache.org/~hossman/#xyproblem
 XY Problem

 Your question appears to be an XY Problem ... that is: you are dealing
 with X, you are assuming Y will help you, and you are asking about Y
 without giving more details about the X so that we can understand the
 full issue.  Perhaps the best solution doesn't involve Y at all?
 See Also: http://www.perlmonks.org/index.pl?node_id=542341




 : Date: Mon, 9 Dec 2013 20:24:15 +0530
 : From: Mukundaraman valakumaresan muk...@8kmiles.com
 : Reply-To: solr-user@lucene.apache.org
 : To: solr-user@lucene.apache.org
 : Subject: Getting Solr Document Attributes from a Custom Function
 :
 : Hi All,
 :
 : I have a written a custom solr function and I would like to read a
 property
 : of the document inside my custom function. Is it possible to get that
 using
 : Solr?
 :
 : For eg. inside the floatVal method, I would like to get the value of the
 : attribute name
 :
 : public class CustomValueSource extends ValueSource {
 :
 : @Override
 : public FunctionValues getValues(Map context,
 : AtomicReaderContext readerContext) throws IOException {
 :  return new FloatDocValues(this) { @Override public float floatVal(int
 doc)
 : {
 : /***
 :  getDocument(doc).getAttribute(name)
 :
 : / }}}
 :
 : Thanks  Regards
 : Mukund
 :

 -Hoss
 http://www.lucidworks.com/



Re: Getting Solr Document Attributes from a Custom Function

2013-12-09 Thread Kydryavtsev Andrey
You can implement it in this way:
Index number of cities as new int field (like field 
name=numberOfCities2/field) and implement user function like

customFunction(price, numberOfCities, 1, 2000, 5)

Custom parser should parse this into value sources list. From first two field 
sources we can get per doc value for this particular fields, another three will 
be ConstValueSource instances - just constants, so we can access all 5 values 
and implement custom formula per doc id. Find examples in ValueSourceParser and 
solr functions like DefFunction or MinFloatFunction

10.12.2013, 09:31, Mukundaraman valakumaresan muk...@8kmiles.com:
 Hi Hoss,

 Thanks a lot for your response. The actual problem is,

 For every record that I query, I have to execute a formula and sort the
 records based on the value of the formula.
 The formula has elements from the record.

 For eg. for the following document ,I need to apply the formula (maxprice -
 solrprice)/ (maxprice - minprice)  +  count(cities)/totalcities.
 where maxprice, maxprice and total cities will be available at run time.

 So for the following record, it has to execute as  (1 -
 *5000*)/(1-2000)
 + *2*/5   (where 5000 and 2, which are in bold are from the document)

 doc
 field name=idapartment_1/field
 field name=nameCasa Grande/field
 field name=localitychennai/field
 field name=localitybangalore/field
 field name=price5000/field
 /doc

 Thanks  Regards
 Mukund

 On Tue, Dec 10, 2013 at 12:22 AM, Chris Hostetter
 hossman_luc...@fucit.orgwrote:

  Smells like an XY problem ...

  Can you please describe what your end goal is in writing a custom
  function, and what you would do with things like the name field inside
  your funciton?

  In general, accessing stored field values for indexed documents ca be
  prohibitively expensive, it rather defeats the entire point of the
  inverted index data structure.  If you help us understand what your goal
  is, people may be able to offer performant suggestions.

  https://people.apache.org/~hossman/#xyproblem
  XY Problem

  Your question appears to be an XY Problem ... that is: you are dealing
  with X, you are assuming Y will help you, and you are asking about Y
  without giving more details about the X so that we can understand the
  full issue.  Perhaps the best solution doesn't involve Y at all?
  See Also: http://www.perlmonks.org/index.pl?node_id=542341

  : Date: Mon, 9 Dec 2013 20:24:15 +0530
  : From: Mukundaraman valakumaresan muk...@8kmiles.com
  : Reply-To: solr-user@lucene.apache.org
  : To: solr-user@lucene.apache.org
  : Subject: Getting Solr Document Attributes from a Custom Function
  :
  : Hi All,
  :
  : I have a written a custom solr function and I would like to read a
  property
  : of the document inside my custom function. Is it possible to get that
  using
  : Solr?
  :
  : For eg. inside the floatVal method, I would like to get the value of the
  : attribute name
  :
  : public class CustomValueSource extends ValueSource {
  :
  : @Override
  : public FunctionValues getValues(Map context,
  : AtomicReaderContext readerContext) throws IOException {
  :  return new FloatDocValues(this) { @Override public float floatVal(int
  doc)
  : {
  : /***
  :  getDocument(doc).getAttribute(name)
  :
  : / }}}
  :
  : Thanks  Regards
  : Mukund
  :

  -Hoss
  http://www.lucidworks.com/