修复搜索引擎收录不全
This commit is contained in:
@@ -1,3 +1,12 @@
|
|||||||
|
# anian-plugin-moments
|
||||||
|
|
||||||
|
> 基于原作者v1.13.1代码修改
|
||||||
|
|
||||||
|
#### v1.13.1-1
|
||||||
|
1. 修复搜索引擎收录不全
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# plugin-moments
|
# plugin-moments
|
||||||
|
|
||||||
Halo 2.0 的瞬间管理插件,提供一个轻量级的内容发布功能,支持发布图文、视频、音频等内容。
|
Halo 2.0 的瞬间管理插件,提供一个轻量级的内容发布功能,支持发布图文、视频、音频等内容。
|
||||||
|
|||||||
+1
-1
@@ -1 +1 @@
|
|||||||
version=1.0.1-SNAPSHOT
|
version=1.13.1-1
|
||||||
|
|||||||
@@ -9,6 +9,4 @@ package run.halo.moments;
|
|||||||
public enum ModelConst {
|
public enum ModelConst {
|
||||||
;
|
;
|
||||||
public static final String TEMPLATE_ID = "_templateId";
|
public static final String TEMPLATE_ID = "_templateId";
|
||||||
public static final Integer DEFAULT_PAGE_SIZE = 10;
|
|
||||||
public static final Integer SEARCH_DEFAULT_PAGE_SIZE = 200;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,18 @@
|
|||||||
package run.halo.moments.search;
|
package run.halo.moments.search;
|
||||||
|
|
||||||
import static run.halo.moments.ModelConst.SEARCH_DEFAULT_PAGE_SIZE;
|
import static run.halo.app.extension.index.query.QueryFactory.equal;
|
||||||
|
import static run.halo.app.extension.index.query.QueryFactory.isNull;
|
||||||
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.data.domain.Sort;
|
import org.springframework.data.domain.Sort;
|
||||||
import org.springframework.stereotype.Component;
|
import org.springframework.stereotype.Component;
|
||||||
import reactor.core.publisher.Flux;
|
import reactor.core.publisher.Flux;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
import run.halo.app.extension.ListOptions;
|
import run.halo.app.extension.ListOptions;
|
||||||
import run.halo.app.extension.ListResult;
|
import run.halo.app.extension.ListResult;
|
||||||
import run.halo.app.extension.PageRequest;
|
import run.halo.app.extension.PageRequest;
|
||||||
import run.halo.app.extension.PageRequestImpl;
|
import run.halo.app.extension.PageRequestImpl;
|
||||||
import run.halo.app.extension.ReactiveExtensionClient;
|
import run.halo.app.extension.ReactiveExtensionClient;
|
||||||
import run.halo.app.extension.index.query.QueryFactory;
|
|
||||||
import run.halo.app.extension.router.selector.FieldSelector;
|
import run.halo.app.extension.router.selector.FieldSelector;
|
||||||
import run.halo.app.search.HaloDocument;
|
import run.halo.app.search.HaloDocument;
|
||||||
import run.halo.app.search.HaloDocumentsProvider;
|
import run.halo.app.search.HaloDocumentsProvider;
|
||||||
@@ -26,6 +27,8 @@ public class MomentHaloDocumentsProvider implements HaloDocumentsProvider {
|
|||||||
|
|
||||||
public static final String MOMENT_DOCUMENT_TYPE = "moment.moment.halo.run";
|
public static final String MOMENT_DOCUMENT_TYPE = "moment.moment.halo.run";
|
||||||
|
|
||||||
|
private static final int PAGE_SIZE = 200;
|
||||||
|
|
||||||
private final ReactiveExtensionClient client;
|
private final ReactiveExtensionClient client;
|
||||||
|
|
||||||
private final DocumentConverter converter;
|
private final DocumentConverter converter;
|
||||||
@@ -33,14 +36,16 @@ public class MomentHaloDocumentsProvider implements HaloDocumentsProvider {
|
|||||||
@Override
|
@Override
|
||||||
public Flux<HaloDocument> fetchAll() {
|
public Flux<HaloDocument> fetchAll() {
|
||||||
var options = new ListOptions();
|
var options = new ListOptions();
|
||||||
var notDeleted = QueryFactory.isNull("metadata.deletionTimestamp");
|
var notDeleted = isNull("metadata.deletionTimestamp");
|
||||||
var approved = QueryFactory.equal("spec.approved", "true");
|
var approved = equal("spec.approved", Boolean.TRUE.toString());
|
||||||
options.setFieldSelector(FieldSelector.of(notDeleted).andQuery(approved));
|
options.setFieldSelector(FieldSelector.of(notDeleted).andQuery(approved));
|
||||||
var pageRequest = createPageRequest();
|
var pageRequest = createPageRequest();
|
||||||
// make sure the moments are approved and not deleted.
|
// make sure the moments are approved and not deleted.
|
||||||
return client.listBy(Moment.class, options, pageRequest)
|
return client.listBy(Moment.class, options, pageRequest)
|
||||||
.map(ListResult::getItems)
|
.expand(result -> result.hasNext()
|
||||||
.flatMapMany(Flux::fromIterable)
|
? client.listBy(Moment.class, options, nextPage(result, pageRequest.getSort()))
|
||||||
|
: Mono.empty())
|
||||||
|
.flatMap(result -> Flux.fromIterable(result.getItems()))
|
||||||
.flatMap(converter::convert);
|
.flatMap(converter::convert);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -50,7 +55,11 @@ public class MomentHaloDocumentsProvider implements HaloDocumentsProvider {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private PageRequest createPageRequest() {
|
private PageRequest createPageRequest() {
|
||||||
return PageRequestImpl.of(1, SEARCH_DEFAULT_PAGE_SIZE,
|
return PageRequestImpl.of(1, PAGE_SIZE,
|
||||||
Sort.by("metadata.creationTimestamp", "metadata.name"));
|
Sort.by("metadata.creationTimestamp", "metadata.name"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static PageRequest nextPage(ListResult<Moment> result, Sort sort) {
|
||||||
|
return PageRequestImpl.of(result.getPage() + 1, result.getSize(), sort);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user