我正在尝试使用elasticsearch中的一些数据创建一个自动完成演示。我有一个简单的代码,它接受一个输入,然后返回一个推荐的自动完成列表。
while True:
search = input("start typing")
body = {
"size": 5,
"query": {
"multi_match": {
"query": "'"+search+"'"
}
}
}
res = es.search(index="autocomplete", body=body) //getting the suggestions
for hit in res['hits']['hits']:
doc = hit["_source"]["company_name"]
print(doc) //printing the suggestions
现在它是这样工作的:假设我想搜索“google”。终端会说 start typing!
我会键入“g”,按回车键,我会得到一个自动完成的建议列表,然后它会说 start typing!
我会键入“go”并得到一个新的建议列表,然后下次键入“goo”等,只是想看看自动完成建议是如何随着我键入的单词越来越多而变化的。
我想让它,如果我键入或更改任何东西,它会自动运行自动完成代码,所以我可以只键入“g”,它运行,然后我键入“o”,它添加到以前的“g”,所以它运行“去”,然后我键入另一个“o”,“g”,“l”,“e”。基本上,我希望它运行像一个正常的自动完成谷歌搜索,当你不断键入它将更新的建议。在python中有这样做的方法吗?
1条答案
按热度按时间kulphzqa1#
我想得到它,如果我键入或更改任何东西,它会自动运行自动完成代码
不,在python中没有现成的方法可以做到这一点;两个
input
以及raw_input
要求用户按Enter
. 下面是一些讨论可能解决方案的stackoverflow帖子:如何读取用户的单个字符?
python中未按enter键的原始输入
在python中轮询键盘(检测按键)
如何在python中获取keycodes
您选择的解决方案将取决于您是否需要跨平台支持。