Python: como classificar uma lista de strings por relevância de substring?

Eu tenho uma lista de seqüências de caracteres, por exemplo:

["foo bar SOME baz TEXT bob",
"SOME foo bar baz bob TEXT",
"SOME foo TEXT",
"foo bar SOME TEXT baz",     
"SOME TEXT"]

Quero que seja classificado por exatidão paraSOME TEXT substring (maiúsculas não importa). Algo como esta ordem:

["SOME TEXT",
"foo bar SOME TEXT baz",
"SOME foo TEXT",
"foo bar SOME baz TEXT bob",
"SOME foo bar baz bob TEXT"]

A idéia é - a melhor pontuação obtém a string com a melhor correspondência com a posição das palavras de substring. E para uma quantidade maior de palavras "desleixadas" entre as palavras da substring - a ordem mais baixa obtida.

Eu encontrei algumas bibliotecas comofuzzysetouDistância Levenshtein mas não tenho certeza de que é disso que preciso. Eu sei a substring exata pelo que eu quero classificar e essas bibliotecas pesquisam as palavras semelhantes, como eu entendi.

Na verdade, eu preciso fazer esse tipo depois de alguma consulta ao banco de dados (Postgresql) no meu projeto Django. Eu já tentei a pesquisa de texto completo com seu ORM, mas não recebi essa ordem de classificação relevante (não conta a distância entre as palavras de substring). Em seguida, tentei o Haystack + Whoosh, mas também neste momento não encontrei informações sobre como fazer esse tipo lá. Então, a ideia agora é obter o conjunto de consultas e classificá-lo fora do banco de dados (sim, eu sei que pode ser uma decisão ruim, mas por enquanto eu quero que funcione). Mas se alguém me disser como fazer isso em qualquer uma das tecnologias, mencionei aqui - isso também será super legal. Obrigado!

p.s. O comprimento da substring deve ser de 2 a 10 palavras na cadeia de no máximo 20 palavras.

questionAnswers(3)

yourAnswerToTheQuestion