如何执行这些SOLR查询?

时间:2013-04-01 06:40:31

标签: solr solrj edismax dismax

我有一个索引数据(使用来自rdbms的solrj索引),其中包含与银行业务相关的字段,如(样本):customerid,cust_name,accountno,amount,positions,pos_value,EOD_value等

现在我想对数据和搜索查询进行一些搜索:

  • 前10名股票/头寸(基于股票价值)
  • 按银行金额递减顺序排名前5位的客户
  • 哪一只股票在一天内上涨(以及股票详情)
  • 特定时间范围内股票的最低价值

如何在SOLR中查询上述内容 我确实读过函数查询和solr插件,但找不到太多有用的信息...

我们可以使用一些数学运算(如平均值,总和等)对字段(金额,股票价值等)进行分面...

我想将速度用户界面用于以下搜索,以及需要对其搜索框进行哪些自定义? 任何想法???

2 个答案:

答案 0 :(得分:3)

Solr是高性能文本搜索引擎,基于Lucene,一个优秀的令牌匹配和评分库。这就是说,您想要运行的查询类型肯定会以某种方式与Solr一起工作,但您必须向Solr提供您要搜索的所有数据。 Solr不会为您计算最小,最大平均值。它的工作是在先前计算的值中尽可能快地查找,排序和排序。

您列出的字段可能无法提供您要查找的所有详细信息。您需要更多索引。

如果您在索引中有所需的数据,以下查询可能会得到您正在寻找的答案,或者应该提供有关如何说明它们的提示。

前10名股票/头寸

q=*:* sort=stock_value DESC rows=10

这要求stock_value是数字,并且在索引中具有最新的股票价格。

前5位客户

这非常相似。

q=*:* sort=account_value DESC rows=5

哪一只股票在一天内上涨

您需要为每日增益编制索引

q=date:1995-12-31T23:59:59.999Z sort=stock_gain  DESC rows=1

特定时间范围内股票的最低值

q=symbol:abc123 date:[1995-12-31T23:59:59.999Z TO 2007-03-06T00:00:00Z]  sort=stock_value ASC rows=1

有关日期查询的详细信息,请参阅Solr Query Syntax

答案 1 :(得分:0)

我们在其中一个应用程序中实现了相同的功能。

在导航器“div”下的Browse.vm中,我们创建了自定义构面,当我们点击该构面时,它会在其答案中重新记录网址以及“phisch”中提到的参数。

示例: 我们在UI上的facet部分创建了一个名为“Top 10 Stocks”的链接,当我们点击它时。我们创建了一个添加参数的URL

q = & sort = stock_value DESC& rows = 10

请在最后尝试这个,因为它在我的结束时工作正常。对不起,我无法共享代码,因为它是客户保密的。