小编Mik*_*one的帖子

如何使用Lucene最好地搜索数据库?

我正在研究针对我们的数据库提供更好搜索功能的机制.它目前是一个巨大的瓶颈(导致长期查询损害了我们的数据库性能).

我的老板想让我看看Solr,但经过仔细观察,似乎我们真的想要一些与Lucene本身的数据库集成机制.

Lucene FAQ中,他们推荐使用Hibernate Search,CompassDBSight.

作为我们当前技术堆栈的背景,我们在Tomcat上使用直接JSP,没有Hibernate,在其上没有其他框架......只针对DB2数据库直接使用Java,JSP和JDBC.

鉴于此,似乎Hibernate Search可能更难以集成到我们的系统中,尽管在这样的集成之后可以选择使用Hibernate.

有没有人可以使用其中一种工具(或其他类似的基于Lucene的解决方案)分享可能有助于选择合适工具的经验?

它需要是一个FOSS解决方案,理想情况下将自动更新来自数据库的更新Lucene(尽管有效),而无需额外的努力在更改时通知工具(否则,似乎滚动我自己的Lucene解决方案将只是一样好).此外,我们有多个应用程序服务器只有一个数据库(+故障转移),因此如果能够轻松地无缝地使用所有应用程序服务器的解决方案,那就太好了.

我现在继续检查选项,但是利用其他人的经验会非常有帮助.

database lucene integration hibernate-search

7
推荐指数
1
解决办法
3389
查看次数

Ant的macrodef的默认元素?

我想创建一个宏:

<macrodef name="testing">
  <element name="test" implicit="yes"/>
  <sequential>
    <test/>
  </sequential>
</macrodef>
Run Code Online (Sandbox Code Playgroud)

然后使用它:

<testing>
  <echo message="hello world"/>
</testing>
Run Code Online (Sandbox Code Playgroud)

但是,我想为隐式元素指定一个默认值...类似于:

<macrodef name="testing">
  <element name="test" implicit="yes">
    <echo message="hello world"/>
  </element>
  <sequential>
    <test/>
  </sequential>
</macrodef>
Run Code Online (Sandbox Code Playgroud)

所以我可以这样使用它:

<testing/>
Run Code Online (Sandbox Code Playgroud)

除了我想要更改默认元素.

如果没有通过Java类定义任务,这可能吗?到目前为止,我没有看到任何说明如何操作的文档,如果是的话.


更新

我最终通过使用refid for filesets来解决我的特定问题(这实际上是我试图将其放入元素中).使用refid,只需使用一个具有默认值的macrodef属性即可.

另一个替代方法是创建一个使用该元素的新基本宏,然后我可以将我现有的宏保存为使用那个...但是,对于一个元素没有真正的默认机制(这会很好).

所以,西蒙得到了答案,因为他是对的!谢谢!

ant

7
推荐指数
1
解决办法
3644
查看次数

数据库案例不敏感指数?

我有一个查询,我在搜索字符串:

SELECT county FROM city WHERE UPPER(name) = 'SAN FRANCISCO';
Run Code Online (Sandbox Code Playgroud)

现在,这工作正常,但它不能很好地扩展,我需要优化它.我找到了一个创建生成视图的选项,或类似的东西,但我希望使用索引的更简单的解决方案.

我们正在使用DB2,我真的想在索引中使用表达式,但是这个选项似乎只能在z/OS上使用,但我们运行的是Linux.我还是尝试了表达式索引:

CREATE INDEX city_upper_name_idx
ON city UPPER(name) ALLOW REVERSE SCANS;
Run Code Online (Sandbox Code Playgroud)

但当然,它在UPPER(名称)上窒息.

是否有另一种方法可以以这种方式创建索引或类似的东西,这样我就不必重新构建现有的查询以使用新生成的视图,或者更改现有列,或任何其他此类侵入式更改?

编辑:我愿意听取其他数据库的解决方案......它可能会延续到DB2 ......

sql database oracle db2 indexing

6
推荐指数
2
解决办法
8173
查看次数

我可以将任意命令块传递给bash函数吗?

我正在使用bash脚本,如果存在特定文件,则需要有条件地执行一些操作。这是多次发生,所以我抽象了以下函数:

function conditional-do {
    if [ -f $1 ]
    then
        echo "Doing stuff"
        $2
    else
        echo "File doesn't exist!"
    end
}
Run Code Online (Sandbox Code Playgroud)

现在,当我要执行此操作时,我将执行以下操作:

function exec-stuff {
    echo "do some command"
    echo "do another command"
}
conditional-do /path/to/file exec-stuff
Run Code Online (Sandbox Code Playgroud)

问题是,我烦恼的是我要定义两件事:一组要执行的命令的功能,然后调用我的第一个功能。

我想以一种干净的方式直接将此命令块(通常是2个或更多)传递给“条件执行”,但是我不知道这是如何可行的(或者甚至是可能的)...有人吗?有任何想法吗?

请注意,我需要将其作为可读的解决方案...否则,我宁愿坚持使用现有的东西。

bash

6
推荐指数
1
解决办法
2549
查看次数

如何从Rails中重启Rails?

好的,所以我想在Rails中创建一个动作来重启自己.我做了一点搜索,发现:

http://snippets.dzone.com/posts/show/5002

这表示2个命令,一个停止,另一个重启.以下杀戮:

ps -a|grep "/usr/local/bin/ruby script/server"|grep -v "grep /usr"|cut -d " " -f1|xargs -n 1 kill -KILL $1
Run Code Online (Sandbox Code Playgroud)

-HUP信号没有为我重新启动,所以我试图破坏上面的命令(调整使命令工作正常,我在Ubuntu下启动服务器):

ps -eaf|grep "ruby script/server"|grep -v grep|cut -d " " -f3|xargs -n 1 kill -KILL $1;script/server
Run Code Online (Sandbox Code Playgroud)

这在我的环境中工作正常,所以我尝试设置一个动作来执行它:

def restart
  fork { exec "ps -eaf|grep \"ruby script/server\"|grep -v grep|cut -d \" \" -f3|xargs -n 1 kill -KILL $1;script/server" }
  redirect_to "/server_maintenance"
end
Run Code Online (Sandbox Code Playgroud)

该操作可以很好地杀死服务器,但实际上并没有启动服务器备份:

=> Booting Mongrel
=> Rails 2.3.2 application starting on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to …
Run Code Online (Sandbox Code Playgroud)

ruby mongrel ruby-on-rails

6
推荐指数
1
解决办法
9041
查看次数

解决停顿问题比人们想象的容易吗?

虽然一般情况是不可判定的,但许多人仍然可以解决日常使用中相当不足的问题.

在科恩关于计算机病毒的博士论文中,他展示了病毒扫描如何与停止问题等效,但我们有一个完整的行业围绕着这一挑战.

我也见过微软的终结者项目 - http://research.microsoft.com/Terminator/

这让我想问一下 - 停止问题被高估 - 我们是否需要担心一般情况?

随着时间的推移,类型是否会变得完整 - 依赖类型似乎是一个很好的发展?

或者,从另一个角度来看,我们是否会开始使用非图灵完整语言来获得静态分析的好处?

language-agnostic types computability inference

5
推荐指数
2
解决办法
1756
查看次数

Ruby和Ubuntu的Notify-OSD

我在Ruby GTK应用程序中使用ruby-libnotify,它可以很好地在Ubuntu中创建一个气泡弹出窗口.我在哈代,这一切都很棒.然后我让其他人在Jaunty上尝试应用程序,而不是像我预期的那样使用新的Notify-OSD系统的气泡弹出窗口,通知变成了一个对话框.

我调查了一下,发现Ubuntu wiki说问题是因为我设置了0的超时:

某些程序指定expire_timeout为0以生成永远不会自行关闭的通知,假设它们可以像在notification-daemon中一样手动关闭.由于这通常是针对需要响应或确认的消息进行的,因此Notify OSD将其显示为警告框而不是泡泡.

有没有办法我可以通过某种方式使用libnotify来获得具有"永不过期"超时的正常气泡?如果我可以使用旧的通知系统,我实际上更喜欢它,因为Notify-OSD似乎根本不支持永久性气泡.

为我设置对话框是不可接受的,因为它不会停留在所有窗口上,因此用户不会立即看到弹出窗口(这是使用气泡弹出窗口的全部要点).

ruby libnotify

5
推荐指数
1
解决办法
1827
查看次数

jQuery UI Datepicker:当它也被选中时,今天不要突出显示

我正在使用jQuery datepicker来选择日期.它工作正常,除了我想要更改1个默认行为.当您选择一天时,会突出显示所选日期(我喜欢).当天也突出显示,但使用不同的CSS样式(我也喜欢).但是,如果您选择当前日期,则突出显示,因为它是当前日取代它被选中...我更希望它被选中以取代当天的高亮显示,我觉得会很清楚您选择了当天.

现在,我觉得我可以更新css来解决我的问题.但是,我真的不想调整开箱即用的jQuery UI css,因为我想稍后将皮肤添加到我的应用程序中.这意味着如果我抓住了一堆jQuery UI主题......那么我必须对它们进行相同的调整(非常不受欢迎).

我可以更新实际的Datepicker插件来执行此操作,但后来我遇到了如果我想稍后更新我的Datepicker的问题......我需要记住再次进行此修复.

理想情况下,我可以使用Datepicker中内置的一些选项来实现我的目标,但是到目前为止,没有一个选项似乎是正确的.我会满足于某种JavaScript黑客攻击,或css陷入页面,但我现在不知所措.

javascript css jquery datepicker

4
推荐指数
1
解决办法
1万
查看次数

db2 中有“最伟大”的函数吗?

我在 MYSQL 和显然其他数据库引擎中发现有一个“最伟大”的函数可以使用,例如:great(1, 2, 3, 4),它会返回 4。我需要这个,但我使用的是 IBM 的 DB2 . 有没有人知道这样的等效函数,即使它只接受 2 个参数?

我发现 MAX 应该在某处执行此操作,但它不起作用……它仅适用于选择列的 MAX。

如果没有这样的功能,有没有人知道执行此操作的存储过程可能是什么样的?(我没有存储过程经验,所以我不知道 DB2 有什么能力)。

sql db2

3
推荐指数
1
解决办法
9802
查看次数

如何从method_missing获取绑定?

我试图在Ruby(1.8)中的method_missing中找到一种从调用者获取绑定的方法,但我似乎无法找到一种方法来实现它.

希望以下代码解释我想要做的事情:

class A
  def some_method
    x = 123
    nonexistent_method
  end

  def method_missing(method, *args, &block)
    b = caller_binding # <---- Is this possible?
    eval "puts x", b
  end
end

A.new.some_method
# expected output:
#   123
Run Code Online (Sandbox Code Playgroud)

那么......有没有办法获得调用者的绑定,或者这在Ruby(1.8)中是不可能的?

ruby binding

3
推荐指数
1
解决办法
750
查看次数

如何在Linux上使用Java或JRuby确定是否正在运行不同的进程ID?

我需要查看给定的进程ID是否正在运行,它必须在Java或JRuby(最好是Ruby解决方案)中工作.它可以依赖于Linux系统(特别是Debian和/或Ubuntu).

我已经有了我正在寻找的PID,只需要查看它是否正在运行.


更新:

感谢所有人的回复!我很欣赏它,但它不是我要找的东西...我希望在标准的Ruby库(或Java,但最好是Ruby)中有一些东西......如果没有这样的库调用存在,我可能会坚持我已经拥有的procfs解决方案.

ruby java linux pid jruby

2
推荐指数
2
解决办法
6574
查看次数

从 FireFox 或命令行安装 CAB 文件

我有一个 CAB 文件,其中包含一些 DLL、一个 OCX ActiveX 控件、一个描述内容的 OSD 和一个用于安装 DLL 和 ActiveX 控件的 INF。这些来自第 3 方,所以除了它们如何分发给客户之外,我无法控制任何事情。

它们在 Java 小程序中使用,并且可以跨浏览器工作,但似乎只有 IE 支持实际安装 CAB 文件。

安装是通过以下方式完成的:

<OBJECT classid="clsid:actual-class-id-here" NAME="name"
        width="0" height="0" codebase="xxxx.cab#Version=w,x,y,z">
  <param name="useslibrary" value="xxxx">
  <param name="useslibrarycodebase" value="xxxx.cab">
  <param name="useslibraryversion" value="w,x,y,z">
</OBJECT>
Run Code Online (Sandbox Code Playgroud)

所以,我需要一种方法来安装这个可以跨浏览器工作的 CAB 文件。由于以上只能通过 IE 工作,我需要一个替代方法,或者我需要一种从命令行安装它的方法,这将是一个合理的解决方法(然后我可以设置一个安装程序来处理它)。这需要通过 Vista 在 XP 上运行。

任何帮助将不胜感激!

编辑:从命令行安装会更受欢迎,因为那样我可以做一个不特定于 IE、FireFox 或任何其他浏览器的解决方案。

windows activex cab cross-browser

2
推荐指数
1
解决办法
2万
查看次数

在DB2中增加一次序列两次

我需要在DB2(版本9.1)中两次获取序列的下一个值.而不是执行以下两次:

SELECT nextval FOR schema.sequence AS id
FROM dual
Run Code Online (Sandbox Code Playgroud)

我想做的事情如下:

SELECT nextval FOR schema.sequence AS id1,
       nextval FOR schema.sequence AS id2
FROM dual
Run Code Online (Sandbox Code Playgroud)

除上述内容外,仅增加一次:

ID1         ID2        
----------- -----------
        643         643

  1 record(s) selected.
Run Code Online (Sandbox Code Playgroud)

我被迫只查询两次,还是有办法在1次查询中增加两次?

db2 sequence

2
推荐指数
1
解决办法
6025
查看次数