mirror of
https://github.com/wahyd4/links.git
synced 2026-08-09 05:06:16 +10:00
Show exact match first!
This commit is contained in:
+11
-2
@@ -3,7 +3,7 @@ from itertools import chain
|
||||
from django.http import JsonResponse
|
||||
from django.views.generic import ListView
|
||||
from django.views.generic.base import TemplateView
|
||||
from django.db.models import Q, Value, CharField
|
||||
from django.db.models import Q, Value, CharField, IntegerField, Case, When
|
||||
from django.db import models
|
||||
from django.utils.text import slugify
|
||||
from .models import Link, Page, Post
|
||||
@@ -244,7 +244,16 @@ def search_api_v2(request):
|
||||
|
||||
def search_aliases(request):
|
||||
query = request.GET.get('q', '').strip()
|
||||
links = Link.objects.filter(alias__icontains=query)[:10]
|
||||
|
||||
# Prioritize results: exact match first, then starts with, then contains
|
||||
links = Link.objects.filter(alias__icontains=query).annotate(
|
||||
priority=Case(
|
||||
When(alias__iexact=query, then=Value(1)),
|
||||
When(alias__istartswith=query, then=Value(2)),
|
||||
default=Value(3),
|
||||
output_field=IntegerField()
|
||||
)
|
||||
).order_by('priority', 'alias')[:10]
|
||||
|
||||
results = []
|
||||
for link in links:
|
||||
|
||||
Reference in New Issue
Block a user