怎么调用搜索框 返回的内容进行处理?

使用问题 · 1144 次浏览
运营:秋风 创建于 2022-10-08 11:29

我阅读了这个;

https://getquicker.net/kc/help/doc/search-adv

然后制作效果如下:

 

当我输入之后,确实可以候选很多选项。这一步我搞定了。

 

但是我遇到的问题就是:

 

支持实时搜索的时候, 该程序每个步骤都在不断运行。感觉很浪费 cpu资源吧,而且程序不好设计,要考虑来回循环的问题,这个是小事。

 

关键是:看不懂返回的内容,

这个里面的粘贴,运行,搜索,都可以理解。 并且测试成功。

$=
"大写:"+{searchText}.ToUpper()+"(text命令,点击复制,ctrl+点击粘贴)|operation=text&data=" + {searchText}.ToUpper().UrlEncode() + "\r\n"
+ "复制(copy命令)|operation=copy&data=" + {searchText}.UrlEncode() + "\r\n"
+ "右键菜单测试(点击右键可以查看自定义菜单)|operation=copy&data=" + {searchText}.UrlEncode()+ "&menu=" + {menuData}.UrlEncode() + "\r\n"
+ "文件路径(点击右键可以查看菜单)|operation=run&data=" + @"C:\Windows\System32\notepad.exe" + "&datatype=path" + "\r\n"
+ "粘贴(paste命令)|operation=paste&data=" + {searchText}.UrlEncode() + "\r\n"
+ "运行(run命令,直接运行文字)|operation=run&data=" + {searchText}.UrlEncode() + "\r\n"
+ "搜索(run命令打开网址)|operation=run&data=" + ("https://baidu.com/s?wd=" + {searchText}.UrlEncode()).UrlEncode() + "\r\n"
+ "键入(sendkeys命令,模拟按键B语法)|operation=sendkeys&data=" + {searchText}.UrlEncode() + "\r\n"
+ "回调(callback命令,返回给动作处理参数)|operation=callback&data=" + {searchText}.UrlEncode() + "\r\n"

 

就是关于:

"回调(callback命令,返回给动作处理参数)|operation=callback&data="
搞不懂这个是什么? 是不是回调给 当前搜索动作,进行数据处理? 那么问题来了?回调的值是什么?回调的值储存在哪里?怎么读取?
回调在哪个动作?如果是搜索动作,那么当前的搜索动作又会重新运行一遍。
 
 
我的需求是:
比如我通过 一个搜索 : 20粒维生素片,就可以出现一个对应的取值:
把词典中 :20粒维生素片:https://detail.tmall.com/item.htm?id=631553310702
的 :https://detail.tmall.com/item.htm?id=631553310702 发送到当前窗口,按 ←┘Enter键  ,并且提示成功。
 
但是我发现用:
"粘贴(paste命令)|operation=paste&data=" 并不好使,为啥?因为 这个步骤只有 粘贴功能,没有 按下←┘Enter键和 提示可以能编辑的。
 
所以我想在得到动作A 搜索结果的一项值之后,20粒维生素片 传给另外一个动作B,让动作B进行 :20粒维生素片:取值词典,然后进行  https://detail.tmall.com/item.htm?id=631553310702 发送到当前窗口,按 ←┘Enter键  ,并且提示成功。
不知道怎么传过来。
 
所以我觉得这个实时搜索,应该这样去设计:放一个循环模块,放一个初始模块,放一个循环结束之后 处理的模块。这样就很完美。因为当前的实时搜索,就是一直运行所有的模块,并且在选择一个结果之后,没有可操作编辑的空间。
另外无法调试,看不到里面的程序运行逻辑,因为调试界面 不支持 实时搜索。
 
运营:秋风 最后更新于 2022/10/8

回复内容
CL 2022-10-08 14:17
#1

回调就是再调用动作一次,然后把data参数的内容作为动作参数传给动作。

可以在动作中先判断一下参数内容,如果是回调的时候做相应处理后停止动作。(通常在动作的开始来判断参数的内容)


如果是搜索结果后做后续处理,可以考虑用 “用户选择” ,比较简单一些。

运营:秋风 回复 CL 2022-10-08 15:10 :

用户选择,又有一个问题。就是:

 弹框用户选择,搜索框就会失去焦点, 无法进行删除和再来添加字搜索。,必须再来切换下窗口。

CL 回复 运营:秋风 2022-10-08 15:23 :

用户选择里可以直接筛选,不用搜索框。

运营:秋风 回复 CL 2022-10-10 17:58 :

我想问问,我是这样写的格式为:

筛选结果(提示说明)|operation=callback&data=20粒维生素片 国产版 增速口罩+创口贴

结果date=返回的值 不是一个完整的, 好像无法识别+号。
返回的为:20粒维生素片 国产版 增速口罩 创口贴
少了+, 咋书写规范,可以正常返回 +号呢?


CL 回复 运营:秋风 2022-10-10 20:29 :

data=后面的内容需要URL编码一下,不然后面的内容可能让整个格式不合法。

运营:秋风 回复 CL 2022-10-10 22:40 :

筛选结果(提示说明)|operation=callback&data=20粒维生素片 国产版 增速口罩+创口贴 中的

筛选结果,其中有 ()括号,请问咋解决?

比如:

20粒维生素片(国产版)(提示说明:快没有货了,请不要批发卖)|operation=callback&data=20粒维生素片 国产版 增速口罩+创口贴
那么就会把国产版当成了提示说明, 而不参与搜索

CL 回复 运营:秋风 2022-10-10 22:47 :

如果返回的内容比较复杂,建议使用json、表达式方式返回,参考 https://getquicker.net/kc/help/doc/search-adv#gXa3r 

运营:秋风 回复 CL 2022-10-10 22:52 :

好,谢谢大神,我用的是词典读取用的是json 词典方式,但是主要json编辑起来更加复杂,不好批量生成,我现在批量生成用Power BI的 query。另外数据如果太多就影响性能,本来搜索就是几万行中找结果。

CL 回复 运营:秋风 2022-10-11 08:02 :

用表达式更简单一些,可以有提示补全。 数据太多确实不太好,应该直接在源数据中搜索完成(比如数据库中通过SQL语句筛选得到结果)后返回结果再显示,而不是在quicker里执行筛选。

运营:秋风 回复 CL 2022-10-11 21:30 :

我是用的 Quicker的筛选列 包含 文本,进行结果展现的。 目前是2万行数据,感觉速度还行。 不会用SQL这个啊。简单吗? 弄这个搜索研究,就花了3天多时间。 

运营:秋风 最后更新于 2022-10-13 09:10
EC10010 2022-10-08 15:47
#2

看看这个子程序如何:EC实时搜索(子程序)

运营:秋风 回复 EC10010 2022-10-08 16:08 :

感谢,我先看看,高手编辑的东西 挺复杂的。我看看能不能学到一点

回复主贴