我在弹性搜索中使用django-haystack。我的索引文档每个都有许多人的名字,每个人都有与文档相关的角色。例如:
Doc1:
name='Bob', role='Author'
name='Jill', role='Editor'
name='Joe', role='Publisher'
Doc2:
name='Jill', role='Author'
name='Phill', role='Editor'
name='Janet', role='Contributor'
如何设置索引以允许我进行搜索:“查找Jill
为Author
”的所有文档?在上面的示例中,我希望它仅返回Doc2
和不 Doc1
。
一个人可以拥有数百种不同类型的角色,因此为每种类型设置一个索引字段是不现实的。我想过将单个索引字段连接在一起(例如name_role=indexes.CharField(...)
),其中每个条目都有一个我要解析的分隔符(例如"Jill#Author"
)。但这看起来很难看。
有没有更好的方法来做到这一点?我觉得ElasticSearch's nested
type可能会有所帮助,但我不确定。
即使我正在使用django-haystack,如果有一个弹性搜索特定的答案,我会很高兴听到它。