Smile\ElasticsuiteCore\Search\Adapter\Elasticsuite\Spellchecker::extractTermStatsByPoisition PHP Method

extractTermStatsByPoisition() private method

Wil return an array of doc_freq, analayzers and term by position.
private extractTermStatsByPoisition ( array $termVectors ) : array
$termVectors array The term vector query response.
return array
    private function extractTermStatsByPoisition($termVectors)
    {
        $statByPosition = [];
        $analyzers = [FieldInterface::ANALYZER_STANDARD, FieldInterface::ANALYZER_WHITESPACE];
        foreach ($termVectors['term_vectors'] as $propertyName => $fieldData) {
            $analyzer = $this->getAnalyzer($propertyName);
            if (in_array($analyzer, $analyzers)) {
                foreach ($fieldData['terms'] as $term => $termStats) {
                    foreach ($termStats['tokens'] as $token) {
                        $positionKey = sprintf("%s_%s", $token['start_offset'], $token['end_offset']);
                        if (!isset($termStats['doc_freq'])) {
                            $termStats['doc_freq'] = 0;
                        }
                        if (!isset($statByPosition[$positionKey])) {
                            $statByPosition[$positionKey]['term'] = $term;
                            $statByPosition[$positionKey]['doc_freq'] = $termStats['doc_freq'];
                        }
                        if ($termStats['doc_freq']) {
                            $statByPosition[$positionKey]['analyzers'][] = $analyzer;
                        }
                        $statByPosition[$positionKey]['doc_freq'] = max($termStats['doc_freq'], $statByPosition[$positionKey]['doc_freq']);
                    }
                }
            }
        }
        return $statByPosition;
    }