diff --git a/src/lang/en.ts b/src/lang/en.ts
index 73c685f5..42d5717e 100644
--- a/src/lang/en.ts
+++ b/src/lang/en.ts
@@ -357,4 +357,5 @@ export const languageEnglish = {
cancel: "Cancel",
renameFolder: "Rename Folder",
changeFolderColor: "Change Folder Color",
+ fullWordMatching: "Full Word Matching",
}
\ No newline at end of file
diff --git a/src/lib/SideBars/LoreBook/LoreBookSetting.svelte b/src/lib/SideBars/LoreBook/LoreBookSetting.svelte
index 97afcbe6..08829bf4 100644
--- a/src/lib/SideBars/LoreBook/LoreBookSetting.svelte
+++ b/src/lib/SideBars/LoreBook/LoreBookSetting.svelte
@@ -48,6 +48,9 @@
+
+
+
{language.loreBookDepth}
{language.loreBookToken}
diff --git a/src/ts/characterCards.ts b/src/ts/characterCards.ts
index cf575e71..ca07fd59 100644
--- a/src/ts/characterCards.ts
+++ b/src/ts/characterCards.ts
@@ -275,7 +275,8 @@ async function importSpecv2(card:CharacterCardV2, img?:Uint8Array, mode?:'hub'|'
loresettings = {
tokenBudget:charbook.token_budget,
scanDepth:charbook.scan_depth,
- recursiveScanning: charbook.recursive_scanning
+ recursiveScanning: charbook.recursive_scanning,
+ fullWordMatching: charbook?.extensions?.risu_fullWordMatching ?? false,
}
}
@@ -382,6 +383,9 @@ async function createBaseV2(char:character) {
case_sensitive: caseSensitive,
})
}
+ char.loreExt ??= {}
+
+ char.loreExt.risu_fullWordMatching = char.loreSettings?.fullWordMatching ?? false
const card:CharacterCardV2 = {
spec: "chara_card_v2",
diff --git a/src/ts/process/lorebook.ts b/src/ts/process/lorebook.ts
index b2bc26b9..946067a3 100644
--- a/src/ts/process/lorebook.ts
+++ b/src/ts/process/lorebook.ts
@@ -72,6 +72,7 @@ export async function loadLoreBookPrompt(){
const currentChat = char.chats[page].message
const loreDepth = char.loreSettings?.scanDepth ?? db.loreBookDepth
const loreToken = char.loreSettings?.tokenBudget ?? db.loreBookToken
+ const fullWordMatching = char.loreSettings?.fullWordMatching ?? false
let activatiedPrompt: string[] = []
@@ -120,6 +121,7 @@ export async function loadLoreBookPrompt(){
while(loreListUpdated){
loreListUpdated = false
const formatedChat = formatedChatMain + activatiedPrompt.join('').replace(rmRegex,'').toLocaleLowerCase()
+ const formatedChatList = fullWordMatching ? formatedChat.split(' ') : formatedChat
for(let i=0;i