要求是:
<u>和</u>这里为简单起见,答案可以通过仅包含ASCII字符的列表集中于不区分大小写的搜索,并假设术语分隔符是普通空格 - 即.输入为"Foo bar baz"的查询表示搜索项['foo', 'bar', 'baz'].
澄清:
最终的应用程序(也许并不奇怪)是一种自动完成的.
TL; DR
最近的小提琴并排比较提出的算法:
https ://jsfiddle.net/Mikk3lRo/ndeuqn02/7/
(如果添加新算法,请随时更新此链接)jsPerf以更现实/更具代表性的方式比较算法 - 在每个代表上,一些字符串基本上"输入"一个字符:https:
//jsperf.com/comparison-of-algorithms-to-search-and-highlight在这一点上,很清楚(由于trincot的优秀基础比较),原始实现所使用的大部分时间都花在了DOM输出上.它的重要性尽可能地在小提琴中被最小化.
还有,在每个搜索算法之间的性能有着明显的区别,但他们没有一个人是一直快速EST上的每个按键.在重新审视并清理我自己的"分而治之"之后,在我尝试的任何现实场景中,它的表现都优于其他人.
Tigregalis介绍了预运行优化的想法,这似乎是合理的,因为选项不太可能在击键之间改变.我在这里为所有方法添加了(一个函数).我从中看到一个明显的好处的唯一算法是在Skirtle的Permutations中,但我会鼓励每个回答者考虑它是否对他们自己的算法有用.
有些算法比其他算法更容易适应.我仍然认为这比实际实施中的微小性能差异更重要.
请注意,当前版本的Tigregalis'收缩集有一个错误 - 我已将其从小提琴和jsperf中排除,直到修复为止.
理论上,这可以通过"手动"构建一个RegExp来解决,该RegExp包含由捕获组分隔的搜索项的每个可能的排列,以捕获术语之间的任何内容 - 搜索"foo bar"结果(foo)(.*?)(bar)|(bar)(.*?)(foo).
然后突出显示一次通过string.replace().如果字符串中有任何更改,我们会匹配.
演示:
var options = ['United States', 'United Kingdom', 'Afghanistan', 'Aland Islands', 'Albania', 'Algeria', 'American Samoa', …Run Code Online (Sandbox Code Playgroud)我正在尝试使用SOAP/wsdl连接到web服务并进行身份验证,但我经常收到错误:
<b>Fatal error</b>: Uncaught SoapFault exception: [a:InternalServiceFault] Object reference not set to an instance of an object. in /path/install.php:16
Run Code Online (Sandbox Code Playgroud)
以下是我目前的代码:
<?php
header("Content-Type: text/plain");
$userinfo = array(
'Username'=>'test',
'Password'=>'test'
);
$wsdl_url = 'https://ws-e-distribution.kmd.dk/standard/ServiceAutorisation/ServiceAutorisation.svc?wsdl';
$client = new SoapClient($wsdl_url);
print_r($client->__getFunctions());
print_r($client->__getTypes());
//This is the problematic line:
$response = $client->__soapCall('LogOn', array('LogOn' => $userinfo));
var_dump($response);
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一切可能的方法来包装我可以想到的用户名和密码参数,或者找到任何人建议:
stdClass SoapVarSoapParam我已经打过电话的功能等$client->__soapCall('LogOn', [milliontries]),以及$client->LogOn([milliontries])
......什么都行不通,请帮忙.
更新:
我终于设法得到一个不同的错误(这表明至少我遇到了一些稍微错误的东西).我的代码现在看起来像这样:
$response = $client->LogOn(array('logon' => array('Username' => 'test','Password' => 'test')));
Run Code Online (Sandbox Code Playgroud)
这给了我一个关于LogOnType …