小编典典

部分匹配的GAE搜索API

python

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

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

b
bui
构建

都将返回“建筑物”。

GAE怎么可能?


阅读 124

收藏
2020-12-20

共1个答案

小编典典

尽管全文搜索不支持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/

2020-12-20