Lucene 要求一个设计模式

Lucene 要求一个设计模式,lucene,hibernate-search,Lucene,Hibernate Search,我们正在使用搜索模型开发web应用程序 在搜索servlet中,它从客户端捕获请求参数,然后构建一个hibernate搜索查询进行搜索 现在的问题是客户端的参数是可变的 我们接受的所有参数如下所示: 1) 关键词 用于搜索的关键字,即使仅传递此参数,也可以处理搜索请求 有效示例: /search?keyword="test" /search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30 /search?low

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

在搜索servlet中,它从客户端捕获请求参数,然后构建一个hibernate搜索查询进行搜索

现在的问题是客户端的参数是可变的

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

1) 关键词

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

有效示例:

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

这四个参数必须同时出现,否则永远不会出现。因为这四个参数用于lucene中的TermRangeQuery。如果其中一种情况发生,则其他三种情况也必须发生

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

有效示例:

/search?keyword="test"
/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30
/search?lowleftX=10&lowleftY=10&upperrightX=40&upperrightY=30&keyword="test"
3) 类别

这用于限制搜索范围(仅在特殊类别内搜索)

4) 开始,限制

这两个参数用于分页

5) 返回场

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

因此,我不知道如何使用估算语法(if…,else…,if…)构建查询


有人能告诉我怎么做吗?

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