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

部分匹配的GAE搜索API

谢阳成
2023-03-14
问题内容

使用GAE搜索API是否可以搜索部分匹配项?

我正在尝试创建自动完成功能,其中该术语将是部分单词。例如。

b
bui
构建

都将返回“建筑物”。

GAE怎么可能?


问题答案:

尽管全文搜索不支持LIKE语句(部分匹配),但是您可以修改它。

首先,为所有可能的子字符串标记数据字符串(hello = h,he,hel,lo等)

def tokenize_autocomplete(phrase):
    a = []
    for word in phrase.split():
        j = 1
        while True:
            for i in range(len(word) - j + 1):
                a.append(word[i:i + j])
            if j == len(word):
                break
            j += 1
    return a

使用标记化的字符串构建索引+文档(搜索API)

index = search.Index(name='item_autocomplete')
for item in items:  # item = ndb.model
    name = ','.join(tokenize_autocomplete(item.name))
    document = search.Document(
        doc_id=item.key.urlsafe(),
        fields=[search.TextField(name='name', value=name)])
    index.put(document)

执行搜索,然后哇!

results = search.Index(name="item_autocomplete").search("name:elo")

https://code.luasoftware.com/tutorials/google-app-engine/partial-search-on-
gae-with-search-api/



 类似资料:
  • 问题内容: 我正在尝试为最终用户提供搜索类型,这更像sqlserver。我能够为给定的SQL场景实现ES查询: 但是ES查询不适用于此sql查询 在我的elasticsearch以及通配符查询中,我还需要执行一些布尔过滤查询 上面的带有通配符搜索的弹性查询可以很好地工作,并让我获得所有与pete匹配且不是xyz和abc类型的文档。但是当我尝试使用以空格分隔的2个独立单词执行通配符时,相同的查询返回

  • 问题内容: 我正在寻找给定此数组的函数, 我想寻找针头 “面包” 并得到以下结果 问题答案: 使用。您可以提供一个回调,该回调确定哪些元素保留在数组中以及哪些元素应删除。(从回调返回的值指示应删除给定的元素。)类似这样的东西: 欲获得更多信息: 返回值

  • 问题内容: 我在对象上创建索引,并希望既可以进行完整短语搜索也可以进行部分匹配。该类型称为“发送方”,简化的索引创建如下所示: 这样做的目的是对“名称”字段中的值建立索引两次:一次是不拆分字段中的各个单词(name.full),一次是拆分单词(name.name)。 我有一个已建立索引的文档,其名称字段设置为“ Danny Watson博士”。我希望在执行术语查询(根据文档未分析其查询字符串)时发

  • 由于使用mongodb全文搜索不可能通过“蓝”这个词找到“蓝莓”,所以我想帮助我的用户完成“蓝”到“蓝莓”这个词。要这样做,是否可以查询mongodb全文索引->中的所有单词,我可以使用这些单词作为建议,即用于typeahead.js?

  • 我有一个带有标准分析器的弹性搜索集群。我知道使用这个分析仪,术语“300”被分析为一种类型。 假设我正在搜索一个具有字段“name”的文档,该字段的值为“纸巾300 CT”,分析为[“Paper”(ALPHANUM)、“tower”(ALPHANUM)、“300”(NUM)、“CT”(ALPHANUM)] 目前,当我使用模糊/通配符查询时,如下所示: 无论模糊性如何调整,模糊查询都不匹配。我希望术

  • 问题内容: 我正在使用SQL Server 2008 R2 SP1。 我有一张约有36034个客户记录的表。我正在尝试在“客户名称”字段上实施Fuzy搜索。 这是模糊搜索的功能 这是调用该函数的查询 这大约需要2分22秒,可以为我提供所有对象的模糊匹配百分比 我如何解决此问题以在不到一秒钟的时间内运行。关于我的功能的任何建议,以使其更强大。 预期输出为45.34、40.00、100.00、23.0