Hi Hoss,

Thanks for sharing the knowledge on dangerous zones, will try to avoid
them. #2 is quite probable way of implementing this in my case, as many
Query objects are custom (although not all). But #1 is compelling too and
sounds like a bit less trouble.

On Tue, Dec 15, 2015 at 8:13 PM, Chris Hostetter <hossman_luc...@fucit.org>
wrote:

>
> : I think this is a legitimate request. Majority of the similarities are
> : compatible index wise. I think the only exception is sweet spot
> : similarity.
>
> I think you are grossly underestimating the risk of arbitrarily using diff
> Similarities between index time and query time -- particulaly in how norms
> are computed.  But for the sake of argument let's assuming you know what
> you are doing, you are careful, and you know that the index time
> similarity you used is compatibly with N diff query time similarities you
> want to choose between...
>
> : I wonder what solr-plugin would be best for this functionality.
> : How about a custom search component, in its prepare method?
> :
> : I think we can access (Solr)IndexSearcher inside a SearchComponent.
> : setSimilarity in the process method should work.
>
> this owuld be *very* dangerous to do, because the SolrIndexSearcher is
> shared across all requests -- so you'd get race conditions and
> non-deterministic behavior from diff queries not getting the similarity
> they expected.
>
> The only sane way to do this on a per-request basis would either be...
>
> 1) wrap the IndexSearcher in a new IndexSearcherWrapper that returned a
> per-request Similarity.
>
> 2) modify the Query objects themselves so that createWeight use the
> similarity you want instead of delegating to INdexSearcher.getSimilarity
> (see for example how BooleanQuery/BooleanWeight use the "disableCoord"
> property of the query to decide wether or not to care about
> Similarity.coord
>
>
> Depending on your real world usecase / goal, i would suspect that either
> way a QParser that wraps the constructed query is going to be the
> simplest/cleanest solution regardless of wether #1 or #2 makes the most
> sense -- perhaps even achieving #2 by using #1 so that createWeight in
> your new QueryWrapper class does the IndexSearcher wrapping before
> delegating.
>
>
>
>
> -Hoss
> http://www.lucidworks.com/
>



-- 
Dmitry Kan
Luke Toolbox: http://github.com/DmitryKey/luke
Blog: http://dmitrykan.blogspot.com
Twitter: http://twitter.com/dmitrykan
SemanticAnalyzer: www.semanticanalyzer.info

Reply via email to