Я делаю фильтр набора запросов для "foo" в CharField с использованием __ictonains и хочу сначала найти наиболее конкретные совпадения поиска.
Набор данных в базе данных для определенного поля с именем "description":
fooal;skdjfkasdgh;alskdjrf
foobar
foo-nstastical
foobariffic
foo-ntastic
foo
Когда я ищу:
MyModel.objects.filter(description__icontains="foo")
Набор запросов возвращает результаты в некотором порядке в соответствии с номером идентификатора (или другими факторами?):
fooal;skdjfkasdgh;alskdjrf
foobar
foo-nstastical
foobariffic
foo-ntastic
Если я покажу только 5 лучших результатов, я пропущу "foo", который на самом деле является лучшим совпадением, которое я хочу показать первым. Как я могу простым способом придать больший вес лучшим матчам, не внедрив поисковую систему "по-настоящему тяжелого режима", такую как Lucene? Я хочу более легкий взлом фильтра запросов.
Это грубая поисковая система для набора текстовых данных, поэтому более важно сначала показать foo, когда отображаются только первые N результатов, потому что, если человек искал foobariffic, он мог набирать больше букв. Но нет способа получить "foo", набрав больше букв, если они заменяются более длинными записями.