Skip to content

Commit 1682e87

Browse files
authored
feat(search): enhanced meilisearch search experience (#864)
* feat(search): enhanced `meilisearch` search experience - upgrade `meilisearch` dependency - support subdirectory search - optimize searchDocument fields for subdirectory search - specify full index uid instead of index prefix * fix(search): more fixes to `meilisearch` - make use of context where context was not used - remove code of waiting task in deletion process, as tasks are queued and will be executed orderly (if tasks were submitted to the queue successfully), which can improve `AutoUpdate` performance
1 parent 54ae7e6 commit 1682e87

File tree

8 files changed

+276
-375
lines changed

8 files changed

+276
-375
lines changed

go.mod

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ require (
4646
github.com/json-iterator/go v1.1.12
4747
github.com/kdomanski/iso9660 v0.4.0
4848
github.com/maruel/natural v1.1.1
49-
github.com/meilisearch/meilisearch-go v0.27.2
49+
github.com/meilisearch/meilisearch-go v0.32.0
5050
github.com/mholt/archives v0.1.3
5151
github.com/natefinch/lumberjack v2.0.0+incompatible
5252
github.com/ncw/swift/v2 v2.0.4
@@ -92,9 +92,9 @@ require (
9292
github.com/minio/xxml v0.0.3 // indirect
9393
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
9494
github.com/otiai10/mint v1.6.3 // indirect
95-
gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
9695
github.com/shirou/gopsutil/v4 v4.25.5 // indirect
9796
github.com/xo/terminfo v0.0.0-20220910002029-abceb7e1c41e // indirect
97+
gopkg.in/go-jose/go-jose.v2 v2.6.3 // indirect
9898
)
9999

100100
require (
@@ -135,7 +135,6 @@ require (
135135
require (
136136
github.com/Max-Sum/base32768 v0.0.0-20230304063302-18e6ce5945fd // indirect
137137
github.com/OpenListTeam/gsync v0.1.0 // indirect
138-
github.com/RoaringBitmap/roaring v1.9.3 // indirect
139138
github.com/abbot/go-http-auth v0.4.0 // indirect
140139
github.com/aead/ecdh v0.2.0 // indirect
141140
github.com/andreburgaud/crypt2go v1.8.0 // indirect
@@ -181,7 +180,6 @@ require (
181180
github.com/go-webauthn/x v0.1.23 // indirect
182181
github.com/goccy/go-json v0.10.5 // indirect
183182
github.com/golang-jwt/jwt/v5 v5.2.3 // indirect
184-
github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 // indirect
185183
github.com/golang/protobuf v1.5.4 // indirect
186184
github.com/golang/snappy v0.0.4 // indirect
187185
github.com/google/go-tpm v0.9.5 // indirect
@@ -207,7 +205,7 @@ require (
207205
github.com/libp2p/go-libp2p v0.27.8 // indirect
208206
github.com/lucasb-eyer/go-colorful v1.2.0 // indirect
209207
github.com/lufia/plan9stats v0.0.0-20250317134145-8bc96cf8fc35 // indirect
210-
github.com/mailru/easyjson v0.7.7 // indirect
208+
github.com/mailru/easyjson v0.9.0 // indirect
211209
github.com/mattn/go-colorable v0.1.14 // indirect
212210
github.com/mattn/go-isatty v0.0.20 // indirect
213211
github.com/mattn/go-localereader v0.0.1 // indirect
@@ -245,8 +243,6 @@ require (
245243
github.com/rivo/uniseg v0.4.7 // indirect
246244
github.com/ryszard/goskiplist v0.0.0-20150312221310-2dfbae5fcf46 // indirect
247245
github.com/shabbyrobe/gocovmerge v0.0.0-20230507112040-c3350d9342df // indirect
248-
github.com/shirou/gopsutil/v3 v3.24.4 // indirect
249-
github.com/shoenig/go-m1cpu v0.1.6 // indirect
250246
github.com/skip2/go-qrcode v0.0.0-20200617195104-da1b6568686e
251247
github.com/spaolacci/murmur3 v1.1.0 // indirect
252248
github.com/spf13/pflag v1.0.6 // indirect
@@ -255,8 +251,6 @@ require (
255251
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
256252
github.com/u2takey/go-utils v0.3.1 // indirect
257253
github.com/ugorji/go/codec v1.3.0 // indirect
258-
github.com/valyala/bytebufferpool v1.0.0 // indirect
259-
github.com/valyala/fasthttp v1.37.1-0.20220607072126-8a320890c08d // indirect
260254
github.com/x448/float16 v0.8.4 // indirect
261255
github.com/yusufpapurcu/wmi v1.2.4 // indirect
262256
go.etcd.io/bbolt v1.4.0 // indirect
@@ -266,13 +260,11 @@ require (
266260
golang.org/x/term v0.33.0 // indirect
267261
golang.org/x/text v0.27.0
268262
golang.org/x/tools v0.34.0 // indirect
269-
google.golang.org/api v0.236.0 // indirect
270263
google.golang.org/genproto/googleapis/rpc v0.0.0-20250603155806-513f23925822 // indirect
271264
google.golang.org/grpc v1.73.0
272265
google.golang.org/protobuf v1.36.6 // indirect
273266
gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d // indirect
274267
gopkg.in/natefinch/lumberjack.v2 v2.0.0 // indirect
275-
gopkg.in/square/go-jose.v2 v2.6.0 // indirect
276268
gopkg.in/yaml.v3 v3.0.1 // indirect
277269
lukechampine.com/blake3 v1.1.7 // indirect
278270
)

go.sum

Lines changed: 78 additions & 264 deletions
Large diffs are not rendered by default.

internal/conf/config.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,9 @@ type Database struct {
2020
}
2121

2222
type Meilisearch struct {
23-
Host string `json:"host" env:"HOST"`
24-
APIKey string `json:"api_key" env:"API_KEY"`
25-
IndexPrefix string `json:"index_prefix" env:"INDEX_PREFIX"`
23+
Host string `json:"host" env:"HOST"`
24+
APIKey string `json:"api_key" env:"API_KEY"`
25+
Index string `json:"index" env:"INDEX"`
2626
}
2727

2828
type Scheme struct {
@@ -155,7 +155,8 @@ func DefaultConfig(dataDir string) *Config {
155155
DBFile: dbPath,
156156
},
157157
Meilisearch: Meilisearch{
158-
Host: "http://localhost:7700",
158+
Host: "http://localhost:7700",
159+
Index: "openlist",
159160
},
160161
BleveDir: indexDir,
161162
Log: LogConfig{

internal/search/meilisearch/init.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package meilisearch
33
import (
44
"errors"
55
"fmt"
6+
"time"
67

78
"github.com/OpenListTeam/OpenList/v4/internal/conf"
89
"github.com/OpenListTeam/OpenList/v4/internal/model"
@@ -18,13 +19,18 @@ var config = searcher.Config{
1819

1920
func init() {
2021
searcher.RegisterSearcher(config, func() (searcher.Searcher, error) {
22+
indexUid := conf.Conf.Meilisearch.Index
23+
if len(indexUid) == 0 {
24+
return nil, errors.New("index is blank")
25+
}
2126
m := Meilisearch{
22-
Client: meilisearch.NewClient(meilisearch.ClientConfig{
23-
Host: conf.Conf.Meilisearch.Host,
24-
APIKey: conf.Conf.Meilisearch.APIKey,
25-
}),
26-
IndexUid: conf.Conf.Meilisearch.IndexPrefix + "openlist",
27-
FilterableAttributes: []string{"parent", "is_dir", "name"},
27+
Client: meilisearch.New(
28+
conf.Conf.Meilisearch.Host,
29+
meilisearch.WithAPIKey(conf.Conf.Meilisearch.APIKey),
30+
),
31+
IndexUid: indexUid,
32+
FilterableAttributes: []string{"parent", "is_dir", "name",
33+
"parent_hash", "parent_path_hashes"},
2834
SearchableAttributes: []string{"name"},
2935
}
3036

@@ -40,7 +46,7 @@ func init() {
4046
if err != nil {
4147
return nil, err
4248
}
43-
forTask, err := m.Client.WaitForTask(task.TaskUID)
49+
forTask, err := m.Client.WaitForTask(task.TaskUID, time.Second)
4450
if err != nil {
4551
return nil, err
4652
}

0 commit comments

Comments
 (0)