lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Mike Sokolov (JIRA)" <>
Subject [jira] [Commented] (LUCENE-8019) Add a root failure cause to Explanation
Date Tue, 31 Oct 2017 15:45:00 GMT


Mike Sokolov commented on LUCENE-8019:

I have a WIP impl of this that walks the Scorer tree, advancing and checking docID(). The
code is definitely cleaner and less intrusive than the previous patch. However, I ran into
an issue since the Scorer tree doesn't really mirror the original Query tree. A simple example
is a query like

    *:* -foo:1

This gets scored using a ReqExclScorer which has only a single child corresponding to the
MatchAllQuery and can't really be used to discover if a mis-match is due to matching the foo:1
term query.

So I think I need to walk the tree of Weights, as explain() does.

> Add a root failure cause to Explanation 
> ----------------------------------------
>                 Key: LUCENE-8019
>                 URL:
>             Project: Lucene - Core
>          Issue Type: New Feature
>            Reporter: Mike Sokolov
>         Attachments: LUCENE_8019.patch
> If you need to analyze the root cause of a query's failure to match some document, you
can use the Weight.explain() API. If you want to do some gross analysis of a whole batch of
queries, say scraped from a log, that once matched, but no longer do, perhaps after some refactoring
or other large-scale change, the Explanation isn't very good for that. You can try parsing
its textual output, which is pretty regular, but instead I found it convenient to add some
boolean structure to Explanation, and use that to find failing leaves on the Explanation tree,
and report only those.
> This patch adds a "condition" to each Explanation, which can be REQUIRED, OPTIONAL, PROHIBITED,
or NONE. The conditions correspond in obvious ways to the Boolean Occur, except for NONE,
which is used to indicate a node which can't be further decomposed. It adds new Explanation
construction methods for creating Explanations with conditions (defaulting to NONE with the
existing methods).
> Finally Explanation.getFailureCauses() returns a list of Strings that are the one-line
explanations of the failing queries that, if some of them had succeeded, would have made the
original overall query match.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message