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.',
okText: 'Save',
cancelText: 'Cancel',
chooseDataset: 'Please select a dataset first',
},
language: {
english: 'English',

View File

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

View File

@ -536,6 +536,6 @@ export const useCheckSettings = (data: ISearchAppDetailProps) => {
const { search_config, name } = data;
const { kb_ids } = search_config;
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}
setSearchText={setSearchText}
userInfo={userInfo}
canSearch={!checkOpenSetting}
/>
</div>
)}

View File

@ -1,4 +1,5 @@
import { Input } from '@/components/originui/input';
import message from '@/components/ui/message';
import { IUserInfo } from '@/interfaces/database/user-setting';
import { cn } from '@/lib/utils';
import { Search } from 'lucide-react';
@ -13,12 +14,14 @@ export default function SearchPage({
searchText,
setSearchText,
userInfo,
canSearch,
}: {
isSearching: boolean;
setIsSearching: Dispatch<SetStateAction<boolean>>;
searchText: string;
setSearchText: Dispatch<SetStateAction<string>>;
userInfo?: IUserInfo;
canSearch?: boolean;
}) {
// const { data: userInfo } = useFetchUserInfo();
const { t } = useTranslation();
@ -56,10 +59,18 @@ export default function SearchPage({
value={searchText}
onKeyUp={(e) => {
if (e.key === 'Enter') {
if (canSearch === false) {
message.warning(t('search.chooseDataset'));
return;
}
setIsSearching(!isSearching);
}
}}
onChange={(e) => {
if (canSearch === false) {
message.warning(t('search.chooseDataset'));
return;
}
setSearchText(e.target.value || '');
}}
/>
@ -67,6 +78,10 @@ export default function SearchPage({
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"
onClick={() => {
if (canSearch === false) {
message.warning(t('search.chooseDataset'));
return;
}
setIsSearching(!isSearching);
}}
>

View File

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