Bleve builds an inverted index of terms. What this means is that every document you index is broken up into smaller pieces called terms. And every search you run, is at the lowest level and exact lookup of which documents used certain terms.
"Partial matching" is not a precise term, and means different things to different people. By using different text analyzers and search queries, you can provide the illusion of partial matching, even though underneath it's all a set of exact lookups.
One technique to do this is using language based stemmers. These transform terms in the document (and search query) into simpler, more root forms of the term. This allows matches across forms of a word that are not identical. But, this technique would not work for your example above,
Another technique is something called n-grams. With this technique, the index is built up of smaller partial terms, with parameters min/max. So with min of 3 and max of 5, you'd end up indexing terms like: tes,test,testa,est,esta,estad,sta,stad,stadh,tad,tadh,tadhv,adh,adhv,adhvi,dhv,dhvi,dhvik,hvi,hvik,vik
As you can see with this technique, one term in your document resulted in indexed 21 terms. This gets too expensive quickly, but it depends on your use case. The good news is that it would match your query, because your search term gets converted into these terms: adh,adhv,adhvi,dhv,dhvi,dhvik,hvi,hvik,vik Since these list of terms overlap, the document would be matched.
If you choose to use this technique, you would define a custom analyzer that includes the ngram filter.