当前位置: 首页 > 面试题库 >

Google App Engine搜索API

潘嘉佑
2023-03-14
问题内容

在GAE Search
API
的Python版本中查询搜索索引时,最好的搜索方式是:首先搜索单词与标题匹配的文档,然后再搜索与正文匹配的文档的项目?

例如给出:

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对上述形式的s的索引执行搜索,并以该优先级返回结果,其中要搜索的短语在变量中qs

  1. title符合条件的文件qs;然后
  2. 正文与qs单词相匹配的文档。

似乎正确的解决方案是使用MatchScorer,但是由于我之前没有使用过此搜索功能,因此我可能对此不以为然。从文档中尚不清楚如何使用MatchScorer,但是我认为一个子类会重载某些函数-
但是由于没有文档说明,并且我也没有深入研究代码,因此无法确定。

这里是否有我想念的东西,或者这是正确的策略?我是否想念记录这种情况的地方?

为了清楚起见,这是预期结果的更详尽示例:

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.

问题答案:

自定义评分是我们的首要任务之一。我们希望有一个很好的方法来尽快进行此类操作。

在您的特定情况下,您当然可以通过执行两个单独的查询来获得所需的结果:第一个查询对“ title”进行字段限制,第二个查询对“ body”进行限制。



 类似资料:
  • 我有大量相同类型的实体,每个实体都有大量属性,并且我只有以下两种选择来存储它们: 将每个项存储在索引中并执行多索引搜索 将所有enties存储在单个索引中,并且只搜索1个索引。 一般而言,我想要一个时间复杂度之间的比较搜索“N”实体与“M”特征在上述每一种情况!

  • 我们有一个自定义的职位类型hr priority,它有多个与之相关的自定义分类。这些分类法包含多个术语,每个帖子可以从这些分类法中分配1到多个术语。我们正在尝试设置一个过滤器,允许访问者在多个分类中通过这些术语的组合来搜索/过滤结果。 例如:文章"样本文章"在分类学"年份"中有术语"2018","组织"分类学中有术语"理事会成员","国家"分类学中有术语"加拿大"。文章“其他样本”中有“年份”一词

  • 无论仓库里的代码量有多少,你经常需要查找一个函数是在哪里调用或者定义的,或者一个方法的变更历史。 Git 提供了两个有用的工具来快速地从它的数据库中浏览代码和提交。 我们来简单的看一下。 Git Grep Git 提供了一个 grep 命令,你可以很方便地从提交历史或者工作目录中查找一个字符串或者正则表达式。 我们用 Git 本身源代码的查找作为例子。 默认情况下 Git 会查找你工作目录的文件。

  • 搜索 调用地址 http://api.bilibili.cn/search 需要 App Key 参数 字段 必选 类型 说明 keyword true string 搜索的关键字,必须做URLencoding。 page false int 搜索结果分页选择 默认为第1页 pagesize false int 单页返回的记录条数,最大不超过100,默认为20。 order false strin

  • whereis 程序名称 查找软件的安装路径 -b 只查找二进制文件 -m 只查找帮助文件 -s 只查找源代码 -u 排除指定类型文件 -f 只显示文件名 -B 目录 在指定目录下查找二进制文件 -M 目录 在指定目录下查找帮助文件 -S 目录 在指定目录下查找源代码 locate 文件名称 在文件索引数据库中搜索文件 -d 数据库路径 搜索指定数据库 updatedb 更新文件索引数据库 fin

  • 我使用Elasticsearch允许用户输入要搜索的术语。例如,我要搜索以下属性'name': 如果使用以下代码搜索或,我希望返回此文档。 我尝试过做一个bool must和做多个术语,但它似乎只有在整个字符串都匹配的情况下才起作用。 所以我真正想做的是,这个词是否以任何顺序包含两个词。 有人能帮我走上正轨吗?我已经在这上面砸了一段时间了。

  • 主要内容:多索引此API用于在Elasticsearch中搜索内容。 用户可以通过发送具有查询字符串的获取请求作为参数或在请求的消息正文中的查询来进行搜索。所有的搜索API都是多索引,多类型。 多索引 Elasticsearch允许我们搜索存在于所有索引或一些特定索引中的文档。 例如,如果我们需要搜索名称包含的所有文档。 响应 或者,同样地我们可以在,索引中搜索 - 多类型 还可以在所有类型或某种指定类型的索引中

  • 大家好,根据搜索框中的conatiner图像在这里!我只是想问当用户在搜索框中键入一个名称时,应该显示特定的字段。我把我的视图。JSP代码也在这里吗?? vuew.jsp<%@page import=“com.privery.servicebuilder.service.blobdesolocalserviceutil”%><%@taglib uri=“http://java.sun.com/po