Django trigram_类似搜索不返回任何结果(带有Postgresql 10.5后端的Django 2.1)
我按照上的说明在我的搜索引擎上安装trigram search。我在Django trigram_类似搜索不返回任何结果(带有Postgresql 10.5后端的Django 2.1),django,postgresql,trigram,Django,Postgresql,Trigram,我按照上的说明在我的搜索引擎上安装trigram search。我在settings.py中的INSTALLED\u APPS中添加了'django.contrib.postgres',并在我的PostgreSQL数据库上安装了pg\u trgm扩展。三角图搜索不返回结果,但没有错误,只在应该有搜索结果的地方空白。我的搜索引擎在icontain搜索中运行良好。这是我的搜索引擎的代码,类似于trigram: def query_search(request): articles = cro
settings.py
中的INSTALLED\u APPS
中添加了'django.contrib.postgres'
,并在我的PostgreSQL数据库上安装了pg\u trgm
扩展。三角图搜索不返回结果,但没有错误,只在应该有搜索结果的地方空白。我的搜索引擎在icontain
搜索中运行良好。这是我的搜索引擎的代码,类似于trigram:
def query_search(request):
articles = cross_currents.objects.all()
search_term = ''
if 'keyword' in request.GET:
search_term = request.GET['keyword']
articles = articles.filter(Title__trigram_similar=search_term)
Title
是我的模型中的CharField
交叉电流
:
class cross_currents(models.Model):
Title = models.CharField(max_length=500)
这是我的Django shell给我的:
In [6]: cross_currents.objects.filter(Title__trigram_similar='modern')
Out[6]: <QuerySet []>
很多结果都显示了出来。你知道为什么我的三元搜索没有返回任何结果吗?问题是Postgres的默认相似性阈值设置为0.3,在我的情况下,这太高了,无法返回单词搜索的结果。我发现阈值0.01在我的情况下有效:
articles = articles.annotate(similarity=TrigramSimilarity('Title', search_term),).filter(similarity__gt=0.01).order_by('-similarity')
我认为0.01太低了,搜索结果中几乎所有内容都被它占据了。它不应该是0.1吗?
articles = articles.annotate(similarity=TrigramSimilarity('Title', search_term),).filter(similarity__gt=0.01).order_by('-similarity')