You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@lucene.apache.org by "Hoss Man (JIRA)" <ji...@apache.org> on 2016/08/05 01:27:20 UTC
[jira] [Commented] (SOLR-9377) [subquery] augmenter doesn't work
with RTG on uncommited docs
[ https://issues.apache.org/jira/browse/SOLR-9377?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15408746#comment-15408746 ]
Hoss Man commented on SOLR-9377:
--------------------------------
I spent some time today looking into this and how to "fix" it.
My initial impression was that {{SubQueryAugmenter(Factory)}} was doing more work then it needed to. It currently creates an {{EmbeddedSolrServer(req.getCore())}} and operates at the (solrj) "{{QueryRequest}}/{{QueryResponse}}" level to execute the "subquery", pulling back a {{SolrDocumentList}} to populate it's own custom {{Result extends ResultContext}} for each document.
My thinking was, we could bypass {{EmbeddedSolrServer}} by just asking the {{SolrCore}} to execute a {{SolrQueryRequest}} we create directly around the realtime searcher (see below), and then use the {{DocList}} from the resulting {{SolrQueryResponse}} along w/ the other pieces we've accumulated to create a regular old {{BasicResultContext}} for each document. ala...
{code}
private static class SubQuerySolrQueryRequest extends SolrQueryRequestBase {
// we'd pass the ResultContext.getSearcher() here, so these queries would have access to the
// realtime seracher if we're used in an RTG request...
public SubQuerySolrQueryRequest(SolrCore core, SolrParams params, RefCounted<SolrIndexSearcher> searcherHolder) {
super(core, params);
this.searcherHolder = searcherHolder;
}
}
{code}
The problem with this idea is the {{fromIndex}} param that this transformer supports. It leans heavily on the existing code in {{EmbeddedSolrServer.request(...)}} method logic to figure out the correct core to use. We'd have to refactor/unwind/duplicate some of that in order to operate directly at the "go get a core by name, now execute a SubQuerySolrQueryRequest against it" layer of the abstraction.
----
Ultimately i'm starting to wonder if the current behavior is actually the best/correct behavior?
In the test code that lead me to file this bug (see TestRandomFlRTGCloud & SubQueryValidator) the "problems" that arise are because the validation code for the {{\[subquery\]}} I'm using expects (at least) the original document to match the subquery against one of it's field values -- and when it's read from the tlog it doesn't because the realtime searcher is not used.
Perhaps that's ok? Perhaps the only thing that's really important is that _values_ from the doc used when building the subquery are accurate, and come from the tlog, and the query itself can (or perhaps _MUST_?) still be run against the same currently open searcher as if the user ran that subquery themselves?
----
[~mkhludnev]: do you have any opinions on what we should consider the "correct" behavior in this situation?
> [subquery] augmenter doesn't work with RTG on uncommited docs
> -------------------------------------------------------------
>
> Key: SOLR-9377
> URL: https://issues.apache.org/jira/browse/SOLR-9377
> Project: Solr
> Issue Type: Bug
> Security Level: Public(Default Security Level. Issues are Public)
> Reporter: Hoss Man
>
> Spinning off from SOLR-9314...
> The {{[subquery]}} DocTransformer can give unexpected results when used with RTG on uncommitted docs.
> Test code demonstrating the problem is being added to TestRandomFlRTGCloud as part of SOLR-9314, but it's being disabled for now due to this current bug. As noted in that jira...
> {quote}
> The subquery validation tries to search for all docs with teh same field value as the current doc, asserting that there is always at least 1 match – but this assertion currently fails ... by the looks of it this is (obviously) because it doesn't know to to use the realtime seracher re-opened by the RTG ... but based on how the SubQueryAugmenter is implemented, i'm not even certain how to go about it.
> {quote}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@lucene.apache.org
For additional commands, e-mail: dev-help@lucene.apache.org