gpt4 book ai didi

google-app-engine - App Engine 搜索 API(文档搜索)- 多种语言

转载 作者:太空宇宙 更新时间:2023-11-03 15:22:59 25 4
gpt4 key购买 nike

我有一些文档,我想用 3 种不同的语言进行搜索。由于我可以有多个具有相同名称/类型的字段,因此可以使用以下文档结构(这是一个简化的示例)。

document = search.Document(
fields=[
search.TextField(
name="name",
language="en",
value="dog"),
search.TextField(
name="name",
language="es",
value="perro"),
search.TextField(
name="name",
language="fr",
value="chien")
]
)
index = search.Index("my_index")
index.put(document)

指定语言有助于 Google 标记 TextField 的值。

以下查询都有效,每个查询返回一个结果:

print index.search("name: dog")
print index.search("name: perro")
print index.search("name: chien")

这是我的问题:我能否将搜索限制为仅针对具有特定语言的目标字段

目的是避免得到假阳性结果。由于每种语言都使用阿拉伯字母表,因此使用西类牙语执行全文搜索的人可能会看到不相关的英语结果。

谢谢。

最佳答案

您可以使用 facets向文档中添加实际上未出现在文档(元数据)中的字段。这些将指示文档中出现的语言。

文档插入:

    index = search.Index("my_index")
document = search.Document(
fields=[
search.TextField(
name="name",
language="en",
value="dog"),
search.TextField(
name="name",
language="es",
value="perro"),
search.TextField(
name="name",
language="fr",
value="chien")
],
facets=[
search.AtomFacet(name='lang', value='en'),
search.AtomFacet(name='lang', value='es'),
search.AtomFacet(name='lang', value='fr'),
],
)
index.put(document)
document = search.Document(
fields=[
search.TextField(
name="name",
language="es",
value="gato"),
search.TextField(
name="name",
language="fr",
value="chat")
],
facets=[
# no english in this document so leave out lang='en'
search.AtomFacet(name='lang', value='es'),
search.AtomFacet(name='lang', value='fr'),
],
)
index.put(document)

查询:

index = search.Index("my_index")
query = search.Query(
'', # query all documents, cats and dogs.
# filter docs by language facet
facet_refinements=[
search.FacetRefinement('lang', value='en'),
])

results = index.search(query)
for doc in results:
result = {}
for f in doc.fields:
# filter fields by language
if f.language == 'en':
result[f.name] = f.value
print result

应该打印 {u'name': u'dog'}

请注意,虽然我们只能获取包含英文的文档,但我们仍然需要过滤掉这些文档中其他语言的字段。这就是为什么我们遍历字段只将英文字段添加到 result

如果您想了解更多关于分面搜索的更一般用例,this answer给出了一个很好的主意。

关于google-app-engine - App Engine 搜索 API(文档搜索)- 多种语言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44692242/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com