Я экспериментирую с базовым выражением регулярного выражения как способом выполнения операции фильтра Django.
Я хотел бы удалить любые незначительные слова из предоставленной строки запроса, поищите любые объекты с заголовками, содержащими любое изостальные слова, а затем сортировка, начиная с тех, которые содержат наибольшее количество слов.
Используя быстрый и упрощенный пример:
ignored_words = {'for', 'a', 'of', 'the', 'and', 'to', 'in'}
keywords = []
for word in query.split():
if word not in ignored_words:
keywords.append(word)
if len(keywords) > 0:
regex_str = r'(' + '|'.join(keywords) + ')'
results = MyModel.objects.filter(title__iregex=regex_str)
# Now sort them...
Если моя строка запроса была 'Delicious Apples and Bananas'
, и у меня было три объектасо следующими названиями:
'Apples'
'Bananas'
'Apples and Bananas'
Есть ли эффективный способ Iможно упорядочить результаты по количеству появлений ключевых слов?Точнее говоря, я не уверен, должен ли я выполнять какую-то операцию Count()
при выполнении запросов или циклический просмотр результатов после этого, а затем выполнять какую-то дополнительную обработку регулярных выражений.