0
我們有一個帶分頁的搜索引擎,我們可以自由搜索文本。NEST ElasticSearch緩存QueryDescriptor以供將來使用
我們正在建立一個這樣的查詢:
var skip = 0;
var take = 20;
var query = Query<Foo>.Bool(bq => bq.Must(m => m.Term("mandatoryField", mandatoryValue)));
var otherQuery = Query<Foo>.Bool(bq => bq.Must(m => m.QueryString(qs => qs.Query("some text")))));
query &= otherQuery;
var response = Client.Search<Foo>(s => s
.Skip(skip)
.Take(take)
.Sort(// sort on field)
.Query(q => q.MatchAll() && query);
CacheQuery(query) // here the query contains a bool query descriptor;
此查詢需要轉到另一個頁面時可重複使用。說:
var skip = 20;
var take = 20;
var query = GetCache(); // When retrieving the cache from redis, all the information is lost.
var response = Client.Search<Foo>(s => s
.Skip(skip)
.Take(take)
.Sort(// sort)
.Query(q => q.MatchAll() && query);
然而,試圖緩存查詢(使用redis)時,查詢中的信息將丟失。我試過反序列化的查詢:query.GetCustomJson();但信息仍然丟失。
這裏的問題是;我應該以哪種方式緩存查詢?