Что означают эти 0,9-0,1? Как это можно использовать с подстрокой 3+ слов?

я есть список строк, например:

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

Я хочу, чтобы это было отсортировано по точностиSOME TEXT подстрока (верхний регистр не имеет значения). Примерно так:

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

Идея в том, что лучший результат получает строка с лучшим соответствием позиции слов подстроки. И для большего количества «неаккуратных» слов между словами подстроки - более низкий порядок, который это получает.

Я нашел несколько библиотек, таких какfuzzyset, или жеРасстояние Левенштейна но я не уверен, что это то, что мне нужно. Я знаю точную подстроку по тому, что я хочу отсортировать, и эти библиотеки ищут похожие слова, как я понял.

На самом деле мне нужно сделать это после некоторого запроса к базе данных (Postgresql) в моем проекте Django. Я уже пробовал полнотекстовый поиск с его ORM, но не получил этот соответствующий порядок сортировки (он не учитывает расстояние между словами подстроки). Затем я попробовал Haystack + Whoosh, но также в этот момент не нашел информации, как это сделать. Поэтому идея сейчас состоит в том, чтобы получить набор запросов и затем отсортировать его из базы данных (да, я знаю, что это может быть плохим решением, но сейчас я хочу, чтобы он просто работал). Но если кто-нибудь скажет мне, как сделать это в рамках какой-либо из технологий, я упомянул здесь - это также будет супер круто. Спасибо!

постскриптум Длина подстроки должна составлять 2-10 слов в строке максимум из 20 слов.

Ответы на вопрос(3)

Ваш ответ на вопрос