我们正在使用搜索模型开发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 ...)。
谁能告诉我怎么样?
答案 0 :(得分:0)
我不知道你对“估计语法”的意思,但在我看来,第1-3点是实际的Lucene查询。您必须检查参数并根据您拥有的查询类型的参数名称和数量来决定。使用Query的不同子类,特别是BooleanQuery,然后构建一个适当的Lucene查询并使用它来创建一个Hibernate Search FullTextQuery。在此全文查询中,您可以指定开始和限制参数。如果使用投影直接从索引检索字段值,还可以在全文查询中设置投影字段名称。 我希望这有点帮助。