如何在Google App Engine搜索API中指定多个同名搜索字段
这里有一个有趣的问题,我自己没法解决。
我正在建立一个搜索索引,希望我的文档中包含多个AtomField
,这些字段代表不同的类别。每个文档可以有多个类别。
谷歌的文档说,一个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本身。
如果问题不太清楚,我写了一篇博客,里面有更多细节。
2 个回答
0
你可以在字段数组中包含多个同名的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')
])
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 ]
)