我正在使用 DataStax Cassandra 和 Solr
Cassandra 2.0.10.71 | DSE 4.6.0 | CQL spec 3.1.1 | Thrift protocol 19.39.0
我的 Cassandra 列族为:
CREATE TABLE kSpace.colfam1 (
id text,
date timestamp,
desc text,
origin set<text>,
PRIMARY KEY ((id), date)
) WITH CLUSTERING ORDER BY (date DESC);
我的 Solr 的 schema.xml 看起来像:
<schema name="kSpace.colfam1" version="1.5">
<types>
<fieldType name="string" class="solr.StrField"/>
<fieldType name="StringCollectionField" class="solr.StrField" multiValued="true"/>
<fieldType name="tdate" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="text" class="solr.TextField">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
</types>
<fields>
<field name="id" type="string" indexed="true" stored="true" required="true"/>
<field name="date" type="tdate" indexed="true" />
<field name="desc" type="text" indexed="true" />
<field name="origin" type="StringCollectionField" indexed="true" />
</fields>
<defaultSearchField>desc</defaultSearchField>
<uniqueKey>(id,date)</uniqueKey>
</schema>
当我使用 Solr 使用以下查询进行查询时:
http://localhost:8983/solr/kSpace.colfam1/select?
q=*%3A*
&sort=id+asc%2C+date+desc
&rows=2
&wt=json
&indent=true
&cursorMark=*
响应返回,但没有任何 nextCursorMark:
{
"responseHeader": {
"status": 0,
"QTime": 1,
"params": {
"sort": "id asc, date desc",
"indent": "true",
"q": "*:*",
"_": "1429004324135",
"cursorMark": "*",
"wt": "json",
"rows": "2"
}
},
"response": {
"numFound": 284901,
"start": 0,
"docs": [
{
"_uniqueKey": "[\"000047bc-921d-4487-b5f3-c70520e0a7bf\",\"1428601411276\"]",
"id": "000047bc-921d-4487-b5f3-c70520e0a7bf",
"date": "2015-04-09T17:43:31.276Z",
"desc": "description1 description2"
},
{
"_uniqueKey": "[\"0000531e-efee-42b4-9c52-136e9a106827\",\"1428601409625\"]",
"id": "0000531e-efee-42b4-9c52-136e9a106827",
"date": "2015-04-09T17:43:29.625Z",
"desc": "description3 description4"
}
]
}
}
从 Solr 4.7 开始可以使用深度分页。
DSE 4.6.x 有 Solr 4.6。您必须等待未来的版本(可能是 4.7)才能使用此功能。
拉胡尔,
正如 phact 所说,DataStax Enterprise 主要版本 4.6.x 将不包括 Solr 4.7(Apache Solr 支持深度分页的最早版本,即引入“nextCursorMark”的时候。
您可以通过 http://eap.datastax.com/ 获取 DSE 4.7 早期访问计划版本的副本(我不建议用于生产用途,但它确实有 Solr 4.7)。
为了在早期版本的 Solr 中允许分页(Apache Solr < 4.7), you'll have to hack around paging. Requesting a grouped result with a limit on 'row' and a set 'start' index could be a viable alternative.
查看官方示例
示例:
?q=yourquery&rows=10&start=0
然后
?q=yourquery&rows=10&start=10
这并不漂亮,但在 DSE 4.7 发布供公众使用之前,这是一个可行的替代方案。