Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django trigram_类似搜索不返回任何结果(带有Postgresql 10.5后端的Django 2.1)_Django_Postgresql_Trigram - Fatal编程技术网

Django trigram_类似搜索不返回任何结果(带有Postgresql 10.5后端的Django 2.1)

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

我按照上的说明在我的搜索引擎上安装trigram search。我在
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')