Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Solr Wiki" for change 
notification.

The "FunctionQuery" page has been changed by GrantIngersoll.
http://wiki.apache.org/solr/FunctionQuery?action=diff&rev1=30&rev2=31

--------------------------------------------------

  == constant ==
  <!> [[Solr1.3]] Floating point constants.
  
+  . Example Syntax: '''1.5''' SolrQuerySyntax Example: '''_val_:1.5'''
-  . Example Syntax: '''1.5'''
-  SolrQuerySyntax Example: '''_val_:1.5'''
  
  == fieldvalue ==
  This function returns the numeric field value of an indexed field with a 
maximum of one value per document (not multiValued).  The syntax is simply the 
field name by itself.  0 is returned for documents without a value in the field.
  
+  . Example Syntax: '''myFloatField''' SolrQuerySyntax Example: 
'''_val_:myFloatField'''
-  . Example Syntax: '''myFloatField'''
-  SolrQuerySyntax Example: '''_val_:myFloatField'''
  
  == ord ==
  ord(myfield) returns the ordinal of the indexed field value within the 
indexed list of terms for that field in lucene index order (lexicographically 
ordered by unicode value), starting at 1. In other words, for a given field, 
all values are ordered lexicographically; this function then returns the offset 
of a particular value in that ordering. The field must have a maximum of one 
value per document (not multiValued).  0 is returned for documents without a 
value in the field.
  
   . Example: If there were only three values for a particular field: 
"apple","banana","pear", then ord("apple")=1, ord("banana")=2, ord("pear")=3
+  Example Syntax: '''ord(myIndexedField)''' Example SolrQuerySyntax: 
'''_val_:"ord(myIndexedField)"'''
-  Example Syntax: '''ord(myIndexedField)'''
-  Example SolrQuerySyntax: '''_val_:"ord(myIndexedField)"'''
  
  WARNING: as of Solr 1.4, ord() and rord() can cause excess memory use since 
they must use a FieldCache entry at the top level reader, while sorting and 
function queries now use entries at the segment level.  Hence sorting or using 
a different function query, in addition to ord()/rord() will double memory use.
  
@@ -47, +44 @@

  == rord ==
  The reverse ordering of what ord provides.
  
-  . Example Syntax: '''rord(myIndexedField)'''
-  Example: '''rord(myDateField)''' is a metric for how old a document is: the 
youngest document will return 1, the oldest document will return the total 
number of documents.
+  . Example Syntax: '''rord(myIndexedField)''' Example: 
'''rord(myDateField)''' is a metric for how old a document is: the youngest 
document will return 1, the oldest document will return the total number of 
documents.
  
  WARNING: as of Solr 1.4, ord() and rord() can cause excess memory use since 
they must use a FieldCache entry at the top level reader, while sorting and 
function queries now use entries at the segment level.  Hence sorting or using 
a different function query, in addition to ord()/rord() will double memory use.
  
  == sum ==
  <!> [[Solr1.3]] sum(x,y,...) returns the sum of multiple functions.
  
+  . Example Syntax: '''sum(x,1)''' Example Syntax: '''sum(x,y)''' Example 
Syntax: '''sum(sqrt(x),log(y),z,0.5)'''
-  . Example Syntax: '''sum(x,1)'''
-  Example Syntax: '''sum(x,y)'''
-  Example Syntax: '''sum(sqrt(x),log(y),z,0.5)'''
  
  == sub ==
  <!> [[Solr1.4]] sub(x,y) returns x-y
  
+  . Example: '''sub(myfield,myfield2)''' Example: '''sub(100,sqrt(myfield))'''
-  . Example: '''sub(myfield,myfield2)'''
-  Example: '''sub(100,sqrt(myfield))'''
  
  == product ==
  <!> [[Solr1.3]] product(x,y,...) returns the product of multiple functions.
  
+  . Example Syntax: '''product(x,2)''' Example Syntax: '''product(x,y)'''
-  . Example Syntax: '''product(x,2)'''
-  Example Syntax: '''product(x,y)'''
  
  == div ==
  <!> [[Solr1.3]] div(x,y) divides the function x by the function y.
  
+  . Example Syntax: '''div(1,x)''' Example Syntax: 
'''div(sum(x,100),max(y,1))'''
-  . Example Syntax: '''div(1,x)'''
-  Example Syntax: '''div(sum(x,100),max(y,1))'''
  
  == pow ==
  <!> [[Solr1.3]] pow(x,y) raises the base x to the power y.
  
+  . Example Syntax: '''pow(x,0.5)'''   same as sqrt Example Syntax: 
'''pow(x,log(y))'''
-  . Example Syntax: '''pow(x,0.5)'''   same as sqrt
-  Example Syntax: '''pow(x,log(y))'''
  
  == abs ==
  <!> [[Solr1.3]] abs(x) returns the absolute value of a function.
  
+  . Example Syntax: '''abs(-5)''' Example Syntax: '''abs(x)'''
-  . Example Syntax: '''abs(-5)'''
-  Example Syntax: '''abs(x)'''
  
  == log ==
  <!> [[Solr1.3]] log(x) returns log base 10 of the function x.
  
+  . Example Syntax: '''log(x)''' Example Syntax: '''log(sum(x,100))'''
-  . Example Syntax: '''log(x)'''
-  Example Syntax: '''log(sum(x,100))'''
  
  == sqrt ==
  <!> [[Solr1.3]] sqrt(x) returns the square root of the function x
  
+  . Example Syntax: '''sqrt(2)''' Example Syntax: '''sqrt(sum(x,100))'''
-  . Example Syntax: '''sqrt(2)'''
-  Example Syntax: '''sqrt(sum(x,100))'''
  
  == map ==
  <!> [[Solr1.3]] map(x,min,max,target) maps any values of the function x that 
fall within min and max inclusive to target.  min,max,target are constants. It 
outputs the field's value if it does not fall between min and max.
  
-  . Example Syntax 1: '''map(x,0,0,1)'''  change any values of 0 to 1... 
useful in handling default 0 values
-  Example Syntax 2 <!> [[Solr1.4]]: '''map(x,0,0,1,0)'''  change any values of 
0 to 1 . and if the value is not zero it can be set to the value of the 5th 
argument instead of defaulting to the field's value
+  . Example Syntax 1: '''map(x,0,0,1)'''  change any values of 0 to 1... 
useful in handling default 0 values Example Syntax 2 <!> [[Solr1.4]]: 
'''map(x,0,0,1,0)'''  change any values of 0 to 1 . and if the value is not 
zero it can be set to the value of the 5th argument instead of defaulting to 
the field's value
  
  == scale ==
  <!> [[Solr1.3]] scale(x,minTarget,maxTarget) scales values of the function x 
such that they fall between minTarget and maxTarget inclusive.
  
-  . Example Syntax: '''scale(x,1,2)'''  all values will be between 1 and 2 
inclusive. NOTE: The current implementation currently traverses all of the 
function values to obtain the min and max so it can pick the correct scale.
-  NOTE: This implementation currently cannot distinguish when documents have 
been deleted or documents that have no value, and 0.0 values will be used for 
these cases.  This means that if values are normally all greater than 0.0, one 
can still end up with 0.0 as the min value to map from.  In these cases, an 
appropriate map() function could be used as a workaround to change 0.0 to a 
value in the real range.  example: '''scale(map(x,0,0,5),1,2)'''
+  . Example Syntax: '''scale(x,1,2)'''  all values will be between 1 and 2 
inclusive. NOTE: The current implementation currently traverses all of the 
function values to obtain the min and max so it can pick the correct scale. 
NOTE: This implementation currently cannot distinguish when documents have been 
deleted or documents that have no value, and 0.0 values will be used for these 
cases.  This means that if values are normally all greater than 0.0, one can 
still end up with 0.0 as the min value to map from.  In these cases, an 
appropriate map() function could be used as a workaround to change 0.0 to a 
value in the real range.  example: '''scale(map(x,0,0,5),1,2)'''
  
  == query ==
  <!> [[Solr1.4]] query(subquery, default) returns the score for the given 
subquery, or the default value for documents not matching the query.  Any type 
of subquery is supported through either parameter dereferencing 
{{{$otherparam}}} or direct specification of the query string in the 
LocalParams via "v".
  
+  . Example Syntax: '''q=product(popularity, query({!dismax v='solr 
rocks'})''' returns the product of the popularity and the score of the dismax 
query. Example Syntax: '''q=product(popularity, query($qq))&qq={!dismax}solr 
rocks''' is equivalent to the previous query, using param dereferencing. 
Example Syntax: '''q=product(popularity, query($qq,0.1))&qq={!dismax}solr 
rocks''' specifies a default score of 0.1 for documents that don't match the 
dismax query.
-  . Example Syntax: '''q=product(popularity, query({!dismax v='solr 
rocks'})''' returns the product of the popularity and the score of the dismax 
query.
-  Example Syntax: '''q=product(popularity, query($qq))&qq={!dismax}solr 
rocks''' is equivalent to the previous query, using param dereferencing.
-  Example Syntax: '''q=product(popularity, query($qq,0.1))&qq={!dismax}solr 
rocks''' specifies a default score of 0.1 for documents that don't match the 
dismax query.
  
  == linear ==
  linear(x,m,c) implements m*x+c where m and c are constants and x is an 
arbitrary function.  This is equivalent to '''sum(product(m,x),c)''', but 
slightly more efficient as it is implemented as a single function.
@@ -155, +138 @@

  '''ms(a)'''
  
   . Returns the number of milliseconds since the epoch that the argument 
represents.
+  Example: '''ms(NOW/DAY)''' Example: '''ms(2000-01-01T00:00:00Z)''' Example: 
'''ms(mydatefield)'''
-  Example: '''ms(NOW/DAY)'''
-  Example: '''ms(2000-01-01T00:00:00Z)'''
-  Example: '''ms(mydatefield)'''
  
  '''ms(a,b)'''
  
-  . Returns the number of milliseconds that {{{b}}} occurs before {{{a}}} 
(i.e. {{{a - b}}}).  Note that this offers higher precision than '''sub(a,b)''' 
because the arguments are not converted to floating point numbers before 
subtraction.
+  . Returns the number of milliseconds that {{{b}}} occurs before {{{a}}} 
(i.e. {{{a - b}}}).  Note that this offers higher precision than '''sub(a,b)''' 
because the arguments are not converted to floating point numbers before 
subtraction. Example: '''ms(NOW,mydatefield)''' Example: 
'''ms(mydatefield,2000-01-01T00:00:00Z)''' Example: 
'''ms(datefield1,datefield2)'''
-  Example: '''ms(NOW,mydatefield)'''
-  Example: '''ms(mydatefield,2000-01-01T00:00:00Z)'''
-  Example: '''ms(datefield1,datefield2)'''
  
  == dist ==
  [[Solr1.5]]
  
- Return the Distance between two Vectors (points) in an n-dimensional space.  
See http://en.wikipedia.org/wiki/Lp_space for more information.  Takes in the 
power, plus two or more !ValueSource instances and calculates the distances 
between the two vectors.  Each !ValueSource must be a number.
+ Return the Distance between two Vectors (points) in an n-dimensional space.  
See http://en.wikipedia.org/wiki/Lp_space for more information.  Takes in the 
power, plus two or more !ValueSource instances and calculates the distances 
between the two vectors.  Each !ValueSource must be a number.  There must be an 
even number of !ValueSource instances passed in and the method assumes that the 
first half represent the first vector and the second half represent the second 
vector.
+ 
+ Signature: dist(power, pointA, pointB, ...)
  
  Common cases:
  
-  ||<tablestyle="width: 467px; height: 88px;">Power ||Common Name ||
+  ||<tablewidth="467px" tableheight="88px" tablestyle="">Power ||Common Name ||
   ||0 ||Sparseness calculation ||
-  ||1||Manhattan (taxicab) Distance||
+  ||1 ||Manhattan (taxicab) Distance ||
-  ||2||Euclidean Distance||
+  ||2 ||Euclidean Distance ||
-  ||Infinite||Infinite norm - maximum value in the vector||
+  ||Infinite ||Infinite norm - maximum value in the vector ||
  
  
+ 
+ Example: Assume each document has 4 numeric fields: x,y,z,w.  Then we can 
calculate various distances:
+ 
+  1. dist(2, x, y, 0, 0) - calculates the Euclidean distance between (0,0) and 
(x,y) for each document
+ 
+  1. dist(1, x, y, 0, 0) - calculates the Manhattan distance between (0,0) and 
(x,y) for each document
+ 
+  1. dist(2, x,y,z,0,0,0) - Euclidean distance between (0,0,0) and (x,y,z) for 
each document.
  
  === Date Boosting ===
  Boosting more recent content is a common use case.  One way is to use a 
{{{recip}}} function in conjunction with {{{ms}}}.

Reply via email to