Fix: Optimize search functionality #3221 (#10002)

### What problem does this PR solve?

Fix: Optimize search functionality
- Fixed search limitations when no dataset is selected

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
chanx
2025-09-09 21:18:06 +08:00
committed by GitHub
parent 906969fe4e
commit 1a904edd94
6 changed files with 24 additions and 5 deletions

View File

@ -1573,6 +1573,7 @@ This delimiter is used to split the input text into several text pieces echo of
descriptionValue: 'You are an intelligent assistant.', descriptionValue: 'You are an intelligent assistant.',
okText: 'Save', okText: 'Save',
cancelText: 'Cancel', cancelText: 'Cancel',
chooseDataset: 'Please select a dataset first',
}, },
language: { language: {
english: 'English', english: 'English',

View File

@ -1485,6 +1485,7 @@ General实体和关系提取提示来自 GitHub - microsoft/graphrag基于
descriptionValue: '你是一位智能助手。', descriptionValue: '你是一位智能助手。',
okText: '保存', okText: '保存',
cancelText: '返回', cancelText: '返回',
chooseDataset: '请先选择知识库',
}, },
language: { language: {
english: '英语', english: '英语',

View File

@ -536,6 +536,6 @@ export const useCheckSettings = (data: ISearchAppDetailProps) => {
const { search_config, name } = data; const { search_config, name } = data;
const { kb_ids } = search_config; const { kb_ids } = search_config;
return { return {
openSetting: kb_ids && kb_ids.length && name ? false : true, openSetting: kb_ids && kb_ids.length > 0 && name ? false : true,
}; };
}; };

View File

@ -82,6 +82,7 @@ export default function SearchPage() {
searchText={searchText} searchText={searchText}
setSearchText={setSearchText} setSearchText={setSearchText}
userInfo={userInfo} userInfo={userInfo}
canSearch={!checkOpenSetting}
/> />
</div> </div>
)} )}

View File

@ -1,4 +1,5 @@
import { Input } from '@/components/originui/input'; import { Input } from '@/components/originui/input';
import message from '@/components/ui/message';
import { IUserInfo } from '@/interfaces/database/user-setting'; import { IUserInfo } from '@/interfaces/database/user-setting';
import { cn } from '@/lib/utils'; import { cn } from '@/lib/utils';
import { Search } from 'lucide-react'; import { Search } from 'lucide-react';
@ -13,12 +14,14 @@ export default function SearchPage({
searchText, searchText,
setSearchText, setSearchText,
userInfo, userInfo,
canSearch,
}: { }: {
isSearching: boolean; isSearching: boolean;
setIsSearching: Dispatch<SetStateAction<boolean>>; setIsSearching: Dispatch<SetStateAction<boolean>>;
searchText: string; searchText: string;
setSearchText: Dispatch<SetStateAction<string>>; setSearchText: Dispatch<SetStateAction<string>>;
userInfo?: IUserInfo; userInfo?: IUserInfo;
canSearch?: boolean;
}) { }) {
// const { data: userInfo } = useFetchUserInfo(); // const { data: userInfo } = useFetchUserInfo();
const { t } = useTranslation(); const { t } = useTranslation();
@ -56,10 +59,18 @@ export default function SearchPage({
value={searchText} value={searchText}
onKeyUp={(e) => { onKeyUp={(e) => {
if (e.key === 'Enter') { if (e.key === 'Enter') {
if (canSearch === false) {
message.warning(t('search.chooseDataset'));
return;
}
setIsSearching(!isSearching); setIsSearching(!isSearching);
} }
}} }}
onChange={(e) => { onChange={(e) => {
if (canSearch === false) {
message.warning(t('search.chooseDataset'));
return;
}
setSearchText(e.target.value || ''); setSearchText(e.target.value || '');
}} }}
/> />
@ -67,6 +78,10 @@ export default function SearchPage({
type="button" type="button"
className="absolute right-2 top-1/2 -translate-y-1/2 transform rounded-full bg-text-primary p-2 text-bg-base shadow w-12" className="absolute right-2 top-1/2 -translate-y-1/2 transform rounded-full bg-text-primary p-2 text-bg-base shadow w-12"
onClick={() => { onClick={() => {
if (canSearch === false) {
message.warning(t('search.chooseDataset'));
return;
}
setIsSearching(!isSearching); setIsSearching(!isSearching);
}} }}
> >

View File

@ -5,7 +5,7 @@ import {
ISearchAppDetailProps, ISearchAppDetailProps,
useFetchSearchDetail, useFetchSearchDetail,
} from '../../next-searches/hooks'; } from '../../next-searches/hooks';
import { useGetSharedSearchParams, useSearching } from '../hooks'; import { useCheckSettings, useGetSharedSearchParams } from '../hooks';
import '../index.less'; import '../index.less';
import SearchHome from '../search-home'; import SearchHome from '../search-home';
import SearchingPage from '../searching'; import SearchingPage from '../searching';
@ -18,9 +18,9 @@ export default function ShareSeachPage() {
} = useFetchSearchDetail(tenantId as string); } = useFetchSearchDetail(tenantId as string);
const [isSearching, setIsSearching] = useState(false); const [isSearching, setIsSearching] = useState(false);
const [searchText, setSearchText] = useState(''); const [searchText, setSearchText] = useState('');
const searchingParam = useSearching({ const { openSetting: canSearch } = useCheckSettings(
data: searchData, searchData as ISearchAppDetailProps,
}); );
useEffect(() => { useEffect(() => {
if (locale && i18n.language !== locale) { if (locale && i18n.language !== locale) {
@ -47,6 +47,7 @@ export default function ShareSeachPage() {
isSearching={isSearching} isSearching={isSearching}
searchText={searchText} searchText={searchText}
setSearchText={setSearchText} setSearchText={setSearchText}
canSearch={!canSearch}
/> />
</div> </div>
)} )}