Re: How to disable\clear filterCache(from SolrIndexSearcher ) in a custom searchComponent

2013-01-13 Thread Erick Erickson
I admit I only skimmed your post, and at the level you're at I'm not sure
how to hook it in, but see:
https://issues.apache.org/jira/browse/SOLR-2429(SOLR-3.4) which allows
you to specify cache=false which will specifically
NOT put the filter into the filter cache at the Solr level.

Best
Erick


On Fri, Jan 11, 2013 at 11:24 AM, radu radu.moldo...@atigeo.com wrote:

 Hello  thank you in advance for your help!,

 *Context:*
 I have implemented a custom search component that receives 3 parameters
 field, termValue and payloadX.
 The component should search for a termValue in the requested Lucene field
 and for each *termValue* to check *payloadX* in its associated payload the
 information.

 *Constraints:*
 I don't want to disable filterCache from solconfig.xml the filterCache
 class=solr.FastLRUCache  since I have other searchComponents that
 could use the filterCache.

 I have implemented this the payload search using SpanTermQuery and
 attached it to q:field=termValue
 public class MySearchComponent extends XPatternsSearchComponent {

 public void prepare(ResponseBuilder rb){
 ...   rb.setQueryString(parameters.**get(CommonParams.Q)...
 }

  public void process(ResponseBuilder rb) {
 ...

 SolrIndexSearcher.QueryResult queryResult = new
 SolrIndexSearcher.QueryResult(**);// ??? question for help

 *CustomSpanTermQuery* customFilterQuery = new CustomSpanTermQuery(field,
 term, payload); //search for payloadCriteria in the payload in a specific
 field for a specific term
 QueryCommand queryCommand = rb.getQueryCommand().**
 setFilterList(filterQuery));

 rb.req.getSearcher().search(**queryResult, queryCommand);

 ...
 }

 *Issue:*
 If I call the search component with field1, termValue1 and:
  - *payload1*(the first search) the result from filtering it is saved
 in filterCache.
  - *payload2*(second time) the results from the first
 search(filterCache) are returned and not a different expected result set.

 Findings:
 I noticed that in SolrIndexSearch, filterCache is private so I can not
 change\clear it through inheritance.
 Also I tried to use rb.getQueryCommand().**replaceFlags() but
 SolrIndexSearch.NO_CHECK_**FILTERCACHE|NO_CHECK_QCACHE|**NO_SET_QCACHE
 are not public too.

 *Question*:
 How to disable\clear filterCache(from SolrIndexSearcher ) *only *for a
 custom search component.
 Do  I have other options\approaches?

 Best regards,
 Radu



How to disable\clear filterCache(from SolrIndexSearcher ) in a custom searchComponent

2013-01-11 Thread radu

Hello  thank you in advance for your help!,

*Context:*
I have implemented a custom search component that receives 3 parameters 
field, termValue and payloadX.
The component should search for a termValue in the requested Lucene 
field and for each *termValue* to check *payloadX* in its associated 
payload the information.


*Constraints:*
I don't want to disable filterCache from solconfig.xml the filterCache 
class=solr.FastLRUCache  since I have other searchComponents that 
could use the filterCache.


I have implemented this the payload search using SpanTermQuery and 
attached it to q:field=termValue

public class MySearchComponent extends XPatternsSearchComponent {

public void prepare(ResponseBuilder rb){
...   rb.setQueryString(parameters.get(CommonParams.Q)...
}

 public void process(ResponseBuilder rb) {
...

SolrIndexSearcher.QueryResult queryResult = new 
SolrIndexSearcher.QueryResult();// ??? question for help


*CustomSpanTermQuery* customFilterQuery = new CustomSpanTermQuery(field, 
term, payload); //search for payloadCriteria in the payload in a 
specific field for a specific term
QueryCommand queryCommand = 
rb.getQueryCommand().setFilterList(filterQuery));


rb.req.getSearcher().search(queryResult, queryCommand);

...
}

*Issue:*
If I call the search component with field1, termValue1 and:
 - *payload1*(the first search) the result from filtering it is 
saved in filterCache.
 - *payload2*(second time) the results from the first 
search(filterCache) are returned and not a different expected result set.


Findings:
I noticed that in SolrIndexSearch, filterCache is private so I can 
not change\clear it through inheritance.
Also I tried to use rb.getQueryCommand().replaceFlags() but 
SolrIndexSearch.NO_CHECK_FILTERCACHE|NO_CHECK_QCACHE|NO_SET_QCACHE are 
not public too.


*Question*:
How to disable\clear filterCache(from SolrIndexSearcher ) *only 
*for a custom search component.

Do  I have other options\approaches?

Best regards,
Radu