通过在Django模型字段中搜索文本来搜索匹配项

时间:2015-09-25 20:49:18

标签: python django caching search model

我有一个类似于此的模型

class Item(models.Model):
    value = models.IntegerField()
    words = models.CharField(max_length=512, unique=True)

我希望能够搜索对象,并返回特定查询的最佳匹配项。 '最佳匹配'可以定义为words字段最接近文本的结果,(我可以编写一个函数,返回' closeness'没有问题的整数表示,模型搜索和缓存是问题)

理想情况下,每次进行搜索时,如果之前已经进行了搜索,则应仅搜索自上次查询以来的新元素(其他结果已被缓存)。我找不到实现这个目标的django模块。

一些信息:   DB:postgres   连接器:psycopg2

1 个答案:

答案 0 :(得分:0)

您可以使用difflib对您的查询进行排序,因此它会将最佳匹配放在顶部[-1]。

>>> import difflib
>>> a = ["spam", "eggs", "spammy", "eggy"]
>>> b = 'spam'
>>> sorted(a, key=lambda x: difflib.SequenceMatcher(None, x, b).ratio())
['eggy', 'eggs', 'spammy', 'spam']