Hi Ha,

I am the author of the blog post you mention. To your question, I don't
know if the code will work without change (since the Lucene/Solr API has
evolved so much over the last few years), but a more "preferred" way using
Function Queries way may be found in slides for Timothy Potter's talk here:
http://www.slideshare.net/thelabdude/boosting-documents-in-solr-lucene-revolution-2011

Here he speaks of external fields stored in a database and accessed using a
custom component (rather than from a flat file as in ExternalFieldField),
and using function queries to influence the ranking based on the external
field. However, per this document on function queries, you can use the
output of a function query to sort as well by passing the function to the
sort parameter.
https://wiki.apache.org/solr/FunctionQuery#Sort_By_Function

Hope this helps,
Sujit


On Fri, Apr 10, 2015 at 10:38 PM, Ahmet Arslan <iori...@yahoo.com.invalid>
wrote:

> Hi,
>
> Who don't you include/add/index those additional fields, at least the one
> used in sorting?
>
> Also, you may find
> https://stanbol.apache.org/docs/trunk/components/enhancer/ relevant.
>
> Ahmet
>
>
>
> On Saturday, April 11, 2015 1:04 AM, "ha.p...@arvatosystems.com" <
> ha.p...@arvatosystems.com> wrote:
> This ticket seems to address the problem I have
>
> https://issues.apache.org/jira/browse/SOLR-1566
>
>
>
> and as the result of that ticket, DocTransformer is added since Solr 4.0.
> I wrote a simple DocTransformer and found that the transformer is executed
> AFTER pagination. In our application, we need the external fields added
> before sorting/pagination. I've looked around for the option to change the
> execution order but haven't had any luck. Does anyone know the solution?
>
>
>
> The ticket also states "it is not possible for components to add fields to
> outgoing documents which are not in the stored fields of the document".
> Does anyone know if this is still true?
>
>
>
> Thanks,
>
>
>
> -Ha
>
>
>
>
>
> -----Original Message-----
>
> From: Pham, Ha
>
> Sent: Thursday, April 09, 2015 11:41 PM
>
> To: solr-user@lucene.apache.org
>
>
> Subject: Enrich search results with external data
>
>
>
> Hi everyone,
>
>
>
> We have a requirement to append external data (e.g. price/inventory of
> product, retrieved from an ERP via web services) to query result and
> support sorting and pagination based on those external fields. For example
> if Solr returns 100 records and the page size user selects is 20, the
> sorting on the external  fields is still on 100 records. This limits us
> from enriching search results outside of Solr. I guess this is a common
> problem so hopefully someone could share their experience.
>
>
>
> I am considering using a PostFilter and enrich documents in collect()
> method as below
>
>
>
> @Override
>
> public void collect(int docId) throws IOException { DoubleField price =
> new DoubleField ("PRICE", 1.23, Field.Store.YES); Document currentDoc =
> context.reader().document(docId); currentDoc.add(price); }
>
>
>
> but the result documents don't have PRICE fields. Did I miss anything here?
>
>
>
> I also did some research and it seems the approach mentioned here
> http://sujitpal.blogspot.com/2011/05/custom-sorting-in-solr-using-external.html
> is close to what we need to achieve but since the document is 4 years old,
> I don't know if there's a better approach for our problem (we are using
> solr 5.0)?
>
>
>
> Thanks,
>
>
>
> -Ha
>

Reply via email to