@jasonwch/nodebb-plugin-meilisearch-r 1.1.2 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,222 +1,289 @@
1
- <div class="acp-page-container">
2
- <!-- IMPORT admin/partials/settings/header.tpl -->
3
-
4
- <div class="row m-0">
5
- <div id="spy-container" class="col-12 col-md-8 px-0 mb-4" tabindex="0">
6
-
7
- <!-- 1. Index result -->
8
- <div id="index-result" class="mb-4">
9
- <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.indexResult")}}</h5>
10
- <div class="card text-xs">
11
- <div class="card-header d-flex align-items-center justify-content-between">
12
- <span class="fw-bold">{{tx("meilisearch:admin.lastReindex")}}</span>
13
- {{{ if !lastReindexResult.finishedAt }}}
14
- <span class="badge bg-secondary">{{tx("meilisearch:admin.lastReindexNever")}}</span>
15
- {{{ else }}}
16
- {{{ if lastReindexResult.success }}}
17
- <span class="badge bg-success">{{tx("meilisearch:admin.lastReindexSuccess")}}</span>
18
- {{{ else }}}
19
- <span class="badge bg-danger">{{tx("meilisearch:admin.lastReindexFailed")}}</span>
20
- {{{ end }}}
21
- {{{ end }}}
22
- </div>
23
- <div class="card-body">
24
- {{{ if lastReindexResult.finishedAt }}}
25
- <p class="mb-3"><strong>{{tx("meilisearch:admin.lastReindexDate")}}:</strong> <span data-finished-at="{lastReindexResult.finishedAt}">&mdash;</span></p>
26
- <div class="row g-3 mb-3">
27
- <div class="col-6">
28
- <strong>{{tx("meilisearch:admin.lastReindexTopics")}}</strong><br>
29
- <span>{{lastReindexResult.topic_progress.current}}/{{lastReindexResult.topic_progress.total}}</span>
30
- </div>
31
- <div class="col-6">
32
- <strong>{{tx("meilisearch:admin.lastReindexPosts")}}</strong><br>
33
- <span>{{lastReindexResult.post_progress.current}}/{{lastReindexResult.post_progress.total}}</span>
34
- </div>
35
- <div class="col-6">
36
- <strong>{{tx("meilisearch:admin.lastReindexMessages")}}</strong><br>
37
- <span>{{lastReindexResult.message_progress.current}}/{{lastReindexResult.message_progress.total}}</span>
38
- </div>
39
- {{{ if lastReindexResult.skippedSystemMessages }}}
40
- <div class="col-6">
41
- <strong>{{tx("meilisearch:admin.lastReindexSkippedSystemMessages")}}</strong><br>
42
- <span>{{lastReindexResult.skippedSystemMessages}}</span>
43
- </div>
44
- {{{ end }}}
45
- {{{ if lastReindexResult.skippedDeletedTopics }}}
46
- <div class="col-6">
47
- <strong>{{tx("meilisearch:admin.lastReindexSkippedDeletedTopics")}}</strong><br>
48
- <span>{{lastReindexResult.skippedDeletedTopics}}</span>
49
- </div>
50
- {{{ end }}}
51
- {{{ if lastReindexResult.skippedDeletedPosts }}}
52
- <div class="col-6">
53
- <strong>{{tx("meilisearch:admin.lastReindexSkippedDeletedPosts")}}</strong><br>
54
- <span>{{lastReindexResult.skippedDeletedPosts}}</span>
55
- </div>
56
- {{{ end }}}
57
- {{{ if lastReindexResult.skippedDeletedMessages }}}
58
- <div class="col-6">
59
- <strong>{{tx("meilisearch:admin.lastReindexSkippedDeletedMessages")}}</strong><br>
60
- <span>{{lastReindexResult.skippedDeletedMessages}}</span>
61
- </div>
62
- {{{ end }}}
63
- {{{ if lastReindexResult.skippedOrphanMessages }}}
64
- <div class="col-6">
65
- <strong>{{tx("meilisearch:admin.lastReindexSkippedOrphanMessages")}}</strong><br>
66
- <span>{{lastReindexResult.skippedOrphanMessages}}</span>
67
- </div>
68
- {{{ end }}}
69
- </div>
70
-
71
- {{{ if lastReindexResult.error }}}
72
- <div class="text-danger">
73
- <strong>{{tx("meilisearch:admin.lastReindexError")}}:</strong> {lastReindexResult.error}
74
- </div>
75
- {{{ end }}}
76
- {{{ else }}}
77
- <p class="text-muted mb-3">{{tx("meilisearch:admin.lastReindexNever")}}</p>
78
- {{{ end }}}
79
- </div>
80
- </div>
81
- </div>
82
-
83
- <!-- 2. Index action -->
84
- <div id="index-action" class="mb-4">
85
- <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.indexAction")}}</h5>
86
- <p class="form-text">{{tx("meilisearch:admin.reindexHelp")}}</p>
87
- <div class="reindex-actions mb-3">
88
- <button type="button" id="reindex" class="btn btn-danger btn-sm">{{tx("meilisearch:admin.reindex")}}</button>
89
- </div>
90
- <div class="d-flex justify-content-center align-items-center mb-3 force-reindex-container" id="reindex-force-container">
91
- <div class="form-check form-switch mb-0">
92
- <input class="form-check-input" type="checkbox" id="force-reindex" name="force-reindex">
93
- <label class="form-check-label" for="force-reindex"><strong>{{tx("meilisearch:admin.forceReindex")}}</strong></label>
94
- </div>
95
- </div>
96
- <div class="reindex-progress-container {{{ if !indexing.running}}}hidden{{{end}}}">
97
- <h6 class="text-center">{{tx("meilisearch:admin.reindexTopicsProgress")}} <span id="topic-reindex-progress-text">{indexing.topic_progress.current}/{indexing.topic_progress.total}</span></h6>
98
- <div class="progress mb-3">
99
- <div id="topic-reindex-progress" class="progress-bar reindex-progress-bar" role="progressbar" aria-valuenow="{indexing.topic_progress.current}" aria-valuemin="0" aria-valuemax="{indexing.topic_progress.total}" style="width: {{{ if topicPercent }}}{topicPercent}%{{{ else }}}0%{{{ end }}};">
100
- {indexing.topic_progress.current}/{indexing.topic_progress.total}
101
- </div>
102
- </div>
103
- <h6 class="text-center">{{tx("meilisearch:admin.reindexPostsProgress")}} <span id="post-reindex-progress-text">{indexing.post_progress.current}/{indexing.post_progress.total}</span></h6>
104
- <div class="progress mb-3">
105
- <div id="post-reindex-progress" class="progress-bar reindex-progress-bar" role="progressbar" aria-valuenow="{indexing.post_progress.current}" aria-valuemin="0" aria-valuemax="{indexing.post_progress.total}" style="width: {{{ if postPercent }}}{postPercent}%{{{ else }}}0%{{{ end }}};">
106
- {indexing.post_progress.current}/{indexing.post_progress.total}
107
- </div>
108
- </div>
109
- <h6 class="text-center">{{tx("meilisearch:admin.reindexMessagesProgress")}} <span id="message-reindex-progress-text">{indexing.message_progress.current}/{indexing.message_progress.total}</span></h6>
110
- <div class="progress mb-3">
111
- <div id="message-reindex-progress" class="progress-bar reindex-progress-bar" role="progressbar" aria-valuenow="{indexing.message_progress.current}" aria-valuemin="0" aria-valuemax="{indexing.message_progress.total}" style="width: {{{ if messagePercent }}}{messagePercent}%{{{ else }}}0%{{{ end }}};">
112
- {indexing.message_progress.current}/{indexing.message_progress.total}
113
- </div>
114
- </div>
115
- </div>
116
- </div>
117
-
118
- <!-- Settings form -->
119
- <form role="form" class="meilisearch-settings">
120
-
121
- <!-- 3. Connection settings -->
122
- <div id="connection-settings" class="mb-4">
123
- <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.connection")}}</h5>
124
- <div class="mb-3">
125
- <label class="form-label" for="host">{{tx("meilisearch:admin.host")}}</label>
126
- <input type="text" id="host" name="host" title="Host" class="form-control" placeholder="http://localhost:7700">
127
- </div>
128
- <div class="mb-3">
129
- <label class="form-label" for="apiKey">{{tx("meilisearch:admin.apiKey")}}</label>
130
- <input type="password" id="apiKey" name="apiKey" title="API Key" class="form-control" placeholder="*****">
131
- </div>
132
- <div class="mb-3">
133
- <label class="form-label" for="healthCheckInterval">{{tx("meilisearch:admin.healthCheckInterval")}}</label>
134
- <input type="number" id="healthCheckInterval" name="healthCheckInterval" title="Health Check Interval" class="form-control" placeholder="60">
135
- </div>
136
- </div>
137
-
138
- <!-- 4. Search options -->
139
- <div id="search-options" class="mb-4">
140
- <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.search")}}</h5>
141
- <div class="mb-3">
142
- <label class="form-label" for="maxDocuments">{{tx("meilisearch:admin.maxDocuments")}}</label>
143
- <input type="number" id="maxDocuments" name="maxDocuments" title="Max Documents" class="form-control" placeholder="500">
144
- <p class="form-text">
145
- <span class="text-danger fw-bold fst-italic">({{tx("meilisearch:admin.perRoomSearchLimit")}})</span>
146
- </p>
147
- </div>
148
- <div class="mb-3">
149
- <div class="form-check form-switch">
150
- <input class="form-check-input" type="checkbox" id="globalChatSearchEnabled" name="globalChatSearchEnabled">
151
- <label class="form-check-label" for="globalChatSearchEnabled"><strong>{{tx("meilisearch:admin.globalChatSearchEnabled")}}</strong></label>
152
- </div>
153
- <p class="form-text" id="globalChatSearchLimitNotice" style="display:none;">
154
- <span class="text-danger fw-bold fst-italic">({{tx("meilisearch:admin.globalChatSearchLimit")}})</span>
155
- </p>
156
- </div>
157
- <div class="mb-3">
158
- <label class="form-label" for="searchMinTermLength">{{tx("meilisearch:admin.searchMinTermLength")}}</label>
159
- <input type="number" id="searchMinTermLength" name="searchMinTermLength" min="2" title="{{tx("meilisearch:admin.searchMinTermLength")}}" class="form-control" placeholder="2">
160
- <p class="form-text">{{tx("meilisearch:admin.searchMinTermLengthHelp")}}</p>
161
- </div>
162
- </div>
163
-
164
- <!-- 5. Ranking rules -->
165
- <div id="ranking-rules" class="mb-4">
166
- <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.rankingRules")}}</h5>
167
- <p class="form-text">{{tx("meilisearch:admin.rankingRulesHelp")}} <a href="https://docs.meilisearch.com/learn/core_concepts/relevancy.html#ranking-rules" style="word-break: break-all;">https://docs.meilisearch.com/learn/core_concepts/relevancy.html#ranking-rules</a></p>
168
- <div class="form-group" data-type="sorted-list" data-sorted-list="rankingRules" data-item-template="admin/plugins/meilisearch/partials/rankingRules/item" data-form-template="admin/plugins/meilisearch/partials/rankingRules/form">
169
- <ul name="rankingRulesList" data-type="list" class="list-group"></ul>
170
- <button type="button" data-type="add" class="btn btn-info">{{tx("meilisearch:admin.addRankingRule")}}</button>
171
- </div>
172
- </div>
173
-
174
- <!-- 6. Stop words -->
175
- <div id="stop-words" class="mb-4">
176
- <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.stopWords")}}</h5>
177
- <p class="form-text">{{tx("meilisearch:admin.stopWordsHelp")}} <a href="https://docs.meilisearch.com/reference/api/settings.html#get-stop-words" style="word-break: break-all;">https://docs.meilisearch.com/reference/api/settings.html#get-stop-words</a></p>
178
- <div class="form-group" data-type="sorted-list" data-sorted-list="stopWords" data-item-template="admin/plugins/meilisearch/partials/stopWords/item" data-form-template="admin/plugins/meilisearch/partials/stopWords/form">
179
- <ul name="stopWordsList" data-type="list" class="list-group"></ul>
180
- <button type="button" data-type="add" class="btn btn-info">{{tx("meilisearch:admin.addStopWord")}}</button>
181
- </div>
182
- </div>
183
-
184
- <!-- 7. Synonyms -->
185
- <div id="synonyms" class="mb-4">
186
- <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.synonyms")}}</h5>
187
- <p class="form-text">{{tx("meilisearch:admin.synonymsHelp")}} <a href="https://docs.meilisearch.com/learn/configuration/synonyms.html" style="word-break: break-all;">https://docs.meilisearch.com/learn/configuration/synonyms.html</a></p>
188
- <div class="form-group" data-type="sorted-list" data-sorted-list="synonyms" data-item-template="admin/plugins/meilisearch/partials/synonyms/item" data-form-template="admin/plugins/meilisearch/partials/synonyms/form">
189
- <ul name="synonymsList" data-type="list" class="list-group"></ul>
190
- <button type="button" data-type="add" class="btn btn-info">{{tx("meilisearch:admin.addSynonym")}}</button>
191
- </div>
192
- </div>
193
-
194
- <!-- 8. Typo tolerance -->
195
- <div id="typo-tolerance" class="mb-4">
196
- <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.typoTolerance")}}</h5>
197
- <div class="form-check form-switch mb-3" id="typoTolerance-container">
198
- <input class="form-check-input" type="checkbox" id="typoTolerance" name="typoTolerance">
199
- <label class="form-check-label" for="typoTolerance"><strong>{{tx("meilisearch:admin.typoToleranceEnable")}}</strong></label>
200
- </div>
201
- <div class="mb-3">
202
- <label class="form-label" for="typoToleranceMinWordSizeOneTypo">{{tx("meilisearch:admin.typoToleranceMinWordSizeOneTypo")}}</label>
203
- <input type="number" id="typoToleranceMinWordSizeOneTypo" name="typoToleranceMinWordSizeOneTypo" title="Typo Tolerance Min Word Size One Typo" class="form-control" placeholder="5">
204
- </div>
205
- <div class="mb-3">
206
- <label class="form-label" for="typoToleranceMinWordSizeTwoTypos">{{tx("meilisearch:admin.typoToleranceMinWordSizeTwoTypos")}}</label>
207
- <input type="number" id="typoToleranceMinWordSizeTwoTypos" name="typoToleranceMinWordSizeTwoTypos" title="Typo Tolerance Min Word Size Two Typos" class="form-control" placeholder="9">
208
- </div>
209
- <p class="form-text">{{tx("meilisearch:admin.typoToleranceDisableOnWordsHelp")}} <a href="https://docs.meilisearch.com/learn/configuration/typo_tolerance.html#disableonwords" style="word-break: break-all;">https://docs.meilisearch.com/learn/configuration/typo_tolerance.html#disableonwords</a></p>
210
- <div class="form-group" data-type="sorted-list" data-sorted-list="typoToleranceDisableOnWords" data-item-template="admin/plugins/meilisearch/partials/typoToleranceDisableOnWords/item" data-form-template="admin/plugins/meilisearch/partials/typoToleranceDisableOnWords/form">
211
- <label class="form-label" for="typoToleranceDisableOnWordsList">{{tx("meilisearch:admin.typoToleranceDisableOnWords")}}</label>
212
- <ul name="typoToleranceDisableOnWordsList" data-type="list" class="list-group"></ul>
213
- <button type="button" data-type="add" class="btn btn-info">{{tx("meilisearch:admin.addTypoToleranceDisabledWord")}}</button>
214
- </div>
215
- </div>
216
-
217
- </form>
218
- </div>
219
-
220
- <!-- IMPORT admin/partials/settings/toc.tpl -->
221
- </div>
222
- </div>
1
+ <div class="acp-page-container">
2
+ <!-- IMPORT admin/partials/settings/header.tpl -->
3
+
4
+ <div class="row m-0">
5
+ <div id="spy-container" class="col-12 col-md-8 px-0 mb-4" tabindex="0">
6
+
7
+ <!-- 1. Index result -->
8
+ <div id="index-result" class="mb-4">
9
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.indexResult")}}</h5>
10
+ <div class="card text-xs">
11
+ <div class="card-header d-flex align-items-center justify-content-between">
12
+ <span class="fw-bold">{{tx("meilisearch:admin.lastReindex")}}</span>
13
+ {{{ if !lastReindexResult.finishedAt }}}
14
+ <span class="badge bg-secondary">{{tx("meilisearch:admin.lastReindexNever")}}</span>
15
+ {{{ else }}}
16
+ {{{ if lastReindexResult.success }}}
17
+ <span class="badge bg-success">{{tx("meilisearch:admin.lastReindexSuccess")}}</span>
18
+ {{{ else }}}
19
+ <span class="badge bg-danger">{{tx("meilisearch:admin.lastReindexFailed")}}</span>
20
+ {{{ end }}}
21
+ {{{ end }}}
22
+ </div>
23
+ <div class="card-body">
24
+ {{{ if lastReindexResult.finishedAt }}}
25
+ <p class="mb-3"><strong>{{tx("meilisearch:admin.lastReindexDate")}}:</strong> <span data-finished-at="{lastReindexResult.finishedAt}">&mdash;</span></p>
26
+ <div class="row g-3 mb-3">
27
+ <div class="col-6">
28
+ <strong>{{tx("meilisearch:admin.lastReindexTopics")}}</strong><br>
29
+ <span>{{lastReindexResult.topic_progress.current}}/{{lastReindexResult.topic_progress.total}}</span>
30
+ </div>
31
+ <div class="col-6">
32
+ <strong>{{tx("meilisearch:admin.lastReindexPosts")}}</strong><br>
33
+ <span>{{lastReindexResult.post_progress.current}}/{{lastReindexResult.post_progress.total}}</span>
34
+ </div>
35
+ <div class="col-6">
36
+ <strong>{{tx("meilisearch:admin.lastReindexMessages")}}</strong><br>
37
+ <span>{{lastReindexResult.message_progress.current}}/{{lastReindexResult.message_progress.total}}</span>
38
+ </div>
39
+ {{{ if lastReindexResult.skippedSystemMessages }}}
40
+ <div class="col-6">
41
+ <strong>{{tx("meilisearch:admin.lastReindexSkippedSystemMessages")}}</strong><br>
42
+ <span>{{lastReindexResult.skippedSystemMessages}}</span>
43
+ </div>
44
+ {{{ end }}}
45
+ {{{ if lastReindexResult.skippedDeletedTopics }}}
46
+ <div class="col-6">
47
+ <strong>{{tx("meilisearch:admin.lastReindexSkippedDeletedTopics")}}</strong><br>
48
+ <span>{{lastReindexResult.skippedDeletedTopics}}</span>
49
+ </div>
50
+ {{{ end }}}
51
+ {{{ if lastReindexResult.skippedDeletedPosts }}}
52
+ <div class="col-6">
53
+ <strong>{{tx("meilisearch:admin.lastReindexSkippedDeletedPosts")}}</strong><br>
54
+ <span>{{lastReindexResult.skippedDeletedPosts}}</span>
55
+ </div>
56
+ {{{ end }}}
57
+ {{{ if lastReindexResult.skippedDeletedMessages }}}
58
+ <div class="col-6">
59
+ <strong>{{tx("meilisearch:admin.lastReindexSkippedDeletedMessages")}}</strong><br>
60
+ <span>{{lastReindexResult.skippedDeletedMessages}}</span>
61
+ </div>
62
+ {{{ end }}}
63
+ {{{ if lastReindexResult.skippedOrphanMessages }}}
64
+ <div class="col-6">
65
+ <strong>{{tx("meilisearch:admin.lastReindexSkippedOrphanMessages")}}</strong><br>
66
+ <span>{{lastReindexResult.skippedOrphanMessages}}</span>
67
+ </div>
68
+ {{{ end }}}
69
+ </div>
70
+
71
+ {{{ if lastReindexResult.error }}}
72
+ <div class="text-danger">
73
+ <strong>{{tx("meilisearch:admin.lastReindexError")}}:</strong> {lastReindexResult.error}
74
+ </div>
75
+ {{{ end }}}
76
+ {{{ else }}}
77
+ <p class="text-muted mb-3">{{tx("meilisearch:admin.lastReindexNever")}}</p>
78
+ {{{ end }}}
79
+ </div>
80
+ </div>
81
+ </div>
82
+
83
+ <!-- 2. Index action -->
84
+ <div id="index-action" class="mb-4">
85
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.indexAction")}}</h5>
86
+ <p class="form-text">{{tx("meilisearch:admin.reindexHelp")}}</p>
87
+ <div class="reindex-actions mb-3">
88
+ <button type="button" id="reindex" class="btn btn-danger btn-sm">{{tx("meilisearch:admin.reindex")}}</button>
89
+ </div>
90
+ <div class="d-flex justify-content-center align-items-center mb-3 force-reindex-container" id="reindex-force-container">
91
+ <div class="form-check form-switch mb-0">
92
+ <input class="form-check-input" type="checkbox" id="force-reindex" name="force-reindex">
93
+ <label class="form-check-label" for="force-reindex"><strong>{{tx("meilisearch:admin.forceReindex")}}</strong></label>
94
+ </div>
95
+ </div>
96
+ <p class="form-text text-center" id="semanticForceReindexCostNotice" style="display:none;">
97
+ <span class="text-danger fw-bold fst-italic">({{tx("meilisearch:admin.semanticForceReindexCostNotice")}})</span>
98
+ </p>
99
+ <div class="reindex-progress-container {{{ if !indexing.running}}}hidden{{{end}}}">
100
+ <h6 class="text-center">{{tx("meilisearch:admin.reindexTopicsProgress")}} <span id="topic-reindex-progress-text">{indexing.topic_progress.current}/{indexing.topic_progress.total}</span></h6>
101
+ <div class="progress mb-3">
102
+ <div id="topic-reindex-progress" class="progress-bar reindex-progress-bar" role="progressbar" aria-valuenow="{indexing.topic_progress.current}" aria-valuemin="0" aria-valuemax="{indexing.topic_progress.total}" style="width: {{{ if topicPercent }}}{topicPercent}%{{{ else }}}0%{{{ end }}};">
103
+ {indexing.topic_progress.current}/{indexing.topic_progress.total}
104
+ </div>
105
+ </div>
106
+ <h6 class="text-center">{{tx("meilisearch:admin.reindexPostsProgress")}} <span id="post-reindex-progress-text">{indexing.post_progress.current}/{indexing.post_progress.total}</span></h6>
107
+ <div class="progress mb-3">
108
+ <div id="post-reindex-progress" class="progress-bar reindex-progress-bar" role="progressbar" aria-valuenow="{indexing.post_progress.current}" aria-valuemin="0" aria-valuemax="{indexing.post_progress.total}" style="width: {{{ if postPercent }}}{postPercent}%{{{ else }}}0%{{{ end }}};">
109
+ {indexing.post_progress.current}/{indexing.post_progress.total}
110
+ </div>
111
+ </div>
112
+ <h6 class="text-center">{{tx("meilisearch:admin.reindexMessagesProgress")}} <span id="message-reindex-progress-text">{indexing.message_progress.current}/{indexing.message_progress.total}</span></h6>
113
+ <div class="progress mb-3">
114
+ <div id="message-reindex-progress" class="progress-bar reindex-progress-bar" role="progressbar" aria-valuenow="{indexing.message_progress.current}" aria-valuemin="0" aria-valuemax="{indexing.message_progress.total}" style="width: {{{ if messagePercent }}}{messagePercent}%{{{ else }}}0%{{{ end }}};">
115
+ {indexing.message_progress.current}/{indexing.message_progress.total}
116
+ </div>
117
+ </div>
118
+ </div>
119
+ </div>
120
+
121
+ <!-- Settings form -->
122
+ <form role="form" class="meilisearch-settings">
123
+
124
+ <!-- 3. Connection settings -->
125
+ <div id="connection-settings" class="mb-4">
126
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.connection")}}</h5>
127
+ <div class="mb-3">
128
+ <label class="form-label" for="host">{{tx("meilisearch:admin.host")}}</label>
129
+ <input type="text" id="host" name="host" title="Host" class="form-control" placeholder="http://localhost:7700">
130
+ </div>
131
+ <div class="mb-3">
132
+ <label class="form-label" for="apiKey">{{tx("meilisearch:admin.apiKey")}}</label>
133
+ <input type="password" id="apiKey" name="apiKey" title="API Key" class="form-control" placeholder="*****">
134
+ </div>
135
+ <div class="mb-3">
136
+ <label class="form-label" for="healthCheckInterval">{{tx("meilisearch:admin.healthCheckInterval")}}</label>
137
+ <input type="number" id="healthCheckInterval" name="healthCheckInterval" title="Health Check Interval" class="form-control" placeholder="60">
138
+ </div>
139
+ </div>
140
+
141
+ <!-- 4. Search options -->
142
+ <div id="search-options" class="mb-4">
143
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.search")}}</h5>
144
+ <div class="mb-3">
145
+ <label class="form-label" for="maxDocuments">{{tx("meilisearch:admin.maxDocuments")}}</label>
146
+ <input type="number" id="maxDocuments" name="maxDocuments" title="Max Documents" class="form-control" placeholder="500">
147
+ <p class="form-text">
148
+ <span class="text-danger fw-bold fst-italic">({{tx("meilisearch:admin.perRoomSearchLimit")}})</span>
149
+ </p>
150
+ </div>
151
+ <div class="mb-3">
152
+ <div class="form-check form-switch">
153
+ <input class="form-check-input" type="checkbox" id="globalChatSearchEnabled" name="globalChatSearchEnabled">
154
+ <label class="form-check-label" for="globalChatSearchEnabled"><strong>{{tx("meilisearch:admin.globalChatSearchEnabled")}}</strong></label>
155
+ </div>
156
+ <p class="form-text" id="globalChatSearchLimitNotice" style="display:none;">
157
+ <span class="text-danger fw-bold fst-italic">({{tx("meilisearch:admin.globalChatSearchLimit")}})</span>
158
+ </p>
159
+ </div>
160
+ <div class="mb-3">
161
+ <label class="form-label" for="searchMinTermLength">{{tx("meilisearch:admin.searchMinTermLength")}}</label>
162
+ <input type="number" id="searchMinTermLength" name="searchMinTermLength" min="2" title="{{tx("meilisearch:admin.searchMinTermLength")}}" class="form-control" placeholder="2">
163
+ <p class="form-text">{{tx("meilisearch:admin.searchMinTermLengthHelp")}}</p>
164
+ </div>
165
+ </div>
166
+
167
+ <!-- 5. Ranking rules -->
168
+ <div id="ranking-rules" class="mb-4">
169
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.rankingRules")}}</h5>
170
+ <p class="form-text">{{tx("meilisearch:admin.rankingRulesHelp")}} <a href="https://docs.meilisearch.com/learn/core_concepts/relevancy.html#ranking-rules" style="word-break: break-all;">https://docs.meilisearch.com/learn/core_concepts/relevancy.html#ranking-rules</a></p>
171
+ <div class="form-group" data-type="sorted-list" data-sorted-list="rankingRules" data-item-template="admin/plugins/meilisearch/partials/rankingRules/item" data-form-template="admin/plugins/meilisearch/partials/rankingRules/form">
172
+ <ul name="rankingRulesList" data-type="list" class="list-group"></ul>
173
+ <button type="button" data-type="add" class="btn btn-info">{{tx("meilisearch:admin.addRankingRule")}}</button>
174
+ </div>
175
+ </div>
176
+
177
+ <!-- 6. Stop words -->
178
+ <div id="stop-words" class="mb-4">
179
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.stopWords")}}</h5>
180
+ <p class="form-text">{{tx("meilisearch:admin.stopWordsHelp")}} <a href="https://docs.meilisearch.com/reference/api/settings.html#get-stop-words" style="word-break: break-all;">https://docs.meilisearch.com/reference/api/settings.html#get-stop-words</a></p>
181
+ <div class="form-group" data-type="sorted-list" data-sorted-list="stopWords" data-item-template="admin/plugins/meilisearch/partials/stopWords/item" data-form-template="admin/plugins/meilisearch/partials/stopWords/form">
182
+ <ul name="stopWordsList" data-type="list" class="list-group"></ul>
183
+ <button type="button" data-type="add" class="btn btn-info">{{tx("meilisearch:admin.addStopWord")}}</button>
184
+ </div>
185
+ </div>
186
+
187
+ <!-- 7. Synonyms -->
188
+ <div id="synonyms" class="mb-4">
189
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.synonyms")}}</h5>
190
+ <p class="form-text">{{tx("meilisearch:admin.synonymsHelp")}} <a href="https://docs.meilisearch.com/learn/configuration/synonyms.html" style="word-break: break-all;">https://docs.meilisearch.com/learn/configuration/synonyms.html</a></p>
191
+ <div class="form-group" data-type="sorted-list" data-sorted-list="synonyms" data-item-template="admin/plugins/meilisearch/partials/synonyms/item" data-form-template="admin/plugins/meilisearch/partials/synonyms/form">
192
+ <ul name="synonymsList" data-type="list" class="list-group"></ul>
193
+ <button type="button" data-type="add" class="btn btn-info">{{tx("meilisearch:admin.addSynonym")}}</button>
194
+ </div>
195
+ </div>
196
+
197
+ <!-- 8. Typo tolerance -->
198
+ <div id="typo-tolerance" class="mb-4">
199
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.typoTolerance")}}</h5>
200
+ <div class="form-check form-switch mb-3" id="typoTolerance-container">
201
+ <input class="form-check-input" type="checkbox" id="typoTolerance" name="typoTolerance">
202
+ <label class="form-check-label" for="typoTolerance"><strong>{{tx("meilisearch:admin.typoToleranceEnable")}}</strong></label>
203
+ </div>
204
+ <div class="mb-3">
205
+ <label class="form-label" for="typoToleranceMinWordSizeOneTypo">{{tx("meilisearch:admin.typoToleranceMinWordSizeOneTypo")}}</label>
206
+ <input type="number" id="typoToleranceMinWordSizeOneTypo" name="typoToleranceMinWordSizeOneTypo" title="Typo Tolerance Min Word Size One Typo" class="form-control" placeholder="5">
207
+ </div>
208
+ <div class="mb-3">
209
+ <label class="form-label" for="typoToleranceMinWordSizeTwoTypos">{{tx("meilisearch:admin.typoToleranceMinWordSizeTwoTypos")}}</label>
210
+ <input type="number" id="typoToleranceMinWordSizeTwoTypos" name="typoToleranceMinWordSizeTwoTypos" title="Typo Tolerance Min Word Size Two Typos" class="form-control" placeholder="9">
211
+ </div>
212
+ <p class="form-text">{{tx("meilisearch:admin.typoToleranceDisableOnWordsHelp")}} <a href="https://docs.meilisearch.com/learn/configuration/typo_tolerance.html#disableonwords" style="word-break: break-all;">https://docs.meilisearch.com/learn/configuration/typo_tolerance.html#disableonwords</a></p>
213
+ <div class="form-group" data-type="sorted-list" data-sorted-list="typoToleranceDisableOnWords" data-item-template="admin/plugins/meilisearch/partials/typoToleranceDisableOnWords/item" data-form-template="admin/plugins/meilisearch/partials/typoToleranceDisableOnWords/form">
214
+ <label class="form-label" for="typoToleranceDisableOnWordsList">{{tx("meilisearch:admin.typoToleranceDisableOnWords")}}</label>
215
+ <ul name="typoToleranceDisableOnWordsList" data-type="list" class="list-group"></ul>
216
+ <button type="button" data-type="add" class="btn btn-info">{{tx("meilisearch:admin.addTypoToleranceDisabledWord")}}</button>
217
+ </div>
218
+ </div>
219
+
220
+ <!-- 9. Semantic search -->
221
+ <div id="semantic-search" class="mb-4">
222
+ <h5 class="fw-bold tracking-tight settings-header">{{tx("meilisearch:admin.semanticSearch")}}</h5>
223
+ <p class="form-text">{{tx("meilisearch:admin.semanticSearchHelp")}} <a href="https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search" style="word-break: break-all;">https://www.meilisearch.com/docs/learn/ai_powered_search/getting_started_with_ai_search</a></p>
224
+ <div class="form-check form-switch mb-3">
225
+ <input class="form-check-input" type="checkbox" id="semanticSearchEnabled" name="semanticSearchEnabled">
226
+ <label class="form-check-label" for="semanticSearchEnabled"><strong>{{tx("meilisearch:admin.semanticSearchEnable")}}</strong></label>
227
+ </div>
228
+ <p class="form-text">
229
+ <span class="text-danger fw-bold fst-italic">({{tx("meilisearch:admin.semanticSearchSaveNotice")}})</span>
230
+ </p>
231
+ <div id="semantic-search-options">
232
+ <div class="mb-3">
233
+ <label class="form-label" for="semanticSearchProvider">{{tx("meilisearch:admin.semanticSearchProvider")}}</label>
234
+ <select id="semanticSearchProvider" name="semanticSearchProvider" title="Embedding provider" class="form-select">
235
+ <option value="openAi">OpenAI</option>
236
+ <option value="huggingFace">Hugging Face ({{tx("meilisearch:admin.semanticSearchLocal")}})</option>
237
+ <option value="ollama">Ollama ({{tx("meilisearch:admin.semanticSearchLocal")}})</option>
238
+ <option value="rest">{{tx("meilisearch:admin.semanticSearchCustomRest")}}</option>
239
+ </select>
240
+ <p class="form-text">{{tx("meilisearch:admin.semanticSearchProviderHelp")}}</p>
241
+ </div>
242
+ <div class="mb-3" data-semantic-field="apiKey">
243
+ <label class="form-label" for="semanticSearchApiKey">{{tx("meilisearch:admin.semanticSearchApiKey")}}</label>
244
+ <input type="password" id="semanticSearchApiKey" name="semanticSearchApiKey" title="API Key" class="form-control" placeholder="*****">
245
+ </div>
246
+ <div class="mb-3" data-semantic-field="model">
247
+ <label class="form-label" for="semanticSearchModel">{{tx("meilisearch:admin.semanticSearchModel")}}</label>
248
+ <input type="text" id="semanticSearchModel" name="semanticSearchModel" title="Model" class="form-control" list="semanticSearchModelList" autocomplete="off">
249
+ <datalist id="semanticSearchModelList"></datalist>
250
+ <p class="form-text">{{tx("meilisearch:admin.semanticSearchModelHelp")}}</p>
251
+ </div>
252
+ <div class="mb-3" data-semantic-field="url">
253
+ <label class="form-label" for="semanticSearchUrl">{{tx("meilisearch:admin.semanticSearchUrl")}}</label>
254
+ <input type="text" id="semanticSearchUrl" name="semanticSearchUrl" title="URL" class="form-control">
255
+ <p class="form-text">{{tx("meilisearch:admin.semanticSearchUrlHelp")}}</p>
256
+ </div>
257
+ <div class="mb-3">
258
+ <label class="form-label" for="semanticSearchDimensions">{{tx("meilisearch:admin.semanticSearchDimensions")}}</label>
259
+ <input type="number" id="semanticSearchDimensions" name="semanticSearchDimensions" title="Dimensions" class="form-control" min="1">
260
+ <p class="form-text">{{tx("meilisearch:admin.semanticSearchDimensionsHelp")}}</p>
261
+ </div>
262
+ <div class="mb-3" data-semantic-field="rest">
263
+ <label class="form-label" for="semanticSearchRestRequest">{{tx("meilisearch:admin.semanticSearchRestRequest")}}</label>
264
+ <textarea id="semanticSearchRestRequest" name="semanticSearchRestRequest" title="Request template" class="form-control" rows="3"></textarea>
265
+ </div>
266
+ <div class="mb-3" data-semantic-field="rest">
267
+ <label class="form-label" for="semanticSearchRestResponse">{{tx("meilisearch:admin.semanticSearchRestResponse")}}</label>
268
+ <textarea id="semanticSearchRestResponse" name="semanticSearchRestResponse" title="Response template" class="form-control" rows="3"></textarea>
269
+ <p class="form-text">{{tx("meilisearch:admin.semanticSearchRestHelp")}}</p>
270
+ </div>
271
+ <div class="mb-3">
272
+ <label class="form-label" for="semanticSearchRatio">{{tx("meilisearch:admin.semanticSearchRatio")}}: <span id="semanticSearchRatioValue">0.5</span></label>
273
+ <input type="range" id="semanticSearchRatio" name="semanticSearchRatio" title="Semantic ratio" class="form-range" min="0" max="1" step="0.05">
274
+ <p class="form-text">{{tx("meilisearch:admin.semanticSearchRatioHelp")}}</p>
275
+ </div>
276
+ <div class="mb-3">
277
+ <label class="form-label" for="semanticSearchScoreThreshold">{{tx("meilisearch:admin.semanticSearchScoreThreshold")}}: <span id="semanticSearchScoreThresholdValue">0.20</span></label>
278
+ <input type="range" id="semanticSearchScoreThreshold" name="semanticSearchScoreThreshold" title="Minimum relevance score" class="form-range" min="0" max="1" step="0.05">
279
+ <p class="form-text">{{tx("meilisearch:admin.semanticSearchScoreThresholdHelp")}}</p>
280
+ </div>
281
+ </div>
282
+ </div>
283
+
284
+ </form>
285
+ </div>
286
+
287
+ <!-- IMPORT admin/partials/settings/toc.tpl -->
288
+ </div>
289
+ </div>