Мы работаем с поиском в django 1.10, и нам нужен поиск по ранжированию с поиском триграмм.
Наш код таков:
def get_queryset(self):
search = self.request.GET.get('text', '')
vector = SearchVector('name',weight='A',
config=settings.SEARCH_LANGS[
settings.LANGUAGE
],
) + SearchVector(
'content',
weight='B',
config=settings.SEARCH_LANGS[
settings.LANGUAGE
],
)
query = SearchQuery(search)
return Article.objects.annotate(
rank=SearchRank(
vector,
query
),
similarity=TrigramSimilarity(
'name', search
) + TrigramSimilarity(
'content', search
),
).filter(
rank__gte=0.3
).filter(
similarity__gt=0.3
).order_by(
'-similarity'
)[:20]
Но этот код не возвращает никакого запроса, без использования проблем с триграммами, но в сочетании между ними мы не можем получить запрос.
Как мы можем комбинировать триграмму и ранжированный поиск в django 1.10?