search-setting.tsx


Overview

search-setting.tsx is a React functional component file that implements a comprehensive search configuration form interface within a web application. This component enables users to view and modify search-related settings for a specific search application instance, including dataset selections, similarity thresholds, AI model configurations, and feature toggles such as reranking and AI summaries.

The form leverages React Hook Form with Zod for schema-based validation, ensuring robust data integrity. It integrates multiple UI components and hooks for fetching necessary data and managing state, providing an interactive and dynamic user experience for search configuration management.


Detailed Explanation

Component: SearchSetting

Purpose

The SearchSetting component renders a side panel form for editing the settings of a search application. It handles form state, validation, and submission logic, providing options to configure datasets, similarity metrics, AI models, and various search features.

Props

Prop Name

Type

Description

open

boolean

Controls visibility of the settings panel.

setOpen

(open: boolean) => void

Function to toggle the visibility state.

className

string (optional)

Additional CSS class names for styling.

data

ISearchAppDetailProps

The current search application settings data.

Internal State and Hooks

Schema: SearchSettingFormSchema

This Zod schema defines the validation rules for the form data:

Form Fields and Controls

Methods and Functions

Usage Example

import { SearchSetting } from './search-setting';

const Example = () => {
  const [open, setOpen] = useState(false);
  const searchData = {
    id: 'search123',
    name: 'My Search',
    avatar: '',
    description: 'Search description',
    search_config: {
      kb_ids: ['dataset1'],
      vector_similarity_weight: 0.3,
      web_search: true,
      similarity_threshold: 0.2,
      use_kg: false,
      rerank_id: '',
      use_rerank: false,
      top_k: 100,
      summary: false,
      llm_setting: { llm_id: '', parameter: '', temperature: 0 },
      related_search: false,
      query_mindmap: false,
      meta_data_filter: {},
    },
  };

  return (
    <>
      <button onClick={() => setOpen(true)}>Open Search Setting</button>
      <SearchSetting open={open} setOpen={setOpen} data={searchData} />
    </>
  );
};

Important Implementation Details


System Interaction


Mermaid Diagram

The following Mermaid class diagram illustrates the structure of the primary React component SearchSetting including its key properties, state, and methods.

classDiagram
    class SearchSetting {
        +boolean open
        +function setOpen(boolean)
        +string className
        +ISearchAppDetailProps data
        -useForm<SearchSettingFormData> formMethods
        -MultiSelectOptionType[] datasetList
        -string datasetSelectEmbdId
        -boolean formSubmitLoading
        +void resetForm()
        +void handleDatasetSelectChange(string[], onChange: function)
        +Promise<void> onSubmit(formData)
        +JSX.Element render()
    }
    SearchSetting ..> "1" ISearchAppDetailProps : uses
    SearchSetting ..> SearchSettingFormSchema : validates with
    SearchSetting ..> MultiSelectOptionType : manages dataset options
    SearchSetting ..> useFetchKnowledgeList : fetches dataset list
    SearchSetting ..> useUpdateSearch : submits updates
    SearchSetting ..> useSelectLlmOptionsByModelType : fetches LLM options
    SearchSetting ..> useComposeLlmOptionsByModelTypes : fetches AI summary models

Summary

search-setting.tsx is a critical UI component that encapsulates the search configuration logic for the application. It combines complex form state management, validation, and data fetching to allow users to tailor search behaviors and AI model parameters effectively. Its modular design and integration with shared hooks and UI elements make it reusable and maintainable within the overall system.


End of Documentation for search-setting.tsx