2010-04-14 158 views
0

如果我的搜索字段为20或更多,并且任何组合都应该有效,那么最佳方法是什么?有没有什么特殊的方法可以在openJPA中实现,或者本机SQL更好。任何想法都会有帮助。谢谢。多个搜索字段

+0

您要求任何20个以上的字段进行搜索将mike很难有一个索引用于您的查询,这将导致缓慢的搜索 – 2010-04-14 19:39:01

回答

0

我想你可能想使用像“Hibernate Search”这样的全文搜索引擎的强大功能到DB模型。因此,您可以提供Google搜索功能,以执行您的客户想要执行的任何搜索组合。

我开发了一个带GUI的演示应用程序来测试各种查询类型。

退房 - http://code.google.com/p/hb-search-demo/

1

您可以尝试在存储过程或参数化的SQL语句是这样的。通过这种方式,即使只有少数几个有值,您也可以传入所有字段。

@param1 varchar(25), 
@param2 int, 
@param3 varchar(10), 
@param4 char(1) 

SELECT column1, column2, column3, column4 
FROM TABLE 
WHERE (column1 = @param1 OR @param1 IS NULL) 
AND (column2 = @param2 OR @param2 IS NULL) 
AND (column3 = @param3 OR @param3 IS NULL) 
AND (column4 = @param4 OR @param4 IS NULL)