首页
学习
活动
专区
圈层
工具
发布

搜索API
EN

Stack Overflow用户
提问于 2013-12-18 13:12:16
回答 1查看 968关注 0票数 6

当查询GAE搜索API版本中的搜索索引时,搜索具有与标题匹配的文档的项目的最佳做法是什么,然后搜索单词匹配正文的文档?

例如:

代码语言:javascript
复制
body = """This is the body of the document, 
with a set of words"""

my_document = search.Document(
  fields=[
    search.TextField(name='title', value='A Set Of Words'),
    search.TextField(name='body', value=body),
   ])

如果可能的话,如何对上述表单的Document的索引执行搜索,并以此优先级返回结果,其中搜索的短语位于变量qs中。

  1. titleqs匹配的文档;然后
  2. 其正文与qs单词匹配的文档。

似乎正确的解决方案是使用MatchScorer,但我可能对此不感兴趣,因为我以前从未使用过此搜索功能。从文档中还不清楚如何使用MatchScorer,但是我假设它有一个子类,并且重载了一些函数--但是由于没有文档化,而且我还没有钻研代码,我不能肯定地说。

这里是否有我遗漏的东西,或者这是正确的策略?我错过了这类事情的记录吗?

为了清晰起见,这里有一个关于预期结果的更详细的例子:

代码语言:javascript
复制
documents = [
  dict(title="Alpha", body="A"),          # "Alpha"
  dict(title="Beta", body="B Two"),       # "Beta"
  dict(title="Alpha Two", body="A"),      # "Alpha2"
]

for doc in documents: 
  search.Document(
    fields=[
       search.TextField(name="title", value=doc.title),
       search.TextField(name="body", value=doc.body),
    ]
  )
  index.put(doc)  # for some search.Index

# Then when we search, we search the Title and Body.
index.search("Alpha")
# returns [Alpha, Alpha2]

# Results where the search is found in the Title are given higher weight.
index.search("Two")
# returns [Alpha2, Beta]  -- note Alpha2 has 'Two' in the title.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-19 17:15:46

自定义评分是我们最优先的功能要求之一。我们希望尽快找到一种好办法来做这类事情。

在特定情况下,您当然可以通过执行两个单独的查询来达到预期的结果:第一个查询对"title“有字段限制,第二个查询限制在"body”上。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20659188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档