forked from open-webui/open-webui
		
	Merge pull request #675 from HenryHolloway/ollama-webui-full-search
feat: full-context search
This commit is contained in:
		
						commit
						9fccf72bfc
					
				
					 1 changed files with 28 additions and 11 deletions
				
			
		|  | @ -11,6 +11,7 @@ | ||||||
| 	import { | 	import { | ||||||
| 		deleteChatById, | 		deleteChatById, | ||||||
| 		getChatList, | 		getChatList, | ||||||
|  | 		getChatById, | ||||||
| 		getChatListByTagName, | 		getChatListByTagName, | ||||||
| 		updateChatById | 		updateChatById | ||||||
| 	} from '$lib/apis/chats'; | 	} from '$lib/apis/chats'; | ||||||
|  | @ -31,16 +32,24 @@ | ||||||
| 		if (window.innerWidth > 1280) { | 		if (window.innerWidth > 1280) { | ||||||
| 			show = true; | 			show = true; | ||||||
| 		} | 		} | ||||||
| 
 |  | ||||||
| 		await chats.set(await getChatList(localStorage.token)); | 		await chats.set(await getChatList(localStorage.token)); | ||||||
| 
 |  | ||||||
| 		tags.subscribe(async (value) => { |  | ||||||
| 			if (value.length === 0) { |  | ||||||
| 				await chats.set(await getChatList(localStorage.token)); |  | ||||||
| 			} |  | ||||||
| 		}); |  | ||||||
| 	}); | 	}); | ||||||
| 
 | 
 | ||||||
|  | 	// Helper function to fetch and add chat content to each chat | ||||||
|  | 	const enrichChatsWithContent = async (chatList) => { | ||||||
|  | 		const enrichedChats = await Promise.all( | ||||||
|  | 			chatList.map(async (chat) => { | ||||||
|  | 				const chatDetails = await getChatById(localStorage.token, chat.id).catch((error) => null); // Handle error or non-existent chat gracefully | ||||||
|  | 				if (chatDetails) { | ||||||
|  | 					chat.chat = chatDetails.chat; // Assuming chatDetails.chat contains the chat content | ||||||
|  | 				} | ||||||
|  | 				return chat; | ||||||
|  | 			}) | ||||||
|  | 		); | ||||||
|  | 
 | ||||||
|  | 		await chats.set(enrichedChats); | ||||||
|  | 	}; | ||||||
|  | 
 | ||||||
| 	const loadChat = async (id) => { | 	const loadChat = async (id) => { | ||||||
| 		goto(`/c/${id}`); | 		goto(`/c/${id}`); | ||||||
| 	}; | 	}; | ||||||
|  | @ -271,6 +280,9 @@ | ||||||
| 						class="w-full rounded-r py-1.5 pl-2.5 pr-4 text-sm text-gray-300 bg-gray-950 outline-none" | 						class="w-full rounded-r py-1.5 pl-2.5 pr-4 text-sm text-gray-300 bg-gray-950 outline-none" | ||||||
| 						placeholder="Search" | 						placeholder="Search" | ||||||
| 						bind:value={search} | 						bind:value={search} | ||||||
|  | 						on:focus={() => { | ||||||
|  | 							enrichChatsWithContent($chats); | ||||||
|  | 						}} | ||||||
| 					/> | 					/> | ||||||
| 
 | 
 | ||||||
| 					<!-- <div class="self-center pr-3 py-2  bg-gray-900"> | 					<!-- <div class="self-center pr-3 py-2  bg-gray-900"> | ||||||
|  | @ -323,11 +335,16 @@ | ||||||
| 						let title = chat.title.toLowerCase(); | 						let title = chat.title.toLowerCase(); | ||||||
| 						const query = search.toLowerCase(); | 						const query = search.toLowerCase(); | ||||||
| 
 | 
 | ||||||
| 						if (title.includes(query)) { | 						let contentMatches = false; | ||||||
| 							return true; | 						// Access the messages within chat.chat.messages | ||||||
| 						} else { | 						if (chat.chat && chat.chat.messages && Array.isArray(chat.chat.messages)) { | ||||||
| 							return false; | 							contentMatches = chat.chat.messages.some((message) => { | ||||||
|  | 								// Check if message.content exists and includes the search query | ||||||
|  | 								return message.content && message.content.toLowerCase().includes(query); | ||||||
|  | 							}); | ||||||
| 						} | 						} | ||||||
|  | 
 | ||||||
|  | 						return title.includes(query) || contentMatches; | ||||||
| 					} | 					} | ||||||
| 				}) as chat, i} | 				}) as chat, i} | ||||||
| 					<div class=" w-full pr-2 relative"> | 					<div class=" w-full pr-2 relative"> | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Timothy Jaeryang Baek
						Timothy Jaeryang Baek