Hi Tony, Have you seen the TermVectorComponent<http://wiki.apache.org/solr/TermVectorComponent>? It will return the TermVectors for the documents in your result set (note that the rows parameter matters if you want results for the whole set, the default is 10). TermVectors also must be stored for each field that you want term frequency returned for. Suppose you have the query http://localhost:8983/solr/collection1/tvrh?q=cable&fl=includes&tv.tf=true on the example that comes packaged with Solr. Then part of the response is:
<lst name="termVectors"> <str name="uniqueKeyFieldName">id</str> <lst name="IW-02"> <str name="uniqueKey">IW-02</str> </lst> <lst name="9885A004"> <str name="uniqueKey">9885A004</str> <lst name="includes"> <lst name="32mb"> <int name="tf">1</int> </lst> <lst name="av"> <int name="tf">1</int> </lst> <lst name="battery"> <int name="tf">1</int> </lst> <lst name="cable"> <int name="tf">2</int> </lst> <lst name="card"> <int name="tf">1</int> </lst> <lst name="sd"> <int name="tf">1</int> </lst> <lst name="usb"> <int name="tf">1</int> </lst> </lst> </lst> <lst name="3007WFP"> <str name="uniqueKey">3007WFP</str> <lst name="includes"> <lst name="cable"> <int name="tf">1</int> </lst> <lst name="usb"> <int name="tf">1</int> </lst> </lst> </lst> <lst name="MA147LL/A"> <str name="uniqueKey">MA147LL/A</str> <lst name="includes"> <lst name="cable"> <int name="tf">1</int> </lst> <lst name="earbud"> <int name="tf">1</int> </lst> <lst name="headphones"> <int name="tf">1</int> </lst> <lst name="usb"> <int name="tf">1</int> </lst> </lst> </lst> </lst> Then you can use an XPath query like sum(//lst[@name='cable']/int[@name='tf']) where 'cable' was the term, to calculate the term frequency in the 'includes' field for the whole result set. You could extend this to get the term frequency across all fields for your result set with some alterations to the query and schema.xml configuration. Alternately you could get the response as json (wt=json) and use javascript to sum. I know this is not terribly efficient but, if I'm understanding your request correctly, it's possible. Cheers, Tricia On Thu, Jul 4, 2013 at 10:24 AM, Tony Mullins <tonymullins...@gmail.com>wrote: > So what is the workaround for this problem ? > Can it be done without changing any source code ? > > Thanks, > Tony > > > On Thu, Jul 4, 2013 at 8:01 PM, Yonik Seeley <yo...@lucidworks.com> wrote: > > > Ah, sorry - I thought you were after docfreq, not termfreq. > > -Yonik > > http://lucidworks.com > > > > On Thu, Jul 4, 2013 at 10:57 AM, Tony Mullins <tonymullins...@gmail.com> > > wrote: > > > Hi Yonik, > > > > > > With facet it didn't work. > > > > > > Please see the result set doc below > > > > > > > > > http://localhost:8080/solr/collection2/select?fl=*,amazing_freq:termfreq%28product,%27amazing%27%29,spider_freq:termfreq%28product,%27spider%27%29&fq=id%3A27&q=spider&fl=*&df=product&wt=xml&indent=true&facet=true&facet.query=product:spider&facet.query=product:amazing&rows=20 > > > > > > <doc> > > > <str name="id">27</str> > > > <str name="type">Movies</str> > > > <str name="format">dvd</str> > > > <str name="product">The amazing spider man is amazing spider the > > > spider</str> > > > <int name="popularity">1</int> > > > <long name="_version_">1439641369145507840</long> > > > > > > <int name="amazing_freq">2</int> > > > <int name="spider_freq">3</int> > > > </doc> > > > </result><lst name="facet_counts"><lst name="facet_queries"> > > > <int name="product:spider">1</int> > > > <int name="product:amazing">1</int> > > > </lst> > > > > > > As you can see facet is actually just returning the no. of docs found > > > against those keywrods not the actual frequency. > > > Actual frequency is returned by the field 'amazing_freq' & > 'spider_freq' > > ! > > > > > > So is there any workaround for this to get the total of term-frequency > in > > > resultset without any modification to Solr source code ? > > > > > > > > > Thanks, > > > Tony > > > > > > > > > On Thu, Jul 4, 2013 at 7:05 PM, Yonik Seeley <yo...@lucidworks.com> > > wrote: > > > > > >> If you just want to retrieve those counts, this seems like simple > > faceting. > > >> > > >> q=something > > >> facet=true > > >> facet.query=product:hunger > > >> facet.query=product:games > > >> > > >> -Yonik > > >> http://lucidworks.com > > >> > > >> On Thu, Jul 4, 2013 at 9:45 AM, Tony Mullins < > tonymullins...@gmail.com> > > >> wrote: > > >> > Hi , > > >> > > > >> > I have lots of crawled data, indexed in my Solr (4.3.0) and lets say > > user > > >> > creates a search criteria 'X1' and he/she wants to know the > occurrence > > >> of a > > >> > specific term in the result set of that 'X1' search criteria. > > >> > And then again he/she creates another search criteria 'X2' and > he/she > > >> wants > > >> > to know the occurrence of that same term in the result set of that > > 'X2' > > >> > search criteria. > > >> > > > >> > At the moment if I give termfreq(field,term) then it gives me the > term > > >> > frequency per document and if I use totaltermfreq(field,term), it > > gives > > >> me > > >> > the total term frequency in entire index not in the result set of my > > >> search > > >> > criteria. > > >> > > > >> > So what I need is your help to find how to how to get total > occurrence > > >> of a > > >> > term in query's result set. > > >> > > > >> > If this is my result set > > >> > > > >> > <doc> > > >> > <str name="type">Movies</str> > > >> > <str name="format">dvd</str> > > >> > <str name="product">The Hunger Games</str></doc> > > >> > > > >> > <doc> > > >> > <str name="type">Books</str> > > >> > <str name="format">paperback</str> > > >> > <str name="product">The Hunger Book</str></doc> > > >> > > > >> > And I am looking for term 'hunger' in product field then I want to > get > > >> > value = '2' , and if I am searching for term 'games' in product > field > > I > > >> > want to get value = '1' . > > >> > > > >> > Thanks, > > >> > Tony > > >> > > >