动态检索存在于Solr文档中的所有字段
问题描述:
是否可以动态检索存在于一组Solr文档中的所有字段并仍保持合理的性能?这里的最终目标是为用户动态填充数字字段列表,以便对其当前查询进行排序。动态检索存在于Solr文档中的所有字段
在一个完美的世界中,我希望能够让这个列表包含用户查询返回的文档中存在的所有数字字段。
但是,如果这是不可能实现的,我将通过luke处理程序用数字字段填充列表。不幸的是,似乎luke处理程序为整个集合返回字段,但不能仅限于当前查询。
我是Solr的新手,所以任何帮助/讨论将不胜感激!
答
这是我如何解决我的问题:
- 新的字段添加到架构:
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万个文件的索引,并且查询和获得响应,往返时间大约需要2s。