修复搜索引擎收录不全

This commit is contained in:
2026-07-19 01:22:11 +08:00
parent c6ba83f5d7
commit 5c08ed607a
4 changed files with 26 additions and 10 deletions
+9
View File
@@ -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
View File
@@ -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);
}
} }