Нужна помощь в создании поискового представления и как применить в HTML странице из БД, которую я создал - Django
Я создаю сайт с DJANGO, где люди вставляют слова и ассоциации, как запомнить это слово. Я построил часть вставки слова.
Сейчас я застрял на части реализации поиска слов и извлечения информации из БД.
def Search_word(request):
search = request.POST.get("search", False)
if search in Words.English_word:
return HttpResponseRedirect("/polls/")
else:
return HttpResponseRedirect("/polls/")
если вы хотите искать только в одном поле, Django поддерживает поиск, который намного лучше и точнее, чем contains
words = Words.objects.filter(English_word__search = search_term)
но если вы хотите иметь какую-то функциональность, подобную поисковой системе, вы можете использовать PostgreSQL с функцией полнотекстового поиска в Django
в model.py добавьте эти команды
from django.contrib.postgres.search import SearchVector
в вашей модели яслей:
def full_search(self, search_term):
return self.annotate(
search=SearchVector('English_word') +
SearchVector('blog__tagline')).filter(search=seach_term)
этот метод удалит <in/at/is/the/...> другие английские слова и будет искать только с помощью алгоритмов word-to-vector
если вам приходится работать с ранжированием результатов поиска:
from django.contrib.postgres.search import SearchQuery, SearchRank,SearchVector
vector = SearchVector('english_word')
query = SearchQuery(search_term)
Word.objects.annotate(rank=SearchRank(vector, query)).order_by('-rank')
это аннотирует результаты на основе их вероятности соответствия поисковому запросу.
Кстати, лучшей практикой является использование менеджеров моделей и избегание ORM вещей в представлениях.
Документы Django по поиску: https://docs.djangoproject.com/en/3.2/ref/contrib/postgres/search/