我有一个SQL Server产品表,每个产品都有一个在我们网站上公开的描述.我想防止,或者至少警告我们的用户何时,描述与其他产品的描述太相似.每个产品的描述长度都会有很大差异.
我想查询包含相互之间的重复/相似段落/文本块的描述的产品.即字符串A有一堆独特的内容,但与字符串B共享一个相似/相同的段落.但是,我不确定哪种相似度算法最好用:
该Levenshtein距离和哈罗- Winler距离算法似乎只与短字符串工作.
我不确定最长的常见子序列算法是否能很好地考虑到大的差异.即它似乎忽略了两个字符之间的潜在空间,找到任何类似的组合序列.
模糊散列的声音听起来像我正在寻找的,但我不只是寻找具有微妙差异的重复内容.我也在寻找在独特的文本块中注入细微差异的重复内容.我不知道如何在SQL中实现模糊哈希.SOUNDEX()和DIFFERENCE()似乎使用模糊散列,但对我的用例来说非常不精确.
理想情况下,相似性SQL函数会很快,但我可以将缓存的相似度值存储在另一个表中,并安排作业偶尔更新.
实现此目的的最佳算法/ SQL(或CLR集成)实现是什么?
我有几个节点应用程序的nginx反向代理.我们的用户都在Windows域控制的网络上.我知道我可以使用express-ntlm或passport-windowsauth来提示用户输入他们的登录凭据,但这是非集成的身份验证.
是否可以在没有IIS(或Apache)的node.js(或nginx)中直接使用集成的auth(Windows认证用户可以绕过凭证提示)?如果是这样,怎么样?
我想我们可以用IIS代替nginx作为反向代理,但如果可以,我想避免这样做.
我有一个表格包含代表客户区域的POLYGONS/MULTIPOLYGONS:
这是一个简化的查询,将重现我遇到的问题:
DECLARE @point GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT (-76.992188 39.639538)', 4326)
SELECT terr_offc_id
FROM tbl_office_territories
WHERE terr_territory.STIntersects(@point) = 1
Run Code Online (Sandbox Code Playgroud)
看起来像一个简单,直接的查询需要12或13秒才能执行,对于这样一个简单的查询来说,这似乎是一个非常复杂的执行计划.

在我的研究中,有几个消息来源建议在查询中添加索引提示,以确保查询优化器正确使用空间索引.添加WITH(INDEX(idx_terr_territory))没有任何效果,并且从执行计划中可以清楚地看出,无论提示如何,它都引用了我的索引.
从美国人口普查数据导入的领土多边形似乎有可能是不必要的复杂,因此我创建了第二列,并测试了具有不同程度公差的缩小多边形(带有Reduce()方法).对新列运行与上面相同的查询会产生以下结果:
显然朝着正确的方向前进,但精确度下降似乎是一个不优雅的解决方案.这不是索引应该是什么?对于这样的基本查询,执行计划似乎仍然很复杂.
出于好奇,我删除了空间索引,并被结果震惊:

我正在使用$('form-selector').get(0).reset()将表单值重置为其原始页面加载状态.
编辑后,表单将通过提交$.ajax(),我将在我们的服务器上有新的"默认"值.表单元素仍将存在于dom中,用户可以再次提交以进行更新.我想要"默认"(重置值)来反映我们服务器上的内容(忽略任何其他外部更新).是否可以在 没有页面刷新的情况下更新将每个表单元素更改为的基础值form.reset() ?
跨浏览器支持会很好,但由于这是一个内部应用程序,谷歌Chrome只是足够的.
<form>
<input type="text" value="foo" name="bar" />
<input type="submit" value="Submit" />
<Input type="reset" value="Reset" />
</form>
Run Code Online (Sandbox Code Playgroud)
$(function(){
$('form').submit(function() {
// Omitting code that sends form values to the server
// TODO: update underlying form.reset()
// values to what's currently in each
// form element.
return false;
});
});
Run Code Online (Sandbox Code Playgroud)
确认!我没有提到我正在寻找处理所有表单元素类型的东西.即input[type=text], input[type=radio], input[type=checkbox], select, textarea.
如果它也可以处理HTML5表单元素,那将特别棒!即input[type=date], input[type=number], input[email], input[url], input[type=range], input[type=color]等等.
对困惑感到抱歉.
我想在双击表单时启用所有表单元素,并简化代码如下:
<form>
<input type="text" name="foo" disabled />
<select name="bar" disabled>
<option>a</option>
<option>b</option>
</select>
</form>
<script type="text/javascript">
$(function() {
$('form').dblclick(function() {
$(this).find('input,select').removeAttr('disabled');
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
但是,将鼠标悬停在禁用的<select>元素上时,不会触发表单双击事件.不幸的是,"readonly"属性不适用于<select>元素.
这适用于内部应用程序,我只需要在Google Chrome上运行.
更新:
我在这方面得到了很多答案,我想我需要修改我的问题以帮助指导这个过程...... W3C规范中关于残疾人形式元素的说法是什么?...例如,似乎双击事件不会触发<input>Firefox中禁用的元素.也许它在Chrome中闪现的事实是一个错误/错位,我不能指望总是在那里.
目前,在表单上方的绝对定位的包装元素上观察双击事件似乎是最好的选择...即使我讨厌添加额外的包装元素.
html ×2
jquery ×2
algorithm ×1
asp.net ×1
clr ×1
forms ×1
iis ×1
javascript ×1
mouseevent ×1
nginx ×1
node.js ×1
reset ×1
similarity ×1
sql-server ×1
sqlgeography ×1