Menu

Raw Scoring Node Extraction

David Fisher

Next, a walker is applied to the parse tree to extract any raw scoring nodes. A walker is different from a copier as the walker will operate directly on the nodes in the parse tree, as opposed to a copier which returns a new copy of the parse tree with the modified nodes.

Application of !RawScorerNodeExtractor on the Root Node

As the walker goes through the root node (type CombineNode) - since this is not a node with any scoring information, it will not get pushed into the list of score-able nodes in the walker, so it just moves on to its first child node.

Application of RawScorerNodeExtractor on the ScoredExtent and IndexTerm Nodes

The next node is a ScoredExtentNode type that has an IndexTerm as it's only child. Since this node is subclassed from indri::lang::RawScorerNode, it gets flagged and pushed into the vector of reachable nodes.

For the IndexTerm, since the _insideCount of the walker is now greater than one, the IndexTerm node will also be pushed into the vector of reachable nodes via the RawScorerNodeExtractor's defaultBefore method.

What we are left with after the walk is a vector of "reachable" scoring nodes, consisting of the following:

  Raw Scoring Node (indri::lang::RawScorerNode)
  Raw Scoring Node (indri::lang::RawScorerNode)
    \
    Index Term ("dog" indri::lang::IndexTerm)

Next: [Gathering Statistics]



Related

Wiki: Extent Restriction
Wiki: Gathering Statistics
Wiki: Indri Query Flow