Jacob Graves created SOLR-7618:
----------------------------------
Summary: MultiFunction.anyExists - creating FunctionValues[]
objects for every document
Key: SOLR-7618
URL: https://issues.apache.org/jira/browse/SOLR-7618
Project: Solr
Issue Type: Bug
Components: SearchComponents - other
Affects Versions: 5.1
Reporter: Jacob Graves
Priority: Minor
Fix For: 5.1
In the class org.apache.lucene.queries.function.valuesource.MultiFunction there
is the following method signature (line 52)
public static boolean allExists(int doc, FunctionValues... values)
this method is called from the class
org.apache.lucene.queries.function.valuesource.DualFloatFunction (line 68)
public boolean exists(int doc) {
return MultiFunction.allExists(doc, aVals, bVals);
}
Because MultiFunction.allExists uses Java varargs syntax ("...") a new
FunctionValues[] object will be created every time this call takes place.
The problem is that the call takes place in a document level function, which
means that it will create new objects in the heap for every document in the
query results.
for example if you use the following boost function (where ds and dc1 are both
TrieDateField)
bf=min(ms(ds,dc1),604800000)
You will get extra objects created for each document in the result set, which
has a big impact on performance and memory usage if you are searching a large
result set.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]