要求设计模式

时间:2010-11-19 11:39:21

标签: lucene hibernate-search

我们正在使用搜索模型开发Web应用程序。

在搜索servlet中,它从客户端捕获请求参数,然后构建一个用于搜索的hibernate-search查询。

现在问题是来自客户端的参数是可变的!。

我们接受的所有参数如下:

1)关键字。

用于搜索的关键字,即使只传递此参数,也可以处理搜索请求。

有效示例:

/search?keyword="test"

2)lowleftX,lowleftY,upperrightX,upperrightY。

这四个参数必须同时发生或从不发生。因为这四个参数用于lucene中的TermRangeQuery。如果其中一个发生,其余三个也必须发生。

并且,这四个参数可以在同一时间与“关键字”一起出现。

有效示例:

/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30
/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30&keyword="test"

3)类别

这用于限制搜索范围(只在特殊类别中搜索)。

4)开始,限制

这两个参数用于分页。

5)returnFields

将从索引中检索的returnFields(如果它存储在索引中)并返回给客户端。

所以我不知道如何使用估计语法构建查询(如果.... else .... if ...)。

谁能告诉我怎么样?

1 个答案:

答案 0 :(得分:0)

我不知道你对“估计语法”的意思,但在我看来,第1-3点是实际的Lucene查询。您必须检查参数并根据您拥有的查询类型的参数名称和数量来决定。使用Query的不同子类,特别是BooleanQuery,然后构建一个适当的Lucene查询并使用它来创建一个Hibernate Search FullTextQuery。在此全文查询中,您可以指定开始和限制参数。如果使用投影直接从索引检索字段值,还可以在全文查询中设置投影字段名​​称。 我希望这有点帮助。