Splitting a sentence to meaningful parts
You are looking to create a  parse tree to find multi-token clauses. 

Here is code to generate a parse tree:

import spacy
from nltk import Tree

nlp = spacy.load('en')

def to_nltk_tree(node):
    if node.n_lefts + node.n_rights &gt; 0:
        return Tree(node.orth_, [to_nltk_tree(child) for child in node.children])
    else:
        return node.orth_

query = u'tell me about people in konoha who have wind style chakra and are above jonin level'
doc = nlp(query)
[to_nltk_tree(sent.root).pretty_print() for sent in doc.sents]


Output:

    tell                          
  ____|______                       
 |         about                   
 |           |                      
 |         people                  
 |     ______|_____                 
 |    |           have             
 |    |       _____|____________    
 |    |      |     |     |     are 
 |    |      |     |     |      |   
 |    |      |     |   chakra above
 |    |      |     |     |      |   
 |    in     |     |   style  level
 |    |      |     |     |      |   
 me konoha  who   and   wind  jonin


From that parse tree, you can then select the phrases.