공개 검색 한글 입력 처리 개선
This commit is contained in:
@@ -1,9 +1,9 @@
|
||||
import { searchPublicContent } from '../repositories/content-repository'
|
||||
|
||||
/**
|
||||
* 공개 통합 검색 API(태그·게시물)
|
||||
* 공개 통합 검색 API(태그·게시물·페이지)
|
||||
* @param {import('h3').H3Event} event - 요청 이벤트
|
||||
* @returns {Promise<{ tags: Array<{ name: string, slug: string }>, posts: Array<{ slug: string, title: string, excerpt: string }> }>} 검색 결과
|
||||
* @returns {Promise<{ tags: Array<{ name: string, slug: string }>, posts: Array<{ slug: string, title: string, excerpt: string }>, pages: Array<{ slug: string, title: string, excerpt: string }> }>} 검색 결과
|
||||
*/
|
||||
export default defineEventHandler(async (event) => {
|
||||
const raw = getQuery(event).q
|
||||
|
||||
@@ -1268,6 +1268,16 @@ const SEARCH_POST_LIMIT = 12
|
||||
const SEARCH_PAGE_LIMIT = 8
|
||||
const SEARCH_POST_CANDIDATE_LIMIT = 48
|
||||
|
||||
/**
|
||||
* 공개 검색어를 비교 가능한 문자열로 정리한다.
|
||||
* @param {string} value - 원본 검색어
|
||||
* @returns {string} 정규화된 검색어
|
||||
*/
|
||||
const normalizeSearchQuery = (value) => String(value || '')
|
||||
.normalize('NFC')
|
||||
.replace(/\s+/g, ' ')
|
||||
.trim()
|
||||
|
||||
/**
|
||||
* 공개 검색에서 업로드 경로/파일명 같은 노이즈를 제거한다.
|
||||
* - 마크다운 이미지 문법 `` 제거
|
||||
@@ -1287,7 +1297,7 @@ const normalizeSearchContent = (value) => String(value || '')
|
||||
* @returns {Promise<{ tags: Array<{ name: string, slug: string }>, posts: Array<{ slug: string, title: string, excerpt: string }>, pages: Array<{ slug: string, title: string, excerpt: string }> }>} 검색 요약 결과
|
||||
*/
|
||||
export const searchPublicContent = async (rawQuery) => {
|
||||
const q = String(rawQuery || '').trim()
|
||||
const q = normalizeSearchQuery(rawQuery)
|
||||
if (!q) {
|
||||
return { tags: [], posts: [], pages: [] }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user