全文索引功能完善

This commit is contained in:
tangly1024
2022-03-02 10:32:18 +08:00
parent 5bb730d4c2
commit 2fbe4b736f
3 changed files with 25 additions and 7 deletions

View File

@@ -2,7 +2,7 @@ import BLOG from '@/blog.config'
import { NotionAPI } from 'notion-client'
import { getDataFromCache, setDataToCache } from '@/lib/cache/cache_manager'
export async function getPostBlocks (id, from, slice) {
export async function getPostBlocks (id, from, slice, retryCount = 3) {
const cacheKey = 'page_block_' + id
let pageBlock = await getDataFromCache(cacheKey)
if (pageBlock) {
@@ -17,6 +17,10 @@ export async function getPostBlocks (id, from, slice) {
console.log('[请求成功]', `from:${from}`, `id:${id}`)
} catch (error) {
console.error('[请求失败]', `from:${from}`, `id:${id}`, `error:${error}`)
if (retryCount && retryCount > 0) { // 重试
console.error('[重试请求]', `from:${from}`, `id:${id}`, `剩余次数:${retryCount}`)
return getPostBlocks(id, from, slice, retryCount - 1)
}
return null
}

View File

@@ -23,13 +23,30 @@ function appendText (sourceTextArray, targetObj, key) {
return sourceTextArray
}
const textArray = targetObj[key]
const text = textArray ? textArray[0][0] : ''
const text = textArray ? getTextContent(textArray) : ''
if (text && text !== 'Untitled') {
return sourceTextArray.concat(text)
}
return sourceTextArray
}
/**
* 递归获取层层嵌套的数组
* @param {*} textArray
* @returns
*/
function getTextContent (textArray) {
if (typeof textArray === 'object') {
let result = ''
textArray.forEach(textObj => {
result = result + getTextContent(textObj)
})
return result
} else if (typeof textArray === 'string') {
return textArray
}
}
export async function getStaticProps ({ params: { keyword } }) {
const {
allPosts,
@@ -55,9 +72,6 @@ export async function getStaticProps ({ params: { keyword } }) {
indexContent = appendText(indexContent, properties, 'caption')
})
}
if (page !== null) {
console.log('读取缓存成功', page, indexContent)
}
post.results = []
let hit = false
const re = new RegExp(`${keyword}`, 'g')

View File

@@ -19,7 +19,7 @@ import CONFIG_NEXT from '../config_next'
* @constructor
*/
const SideAreaLeft = (props) => {
const { currentTag, post, postCount, currentSearch } = props
const { post, postCount } = props
const { locale } = useGlobal()
const showToc = post && post.toc && post.toc.length > 1
return <aside id='left' className='hidden lg:block flex-col w-60 mr-4'>
@@ -32,7 +32,7 @@ const SideAreaLeft = (props) => {
<MenuButtonGroup allowCollapse={true} {...props} />
</div>
{CONFIG_NEXT.MENU_SEARCH && <div className='px-2 pt-2 font-sans'>
<SearchInput currentTag={currentTag} currentSearch={currentSearch} />
<SearchInput {...props} />
</div>}
</section>
</section>