是否可以动态检索一组Solr文档中的所有字段并仍然保持合理的性能?这里的最终目标是动态填充数字字段列表,供用户对其当前查询进行排序 .
在一个完美的世界中,我希望能够让此列表包含用户查询返回的文档中存在的所有数字字段 .
但是,如果无法实现这一点,我将通过luke处理程序使用数字字段填充列表 . 不幸的是,似乎luke处理程序返回整个集合的字段,但不能仅限于当前查询 .
我对Solr很新,所以非常感谢任何帮助/讨论!
这就是我解决问题的方法:
向架构添加新字段: SORT_DOC_FIELDS 和 NO_SORT_DOC_FIELDS .
SORT_DOC_FIELDS
NO_SORT_DOC_FIELDS
使用ScriptUpdateProcessor写了一些JavaScript,确定是否可以根据几个标准(例如,不是多值,不是类型 tdate 或 string )对字段进行排序 . 如果可以对其进行排序,我将其添加到该文档的 SORT_DOC_FIELDS 字段中;如果没有,我将它添加到 NO_SORT_DOC_FIELDS 字段 .
tdate
string
每当我想要检索查询中存在的字段时,我都会将 &facet=true&facet.field=SORT_DOC_FIELDS&facet.field=NO_SORT_DOC_FIELDS&facet.limit=-1 添加到查询字符串中 .
&facet=true&facet.field=SORT_DOC_FIELDS&facet.field=NO_SORT_DOC_FIELDS&facet.limit=-1
表现还可以 . 我有一个3000万个文档的索引,并且查询和获得响应,往返,大约需要2秒 .
1 回答
这就是我解决问题的方法:
向架构添加新字段:
SORT_DOC_FIELDS
和NO_SORT_DOC_FIELDS
.使用ScriptUpdateProcessor写了一些JavaScript,确定是否可以根据几个标准(例如,不是多值,不是类型
tdate
或string
)对字段进行排序 . 如果可以对其进行排序,我将其添加到该文档的SORT_DOC_FIELDS
字段中;如果没有,我将它添加到NO_SORT_DOC_FIELDS
字段 .每当我想要检索查询中存在的字段时,我都会将
&facet=true&facet.field=SORT_DOC_FIELDS&facet.field=NO_SORT_DOC_FIELDS&facet.limit=-1
添加到查询字符串中 .表现还可以 . 我有一个3000万个文档的索引,并且查询和获得响应,往返,大约需要2秒 .