Как искать текст в базе данных в Django
Мне нужно произвести поиск по набору слов в базе данных. Последовательность слов не имеет значения. Например: ``Как собрать компьютер`` - это строка в базе данных. Я должен иметь возможность получить этот результат, просто введя строку "собрать компьютер".
В настоящее время я использую базу данных sqlite3 с Django. Я попытался решить проблему, разделив слова в запросе, а затем пройдя по базе данных, чтобы проверить, есть ли это слово в записях базы данных. Чем больше слов из запроса находится в записи, тем выше рейтинг этой конкретной записи в базе данных.
Но мой подход предполагает разбиение каждой записи в базе данных на части, а затем поиск всех записей с использованием каждого слова в моем поисковом запросе. Есть ли способ оптимизировать мой алгоритм?
Вы можете сделать это с помощью оператора in
.
Пример поискового запроса будет выглядеть так
data = "How to build a computer"
query_list = data.split()
Model.objects.filter(fieldname__in=query_list)
Итерация цикла по базе данных будет много раз обращаться к базе данных, что является экономически эффективным, поэтому альтернатива in
намного быстрее по сравнению с циклом, потому что он обратится к базе данных только 1 раз.