我使用干草堆进行项目的弹性搜索,但是我得到的分数对我来说没有任何意义。干草堆分数没有意义
我想索引和搜索的模式类似于:
class Car(models.Model):
name = models.CharField(max_length=255)
class Color(models.Model):
car = models.ForeignKey(Car)
name = models.CharField(max_length=255)
而搜索索引,即使我感兴趣的汽车,我想通过颜色来搜索他们,因为我想显示颜色的PIC明确:
class CarIndex(indexes.SearchIndex, indexes.Indexable):
text = CharField(document=True)
def get_model(self):
return Color
def prepare_text(self, obj):
# Some cleaning
return " ".join([obj.name, obj.car.name])
现在我添加了一个车用三种颜色,一个法拉利Laferrari在红色,黑色和白色。只有一种车型,为了搜索目的,有3辆车。
所以我检查Kibana,我得到一个正常的输出。
然后我执行正常的搜索:法拉利Laferrari
这三款车型具有相同的信息,文本字段只改变颜色名称。我甚至尝试从文本中删除颜色,并猜测我得到了什么。
这场惨败之后,我尝试了蟒蛇elasticsearch库,和我平时成绩(上工索引和搜索),所有三种颜色具有相同的分数,如果我的LaFerrari
执行搜索。
任何想法是怎么回事?
我正在考虑从干草堆转到普通elasticsearch,有什么建议吗?
这是一个错字? 'def get_model(self):return Color' - 不应该这样读'return Car'? – Risadinha
@Risadinha这不是一个错字,我想通过Color进行索引,这有点令人困惑,但是对于我想要的搜索模式,作品。 – Marti
是的,我意识到你所说的'Color'是'Car',而你所说的'Car'就像'品牌'。最重要的是,你将索引命名为“CarIndex”,这使得它更加令人困惑。 – Risadinha