所以这是一个我无法自己解决的有趣问题。
我设置了一个搜索索引,我希望我的文档包含多个代表类别的AtomField
。每个文档可以有多个类别。
Google的文档说明Document
可以使用相同的名称设置多个字段,这很棒,但是,您只能使用构造函数指定字段,而且您可以“#{1}}。在创建Document
后修改字段列表。
问题是,假设我的类别在数组中,如何创建每个类别一个字段的Document对象?我在Stack Overflow中的另一个问题中看到了这个答案(现在无法找到),但这不能正常工作:
document = search.Document(
doc_id = files[file_index],
fields=[
search.TextField(name='name', value=my_name),
search.AtomField(name='category', value=c) for c in categories
])
我认为这里的挑战与Python本身的关系比与App Engine本身有关。
如果问题不明确,请I wrote a blog post with more details。
答案 0 :(得分:2)
我不确定这是你要求的,但听起来你只是希望能够连接两个列表:
document = search.Document(
doc_id = files[file_index],
fields =
[ search.TextField(name='name', value=my_name) ]
+ [ search.AtomField(name='category', value=c) for c in categories ]
)
答案 1 :(得分:0)
您可以在fields数组中包含多个具有给定名称的AtomField实例:
document = search.Document(
doc_id = article["id"],
fields=[
search.TextField(name='title', value=article["title"]),
search.DateField(name='date', value=article["date"]),
search.HtmlField(name='content', value=article["html"]),
search.AtomField(name='tag', value='Foo'),
search.AtomField(name='tag', value='Bar')
])