我有一个索引良好的postgres表,行数为0.5百万。对其字段进行直接ORM文本搜索非常快速。但是,我想获得加权和排名搜索结果(加权相关性)。我这样做:
q_ = SearchQuery(val)
qs = Location.objects.annotate(
rank=SearchRank(vector, q_)).filter(
rank__gte=0.1).order_by('-rank')
(矢量未显示)
这样可行,并给出了预期的排名结果,但它很慢。当使用排名注释和排序时,搜索时间从小数毫秒上升到5秒以上。
同样,我已经完全索引了。有没有其他方法可以提高Django中针对大数据集的加权搜索结果的性能,不愿意转移到ElasticSearch或类似的?