Django queryset аннотирует, если SearchQuery найден в поле
У меня есть такая модель: (С триггером в Postgres, который заполняет vector_column
)
class Article(models.Model)
content = models.TextField()
vector_column = SearchVectorField(null=True)
Я запрашиваю эту модель следующим образом:
Article.objects.filter(
Q(
vector_column=SearchQuery(
"cat", config="english", search_type="phrase"
) |
vector_column=SearchQuery(
"dog", config="english", search_type="phrase"
)
)
)
Так он отфильтрует все статьи с "dog"
и "cat"
в содержании.
Я пытаюсь понять, как я могу аннотировать статьи по тому, найдено ли слово в столбце vector_column. Я не могу сделать два отдельных запроса, потому что на самом деле у меня в запросе гораздо больше условий, чем это.
Оптимальный выход был бы примерно таким:
[
{
"content": "cats",
"words_found": ["cat"]
},
{
"content": "dogs",
"words_found": ["dog"]
},
{
"content": "dogs and cats",
"words_found": ["dog", "cat"]
}
]