首页 > 解决方案 > 在输入时输入python,在更改输入时重新运行代码

问题描述

我正在尝试使用弹性搜索中的一些数据创建一个自动完成演示。我有一个简单的代码,它接受输入,然后返回推荐的自动完成列表。

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”所以它运行“Go”,然后我输入另一个“o”、“g”、“l”、“e”。基本上我希望它像谷歌搜索的正常自动完成一样运行,当你继续输入时,它会更新建议。有没有办法在python中做到这一点?

标签: pythonelasticsearchautocomplete

解决方案


如果我输入或更改任何内容,我想将它带到哪里,它会自动运行自动完成代码

不,在 Python 中没有开箱即用的方法可以做到这一点。input和都raw_input要求用户按Enter。以下是一些讨论可能解决方案的 StackOverflow 帖子:

您选择的解决方案将取决于您是否需要跨平台支持。


推荐阅读