对于ruby,我正在尝试将格式设为日期:2009-10-01
我在当前日期(2009-10-26),然后将日期更改为"01".
我知道如何做到这一点,但很奇怪最简单的方法,代码明智,以实现这一目标.
是否有任何可用的开源或商业工具允许对数据库内容进行文本片段索引并可以从Java查询?
问题的背景是一个包含数十万条记录的大型MySQL数据库表,其中包含几个VARCHAR列.在这些列中,人们希望搜索内容的片段,因此全文索引(基于单词边界)将无济于事.
编辑:[补充说明为什么这些第一个建议不能解决问题:]
这就是为什么MySQL的内置全文索引不能完成这项工作,Lucene或Sphinx也都不会在答案中提出.我已经看过这两个,但据我所知,这些是基于索引词,不包括停用词和为真正的全文搜索做各种明智的事情.然而这不合适,因为我可能正在寻找像"oison"这样的搜索词,它必须与"Roisonic Street"以及"Poison-Ivy"相匹配.这里的关键区别在于搜索项只是列内容的一个片段,不需要由任何特殊字符或空格分隔.
EDIT2:[增加了一些背景信息:]基于此要求实现的请求功能是对商品管理系统中的项目描述进行非常松散的搜索.用户通常不知道正确的项目编号,而只知道项目名称的一部分.遗憾的是,这些描述的质量相当低,它们来自遗留系统,无法轻易更改.例如,如果人们正在寻找大锤,他们就会进入"雪橇".使用基于单词/令牌的索引,这将找不到存储为"大锤"的匹配,但只有那些听"大锤".需要涵盖各种奇怪的差异,使基于令牌的方法变得不切实际.
目前我们唯一能做的就是LIKE '%searchterm%'
查询,有效地禁用任何索引使用并需要大量资源和时间.
理想情况下,任何此类工具都会创建一个索引,使我能够非常快速地获得类似查询的结果,这样我就可以实现类似聚光灯的搜索,只有当用户选择时,才能通过主键从MySQL表中检索"真实"数据结果记录.
如果可能,索引应该是可更新的(无需完全重建),因为数据可能会更改,并且应该可供其他客户端立即搜索.
我很乐意获得建议和/或经验报告.
编辑3:商业解决方案发现"正常工作" 虽然我对这个问题有很多好的答案,但我想在这里注意,最后我们选择了一种名为"QuickFind"的商业产品,由德国人制造和销售公司名为"HMB Datentechnik".请注意,我不以任何方式与他们联系,因为当我继续描述他们的产品可以做什么时,它可能看起来像.不幸的是,他们的网站看起来很糟糕,只有德语,但产品本身真的很棒.我目前有一个试用版本 - 你必须联系他们,没有下载 - 我印象非常深刻.
由于网上没有全面的文档,我将尝试描述我迄今为止的经验.
他们所做的是根据数据库内容构建自定义索引文件.他们可以通过ODBC集成,但据我所知,客户很少这样做.相反 - 这就是我们可能会做的 - 您从主数据库生成文本导出(如CSV)并将其提供给索引器.这使您可以完全独立于实际的表结构(或任何SQL数据库); 事实上,我们从几个表中导出数据连接在一起.索引可以在以后随时增量更新.
基于它们的服务器(仅仅250kb左右,作为控制台应用程序或Windows服务运行)服务侦听TCP端口上的查询.该协议是基于文本的,看起来有点"旧",但它很简单,有效.基本上,您只需传递要查询的可用索引和搜索条件(片段),空格分隔.有三种输出格式,HTML/JavaScript数组,XML或CSV.目前我正在为一个有点"过时"的有线协议的Java包装器工作.但结果是太棒了:我现在有一个样本数据进行索引8列设置的约500.000记录和我的测试应用程序触发所有8列一个JTextField的内容的搜索上的每一个按键同时被编辑和可更新的结果显示(JTable)实时!这种情况发生时无需访问最初来自MySQL数据的MySQL实例.根据您返回的列,您可以通过使用该行的主键查询MySQL来询问"原始"记录(当然,需要包含在QuickFind索引中).
索引大约是文本导出版本数据大小的30-40%.索引主要受磁盘I/O速度的限制; 我的500.000条记录需要大约一两分钟才能处理完毕.
很难描述这一点,因为当我看到内部产品演示时,我甚至很难相信.他们提供了一个1000万行地址数据库,并搜索了名称,地址和电话号码的片段,当点击"搜索"按钮时,结果在一秒钟之内回来 - 所有这些都在笔记本上完成!据我所知,他们经常与SAP或CRM系统集成,以改善呼叫中心代理只需了解呼叫者姓名或地址片段的搜索时间.
所以无论如何,我在描述这个时可能不会好多了.如果你需要这样的东西,你一定要去看看.谷歌翻译在将他们的网站从德语翻译成英语方面做得相当不错,所以这可能是一个好的开始.
然后我试图使用Zend_Form_Element_Hash它每个请求重新生成一个哈希.
在我的代码中:
// form
$this->addElement('hash', 'hihacker', array('salt' => 'thesal'));
Run Code Online (Sandbox Code Playgroud)
然后我转储$ _SESSION我看到每个页面重新加载的新值.
然后我发送一个表格,它报告错误"令牌'28a5e0e2a50a3d4afaa654468fd29420'与给定的令牌'a64407cc11376dac1916d2101de90d29'"不匹配,每一次 - 新的一对令牌
我正在使用来自COM参考"azroles 1.0 Type Library"的AZROLESLib,我正在尝试为我当前在授权管理器中设置的每个角色创建一个指定任务的列表,但是当我循环执行任务时角色,我得到角色名称.
我环顾四周但找不到任何有用的东西.
这是我目前得到的(它不是超级漂亮,但我只是想让它在此刻工作).
AzAuthorizationStoreClass AzManStore = new AzAuthorizationStoreClass();
AzManStore.Initialize(0, ConfigurationManager.ConnectionStrings["AzManStore"].ConnectionString, null);
IAzApplication azApp = AzManStore.OpenApplication("StoreName", null);
StringBuilder output = new StringBuilder();
Array tasks = null;
foreach (IAzRole currentRole in azApp.Roles)
{
output.Append(currentRole.Name + "<br />");
tasks = (Array)currentRole.Tasks;
foreach (object ob in tasks)
{
output.Append(" -" + ob.ToString() + "<br />");
}
}
return output.ToString();
Run Code Online (Sandbox Code Playgroud)
出来的是:
管理员 - 管理员
客户经理 - 账户经理
企业营销专家 - 企业营销专员
一般员工 - 一般员工
营销经理 - 营销经理
区域营销专家 - 区域营销专员
销售经理 - …
我正在为一个介绍Datamining课程的工作.我想弄清楚算法的时间复杂度(见下文)?是线性/指数/对数/二次/多项式?关于如何处理这样的问题的任何提示将非常感激
考虑以下算法来查找数组中的第三个最小元素:
n, a[1..n]
- 数组a,n是其大小,n> = 3b[1..3], t, i
码:
b[1] = a[1]
b[2] = a[2]
if b[1] > b[2] then t=b[1]; b[1]=b[2]; b[2]=t
b[3] = a[3]
if b[2] > b[3] then t=b[2]; b[2]=b[3]; b[3]=t
if b[1] > b[2] then t=b[1]; b[1]=b[2]; b[2]=t
for (i = 4; i <= n; i = i+1)
if a[i] < b[3] then b[3] = a[i]
if b[2] > b[3] then t=b[2]; b[2]=b[3]; b[3]=t
if b[1] > b[2] …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Clojure扩展JButton,但是当我尝试创建自己的构造函数时遇到了一个问题.每当我使用时,当我尝试实例化我的类时:constructors
,:gen-class
我会不断收到"ClassFormatError:Duplicate field name&signature"消息.
我想我正在遵循Clojure文档.难道我做错了什么?
例:
(ns test.gui.button
(:gen-class
:extends javax.swing.JButton
:constructors {[] [String]}
:init init))
(defn -init []
[["Click Me"] nil])
Run Code Online (Sandbox Code Playgroud) 我对Sharepoint(2007)全新,所以请耐心等待.我想在创建新网站时自动创建aspx页面.这些页面将通过标签链接到标签,标签将由母版页定义.我没有自定义网站定义,并计划将功能装订应用于开箱即用的空白网站定义.
通过我的研究,我认为您可以创建一个Web部件页面并将其转换为一个功能.然后,我可以将其钉在空白网站定义中.问题是我没有找到任何关于如何做到这一点的信息.所以我有两个问题:
我发现有一个人在这里问同一个问题:如何将网页部分页面添加到网站定义中? 我读了第一个回复,但它有点过头了,我不知道它是否真的回答了我的问题.
非常感谢!
好的,所以我试图制作一个简单的小行星克隆.除碰撞检测外,一切正常.
我有两个不同的版本,第一个使用java.awt.geom.Area:
// polygon is a java.awt.Polygon and p is the other one
final Area intersect = new Area();
intersect.add(new Area(polygon));
intersect.intersect(new Area(p.polygon));
return !intersect.isEmpty();
Run Code Online (Sandbox Code Playgroud)
这就像一个魅力......如果你不关心只有120个小行星的40%CPU :(
所以我在网上搜索了着名的分离轴定理,因为我不是很好的数学,我从这里开始实现并转换它以满足我的Java需求:
public double dotProduct(double x, double y, double dx, double dy) {
return x * dx + y * dy;
}
public double IntervalDistance(double minA, double maxA, double minB,
double maxB) {
if (minA < minB) {
return minB - maxA;
} else {
return minA - maxB;
}
}
public …
Run Code Online (Sandbox Code Playgroud) 我正在编写一个Cocoa OS X(Leopard 10.5+)最终用户程序,该程序使用时间戳来计算屏幕上显示内容的统计信息.使用重复的NSTimer运行程序时,会定期计算时间. [NSDate date]
用于捕获时间戳,开始和结束.以秒为单位计算两个日期之间的差异是微不足道的.
如果最终用户或ntp更改系统时钟,则会出现问题. [NSDate date]
依赖于系统时钟,因此如果它被改变,Finish变量将相对于Start变形,从而显着地搞乱了时间计算.我的问题:
1. 即使系统时钟在中途改变,如何准确计算开始和结束之间的时间(以秒为单位)?
我想我需要一个不变的参考时间点,所以我可以计算从那以后经过了多少秒.例如,系统正常运行时间.具有10.6 - (NSTimeInterval)systemUptime
的一部分NSProcessInfo
,它提供了系统正常运行时间.但是,这不起作用,因为我的应用程序必须在10.5中工作.
我尝试使用NSTimer创建时间计数器,但这不准确.NSTimer有几种不同的运行模式,一次只能运行一种.NSTimer(默认情况下)进入默认运行模式.如果用户开始操作UI足够长的时间,这将进入NSEventTrackingRunLoopMode并跳过默认运行模式,这可能导致跳过NSTimer激活,使其成为计算秒数的不准确方式.
我还考虑过创建一个单独的线程(NSRunLoop)来运行NSTimer秒计数器,使其远离UI交互.但我对多线程非常陌生,如果可能的话,我想远离它.此外,我不确定这是否会在CPU被另一个应用程序(Photoshop渲染大图像等等)绑定的情况下准确工作,导致我的NSRunLoop被搁置足够长的时间以使其陷入困境的NSTimer.
我感谢任何帮助.:)
作为更大系列操作的一部分,我正在尝试使用更大字符串的标记化块并摆脱标点符号,非单词gobbledygook等.我使用的初始尝试String#gsub
和正则\W
表达式字符类,如下所示:
my_str = "Hello,"
processed = my_str.gsub(/\W/,'')
puts processed # => Hello
Run Code Online (Sandbox Code Playgroud)
超级,超级,超级简单.当然,现在我正在扩展我的程序来处理非拉丁字符,而且所有的东西都被打破了.Ruby \W
似乎是类似的东西[^A-Za-z0-9_]
,当然,它排除了变音符号(ü,í等)的东西.所以,现在我以前简单的代码以不愉快的方式崩溃和烧毁:
my_str = "Quística."
processed = my_str.gsub(/\W/,'')
puts processed # => Qustica
Run Code Online (Sandbox Code Playgroud)
请注意,gsub()必须删除带重音的"í"字符.我想到解决这个问题的一种方法是扩展Ruby的\ W白名单以包含更高的Unicode代码点,但是它们中有很多,我知道我会错过一些并导致问题(并且我们甚至没有开始考虑非拉丁语言......).另一种解决方案是将我想要摆脱的所有东西列入黑名单(标点符号,$ /%/&/™等),但是,再次,有很多这样的东西,我真的不想开始玩黑名单-敲击一个痣.
有没有人找到这个问题的原则解决方案?是否有一些\W
我尚未发现的隐藏的,Unicode友好的版本?谢谢!