java - Solr通过自定义函数查询排序

标签 java solr

我在使用 Solr 3.6.2 开发自定义函数查询时遇到了一些问题。 我的目标是能够实现自定义排序技术。

我有一个名为 daily_prices_str 的字段,它是一个单值 str。

示例:

<str name="daily_prices_str">
2014-05-01:130 2014-05-02:130 2014-05-03:130 2014-05-04:130 2014-05-05:130 2014-05-06:130 2014-05-07:130 2014-05-08:130 2014-05-09:130 2014-05-10:130 2014-05-11:130 2014-05-12:130 2014-05-13:130 2014-05-14:130 2014-05-15:130 2014-05-16:130 2014-05-17:130 2014-05-18:130 2014-05-19:130 2014-05-20:130 2014-05-21:130 2014-05-22:130 2014-05-23:130 2014-05-24:130 2014-05-25:130 2014-05-26:130 2014-05-27:130 2014-05-28:130 2014-05-29:130 2014-05-30:130 2014-05-31:130 2014-06-01:130 2014-06-02:130 2014-06-03:130 2014-06-04:130 2014-06-05:130 2014-06-06:130 2014-06-07:130 2014-06-08:130 2014-06-09:130 2014-06-10:130 2014-06-11:130 2014-06-12:130 2014-06-13:130 2014-06-14:130 2014-06-15:130 2014-06-16:130 2014-06-17:130 2014-06-18:130 2014-06-19:130 2014-06-20:130 2014-06-21:130 2014-06-22:130 2014-06-23:130 2014-06-24:130 2014-06-25:130 2014-06-26:130 2014-06-27:130 2014-06-28:130 2014-06-29:130 2014-06-30:130 2014-07-01:130 2014-07-02:130 2014-07-03:130 2014-07-04:130 2014-07-05:130 2014-07-06:130 2014-07-07:130 2014-07-08:130 2014-07-09:130 2014-07-10:130 2014-07-11:130 2014-07-12:130 2014-07-13:130 2014-07-14:130 2014-07-15:130 2014-07-16:130 2014-07-17:130 2014-07-18:130 2014-07-19:170 2014-07-20:170 2014-07-21:170 2014-07-22:170 2014-07-23:170 2014-07-24:170 2014-07-25:170 2014-07-26:170 2014-07-27:170 2014-07-28:170 2014-07-29:170 2014-07-30:170 2014-07-31:170 2014-08-01:170 2014-08-02:170 2014-08-03:170 2014-08-04:170 2014-08-05:170 2014-08-06:170 2014-08-07:170 2014-08-08:170 2014-08-09:170 2014-08-10:170 2014-08-11:170 2014-08-12:170 2014-08-13:170 2014-08-14:170 2014-08-15:170 2014-08-16:170 2014-08-17:170 2014-08-18:170 2014-08-19:170 2014-08-20:170 2014-08-21:170 2014-08-22:170 2014-08-23:170 2014-08-24:170 2014-08-25:170 2014-08-26:170 2014-08-27:170 2014-08-28:170 2014-08-29:170 2014-08-30:170
</str>

正如您所看到的,字符串的结构是 date:price。

基本上,我想解析字符串以获取特定时期的价格并按该价格排序。 我已经开发了用于自定义函数查询的 java 插件,并且我的代码现在可以编译、运行、执行等。Solr 对我的代码很满意。

示例:

price(daily_prices_str,2015-01-01,2015-01-03)

如果我运行此查询,我可以在分数字段中看到正确的价格:

/select?price=price(daily_prices_str,2015-01-01,2015-01-03)&q={!func}$price

问题之一是我无法按函数结果排序。 如果我运行此查询:

/select?price=price(daily_prices_str,2015-01-01,2015-01-03)&q={!func}$price&sort=$price+asc

我收到 404 错误消息,指出“排序参数无法解析为查询,并且不是索引中存在的字段:$price” 但它有一个解决方法:

/select?price=sum(0,price(daily_prices_str,2015-01-01,2015-01-03))&q={!func}$price&sort=$price+asc

主要问题是我无法按范围过滤:

/select?price=sum(0,price(daily_prices_str,2015-1-1,2015-1-3))&q={!frange l=100 u=400}$price

也许我的做法完全错误?

最佳答案

您可以像这样传递带有数据本身的函数吗?

q=*:*&sort=price(daily_prices_str,2015-01-01,2015-01-03) ...

关于java - Solr通过自定义函数查询排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23568210/

相关文章:

solr - 文档转换 Watson 服务不工作?

mysql - Solr 索引 mysql 和搜索

java - 尝试在Java中打印2d元素数组

java - 一个 ListView 中的多个列表

Java删除字符串的第一部分(不区分大小写)

java - 如何使用 solrZkClient 和 zkStateReader 获取 Solr Cloud 的集群状态?

java - 当指定了 MySql 时,SonarQube 尝试使用 'org.h2.Driver'

java - 如何从特定类创建 JAR 并将其与 Gradle 一起使用?

java - 如何在 Solr schema.xml 中转义正则表达式中的 "<"字符?

tomcat - Typo3 Solr,如何设置 solr 5.X