如何构建复杂的搜索。 EAV。 FTS

时间:2017-07-20 07:28:24

标签: python postgresql sqlalchemy full-text-search entity-attribute-value

我为房地产列表网站构建了一个复杂的搜索功能。为了能够按属性类别属性进行搜索,我将模型定义为:

  • 每个属性都有类别。类别是嵌套的。
  • 每个类别都包含其支持的属性的JSON规范。
  • 每个属性都有一个属性列表(作为JSON字段)

以下是实体(键,关系,方法省略):

class Property(db.Model):
    name = db.Column(db.String(255), nullable=False)
    description = db.Column(db.Text, nullable=False)
    address_line = db.Column(db.String(255), nullable=False)
    price = db.Column(MoneyType, nullable=False)    
    attributes = db.Column(JSONB)

class Category(db.Model, BaseNestedSets):
    name = db.Column(db.String(255), index=True, nullable=False)
    spec = db.Column(JSONB)
    override_spec = db.Column(db.BOOLEAN, default=True)
  1. 因此,按类别 - 属性(没有FTS)进行搜索将要求用户向下钻取类别树,选择类别,根据可用文本框提供搜索输入,支持属性的下拉列表。

  2. 我们也有地址,描述,名称,我认为应该使用FTS引擎进行搜索。

  3. 我知道我可以在创建包含所有必要数据的新属性记录时构建搜索索引,然后使用分面搜索(这需要一些解释)。

  4. 如何结合 1 - 2 2 - 3 等方面?你能解释一下这个例程吗?

0 个答案:

没有答案