gpt4 book ai didi

python - Django 2 + PostgreSQL FullText 搜索不匹配它应该的

转载 作者:行者123 更新时间:2023-11-29 13:45:48 35 4
gpt4 key购买 nike

我遇到了一个问题,希望有人能赐教。

我需要使用 Django 2 和 PostgreSQL 10.1 对包含多列的表执行全文搜索并按排名对结果进行排序。到目前为止,这是我的代码:

from django.contrib.postgres.search import SearchQuery, SearchRank, SearchVector

# other unrelated stuff here
vector = SearchVector("very_important_field", weight="A") + \
SearchVector("tags", weight="A") + \
SearchVector("also_important_field", weight="B") + \
SearchVector("not_so_important_field", weight="C") + \
SearchVector("not_important_field", weight="D")
query = SearchQuery(search_string, config="italian")
rank = SearchRank(vector, query, weights=[0.4, 0.6, 0.8, 1.0]). # D, C, B, A
full_text_search_qs = MyEntry.objects.annotate(rank=rank).filter(rank__gte=0.4).order_by("-rank")

奇怪的是,一些 search_string 结果什么都不返回,而如果我执行一个简单的查询,例如

SELECT * FROM my_entry
WHERE very_important_field LIKE '%search_string%'
OR tags LIKE '%search_string%'
OR ...

如果我将搜索仅限于重要字段,我也会得到大量结果。我已经尝试使用 filter(rank_gte=0.4) 并将其删除。结果还是一样。

到目前为止,我还没有使用 GIN 或 GIST 索引,因为我只是在试验。

关于我遗漏了什么的任何线索?提前致谢

最佳答案

我想我找到了问题。

SearchQuery() 的关键字参数

config='italian'

似乎没有用。为了解决这个问题,我在我的数据库上发布了:

ALTER DATABASE my_db SET default_text_search_config = 'pg_catalog.italian';

现在一切正常。

我希望这也能帮助其他人。

关于python - Django 2 + PostgreSQL FullText 搜索不匹配它应该的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48731537/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com