parent
e54ef63b01
commit
ceaf13085a
@ -1187,8 +1187,28 @@ class Event(models.Model):
|
|||||||
output_field=models.IntegerField(),
|
output_field=models.IntegerField(),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
with_emoji = [
|
||||||
|
s for s in self.tags if any(char in emoji.EMOJI_DATA for char in s)
|
||||||
|
]
|
||||||
|
if len(with_emoji) > 0:
|
||||||
|
qs = qs.annotate(
|
||||||
|
overlap_emoji_tags=RawSQL(
|
||||||
|
sql="ARRAY(select UNNEST(%s::text[]) INTERSECT select UNNEST(tags))",
|
||||||
|
params=(with_emoji,),
|
||||||
|
output_field=ArrayField(models.CharField(max_length=50)),
|
||||||
|
)
|
||||||
|
).annotate(
|
||||||
|
overlap_emoji_tags_count=Func(
|
||||||
|
F("overlap_emoji_tags"),
|
||||||
|
function="CARDINALITY",
|
||||||
|
output_field=models.IntegerField(),
|
||||||
|
)
|
||||||
|
)
|
||||||
else:
|
else:
|
||||||
qs = qs.annotate(overlap_tags_count=Value(1))
|
qs = qs.annotate(overlap_emoji_tags_count=Value(0))
|
||||||
|
|
||||||
|
else:
|
||||||
|
qs = qs.annotate(overlap_tags_count=Value(0))
|
||||||
|
|
||||||
if self.exact_location:
|
if self.exact_location:
|
||||||
qs = (
|
qs = (
|
||||||
@ -1216,7 +1236,8 @@ class Event(models.Model):
|
|||||||
)
|
)
|
||||||
)
|
)
|
||||||
.annotate(
|
.annotate(
|
||||||
score=F("overlap_tags_count") * 30
|
score=F("overlap_tags_count") * 20
|
||||||
|
+ F("overlap_emoji_tags_count") * 40
|
||||||
+ F("similarity_title") * 2
|
+ F("similarity_title") * 2
|
||||||
+ F("similarity_description") * 10
|
+ F("similarity_description") * 10
|
||||||
+ 10 / (F("distance") + 1)
|
+ 10 / (F("distance") + 1)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user