As detailed in previous email, "termfreq" is not a "field" - it is a
"transformer" or function. Technically, it is actually a "ValueSource".
If you look at the TextResponseWriter.writeVal method you can see you it
kicks off the execution of transformers for writing documents.
-- Jack Krupansky
-----Original Message-----
From: Tony Mullins
Sent: Thursday, July 18, 2013 2:49 AM
To: solr-user@lucene.apache.org
Subject: Re: Doc's FunctionQuery result field in my custom SearchComponent
class ?
Eric ,
In freq:termfreq(product,'spider') , freq is alias for 'termfreq' function
query so I could have that field with name 'freq' in document response.
this is my code which I am using to get document object and there is no
termfreq field in its fields collection.
DocList docs = rb.getResults().docList;
DocIterator iterator = docs.iterator();
int sumFreq = 0;
String id = null;
for (int i = 0; i < docs.size(); i++) {
try {
int docId = iterator.nextDoc();
// Document doc = searcher.doc(docId, fieldSet);
Document doc = searcher.doc(docId);
Thanks,
Tony
On Wed, Jul 17, 2013 at 5:30 PM, Erick Erickson
<erickerick...@gmail.com>wrote:
Where are you getting the syntax
freq:termfreq(product,'spider')
? Try just
termfreq(product,'spider')
you'll get an element in the doc labeled 'termfreq', at least
I do.
Best
Erick
On Tue, Jul 16, 2013 at 1:03 PM, Tony Mullins <tonymullins...@gmail.com>
wrote:
> OK, So thats why I cannot see the FunctionQuery fields in my
> SearchComponent class.
> So then question would be how can I apply my custom processing/logic to
> these FunctionQuery ? Whats the ExtensionPoint in Solr for such
scenarios ?
>
> Basically I want to call termfreq() for each document and then apply the
> sum to all doc's termfreq() results and show in one aggregated TermFreq
> field in my query response.
>
> Thanks.
> Tony
>
>
>
> On Tue, Jul 16, 2013 at 6:01 PM, Jack Krupansky <j...@basetechnology.com
>wrote:
>
>> Basically, the evaluation of function queries in the "fl" parameter
occurs
>> when the response writer is composing the document results. That's
>> AFTER
>> all of the search components are done.
>>
>> SolrReturnFields.**getTransformer() gets the DocTransformer, which is
>> really a DocTransformers, and then a call to
DocTransformers.transform() in
>> each response writer will evaluate the embedded function queries and
insert
>> their values in the results as they are being written.
>>
>> -- Jack Krupansky
>>
>> -----Original Message----- From: Tony Mullins
>> Sent: Tuesday, July 16, 2013 1:37 AM
>> To: solr-user@lucene.apache.org
>> Subject: Re: Doc's FunctionQuery result field in my custom
SearchComponent
>> class ?
>>
>>
>> No sorry, I am still not getting the termfreq() field in my 'doc'
object.
>> I do get the _version_ field in my 'doc' object which I think is
>> realValue=StoredField.
>>
>> At which point termfreq() or any other FunctionQuery field becomes the
part
>> of doc object in Solr ? And at that point can I perform some custom
logic
>> and append the response ?
>>
>> Thanks.
>> Tony
>>
>>
>>
>>
>>
>> On Tue, Jul 16, 2013 at 1:34 AM, Patanachai Tangchaisin <
>> patanachai.tangchaisin@**wizecommerce.com<
patanachai.tangchai...@wizecommerce.com>>
>> wrote:
>>
>> Hi,
>>>
>>> I think the process of retrieving a stored field (through fl) is
happens
>>> after SearchComponent.
>>>
>>> One solution: If you wrap a q params with function your score will be
>>> a
>>> result of the function.
>>> For example,
>>>
>>> http://localhost:8080/solr/****collection2/demoendpoint?q=**<
http://localhost:8080/solr/**collection2/demoendpoint?q=**>
>>>
termfreq%28product,%27spider%****27%29&wt=xml&indent=true&fl=***,**score<
>>> http://localhost:**8080/solr/collection2/**demoendpoint?q=termfreq%**
>>> 28product,%27spider%27%29&wt=**xml&indent=true&fl=*,score<
http://localhost:8080/solr/collection2/demoendpoint?q=termfreq%28product,%27spider%27%29&wt=xml&indent=true&fl=*,score
>
>>> >
>>>
>>>
>>>
>>> Now your score is going to be a result of termfreq(product,'spider')
>>>
>>>
>>> --
>>> Patanachai Tangchaisin
>>>
>>>
>>>
>>> On 07/15/2013 12:01 PM, Tony Mullins wrote:
>>>
>>> any help plz !!!
>>>>
>>>>
>>>> On Mon, Jul 15, 2013 at 4:13 PM, Tony Mullins <
tonymullins...@gmail.com
>>>> >*
>>>> *wrote:
>>>>
>>>>
>>>> Please any help on how to get the value of 'freq' field in my custom
>>>>
>>>>> SearchComponent ?
>>>>>
>>>>>
>>>>> http://localhost:8080/solr/****collection2/demoendpoint?q=**<
http://localhost:8080/solr/**collection2/demoendpoint?q=**>
>>>>> spider&wt=xml&indent=true&fl=*****,freq:termfreq%28product,%**
>>>>> 27spider%27%29<http://**localhost:8080/solr/**
>>>>> collection2/demoendpoint?q=**spider&wt=xml&indent=true&fl=***
>>>>> ,freq:termfreq%28product,%**27spider%27%29<
http://localhost:8080/solr/collection2/demoendpoint?q=spider&wt=xml&indent=true&fl=*,freq:termfreq%28product,%27spider%27%29
>
>>>>> >
>>>>>
>>>>>
>>>>> <doc><str name="id">11</str><str name="type">Video Games</str><str
>>>>> name="format">xbox 360</str><str name="product">The Amazing
>>>>> Spider-Man</str><int name="popularity">11</int><****long
>>>>> name="_version_">****1439994081345273856</long><int
>>>>>
>>>>> name="freq">1</int></doc>
>>>>>
>>>>>
>>>>>
>>>>> Here is my code
>>>>>
>>>>> DocList docs = rb.getResults().docList;
>>>>> DocIterator iterator = docs.iterator();
>>>>> int sumFreq = 0;
>>>>> String id = null;
>>>>>
>>>>> for (int i = 0; i < docs.size(); i++) {
>>>>> try {
>>>>> int docId = iterator.nextDoc();
>>>>>
>>>>> // Document doc = searcher.doc(docId, fieldSet);
>>>>> Document doc = searcher.doc(docId);
>>>>>
>>>>> In doc object I can see the schema fields like 'id', 'type','format'
>>>>> etc.
>>>>> but I cannot find the field 'freq' which I needed. Is there any way
to
>>>>> get
>>>>> the FunctionQuery fields in doc object ?
>>>>>
>>>>> Thanks,
>>>>> Tony
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Jul 15, 2013 at 1:16 PM, Tony Mullins <
tonymullins...@gmail.com
>>>>> >
>>>>> **wrote:
>>>>>
>>>>> Hi,
>>>>>
>>>>>>
>>>>>> I have extended Solr's SearchComonent class and I am iterating
through
>>>>>> all the docs in ResponseBuilder in @overrider Process() method.
>>>>>>
>>>>>> Here I want to get the value of FucntionQuery result but in
>>>>>> Document
>>>>>> object I am only seeing the standard field of document not the
>>>>>> FucntionQuery result.
>>>>>>
>>>>>> This is my query
>>>>>>
>>>>>>
>>>>>> http://localhost:8080/solr/****collection2/demoendpoint?q=**<
http://localhost:8080/solr/**collection2/demoendpoint?q=**>
>>>>>> spider&wt=xml&indent=true&fl=*****,freq:termfreq%28product,%**
>>>>>> 27spider%27%29<http://**localhost:8080/solr/**
>>>>>> collection2/demoendpoint?q=**spider&wt=xml&indent=true&fl=***
>>>>>> ,freq:termfreq%28product,%**27spider%27%29<
http://localhost:8080/solr/collection2/demoendpoint?q=spider&wt=xml&indent=true&fl=*,freq:termfreq%28product,%27spider%27%29
>
>>>>>> >
>>>>>>
>>>>>>
>>>>>> Result of above query in browser shows me that 'freq' is part of
<doc>
>>>>>> but its not there in Document object in my @overrider Process()
method.
>>>>>>
>>>>>> How can I get the value of FunctionQuery result in my custom
>>>>>> SearchComponent ?
>>>>>>
>>>>>> Thanks,
>>>>>> Tony
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>> CONFIDENTIALITY NOTICE
>>> ======================
>>> This email message and any attachments are for the exclusive use of
>>> the
>>> intended recipient(s) and may contain confidential and privileged
>>> information. Any unauthorized review, use, disclosure or distribution
is
>>> prohibited. If you are not the intended recipient, please contact the
>>> sender by reply email and destroy all copies of the original message
along
>>> with any attachments, from your computer system. If you are the
intended
>>> recipient, please be advised that the content of this message is
subject
>>> to
>>> access, review and disclosure by the sender's Email System
Administrator.
>>>
>>>
>>>
>>