Я делаю фильтр набора запросов для «foo» в CharField, используя __ictonains, и я хочу сначала найти наиболее конкретные поисковые совпадения.
Набор данных в базе данных для определенного поля с именем «описание»:
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», набрав больше букв, если оно замещено более длинными записями.