Poo*_*ani 6 django search whoosh django-haystack
我有这样的模型:
class MyModel(models.Model):
desc1 = models.TextField(blank=True, default="")
desc2 = models.TextField(blank=True, default="")
Run Code Online (Sandbox Code Playgroud)
我想在这个模型的字段上搜索字符串.假设MyModel的这些实例:
1: desc1="ABc?", desc2="asdasd you"
2: desc1="Hello, How are you?", desc2="Thank you!"
3: desc1="ABc?", desc2="ajdf"
Run Code Online (Sandbox Code Playgroud)
当我搜索"你"时,它应该显示我,第一和第二个实例.最后我需要显示desc1中"你"比其他人更高的结果.例如,在此示例中,第二个应高于第一个.
我使用了haystack进行搜索并为此创建了一个模板.但我无法解决优先问题.
当你说“优先级”时,用搜索术语来说,你真正的意思是“排序”。
Django Haystack 可以按字段匹配进行排序,但它可以按“分数”排序,其中它使用算法来确定排序顺序。您可以通过“提升”来影响分数的权重 - 请参阅 http://django-haystack.readthedocs.org/en/latest/boost.html
另外,您应该考虑在 search_indexes.py 中添加额外的字段,仅用于加权。您不需要在 Django 模型字段和索引之间建立一对一的映射。就像是
class MyModelIndex(QueuedSearchIndex):
desc1 = indexes.CharField()
desc2 = indexes.CharField()
otherWeightedField = indexes.CharField()
def prepare_otherWeightedField(self,obj)
# fill the extra field with extra stuff to help you sort, based on processing values from other fields
Run Code Online (Sandbox Code Playgroud)