gpt4 book ai didi

google-app-engine - 谷歌应用引擎( python ): Search API : String Search

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

我正在使用 Google App Engine 搜索 API ( https://developers.google.com/appengine/docs/python/search/ )。我已经为所有实体编制了索引并且搜索工作正常。但只有当我搜索完全匹配时,它才会返回 0 个结果。例如:

from google.appengine.api import search

_INDEX_NAME = 'searchall'


query_string ="United Kingdom"
query = search.Query(query_string=query_string)
index = search.Index(name=_INDEX_NAME)

print index.search(query)

如果我运行以下脚本,我会得到如下结果:

search.SearchResults(results='[search.ScoredDocument(doc_id='c475fd24-34ba-42bd-a3b5-d9a48d880012', fields='[search.TextField(name='name', value='United Kingdom')]', language='en', order_id='45395666'), search.ScoredDocument(doc_id='5fa757d1-05bf-4012-93ff-79dd4b77a878', fields='[search.TextField(name='name', value='United Kingdom')]', language='en', order_id='45395201')]', number_found='2')

但如果我将 query_string 更改为 "United Kin""United",它将返回 0 个结果,如下所示:

search.SearchResults(number_found='0')

我想将此 API 用于普通搜索和 AutoSuggest。实现这一目标的最佳方法是什么?

最佳答案

App Engine 的全文搜索 API 不支持子字符串匹配。

但是,我自己需要这种行为来支持用户键入时的搜索建议。这是我的解决方案:

""" Takes a sentence and returns the set of all possible prefixes for each word.
For instance "hello world" becomes "h he hel hell hello w wo wor worl world" """
def build_suggestions(str):
suggestions = []
for word in str.split():
prefix = ""
for letter in word:
prefix += letter
suggestions.append(prefix)
return ' '.join(suggestions)

# Example use
document = search.Document(
fields=[search.TextField(name='name', value=object_name),
search.TextField(name='suggest', value=build_suggestions(object_name))])

基本思想是为每个可能的子字符串手动生成单独的关键字。这仅适用于短句,但对我来说非常有用。

关于google-app-engine - 谷歌应用引擎( python ): Search API : String Search,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10960384/

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