[ https://issues.apache.org/jira/browse/LUCENE-6569?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hoss Man resolved LUCENE-6569. ------------------------------ Resolution: Fixed Fix Version/s: Trunk 5.3 Thanks! > MultiFunction.anyExists - creating FunctionValues[] objects for every document > ------------------------------------------------------------------------------ > > Key: LUCENE-6569 > URL: https://issues.apache.org/jira/browse/LUCENE-6569 > Project: Lucene - Core > Issue Type: Improvement > Reporter: Jacob Graves > Assignee: Hoss Man > Priority: Minor > Labels: easyfix, newbie, patch, performance > Fix For: 5.3, Trunk > > Attachments: SOLR-7618.patch, SOLR-7618.patch > > Original Estimate: 2h > Remaining Estimate: 2h > > 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: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org