dede 百度站内搜索

99ANYc3cd6
预计阅读时长 17 分钟
位置: 首页 DEDE建站 正文

相比于 DedeCMS 自带的搜索功能,百度站内搜索(即使用百度搜索的 API 来搜索你自己的网站)具有以下显著优势:

dede 百度站内搜索
(图片来源网络,侵删)
  • 搜索体验好:百度强大的搜索算法,能提供更相关、更智能的搜索结果。
  • 性能优越:搜索请求由百度服务器处理,大大减轻了你自身服务器的压力。
  • 功能丰富:支持搜索建议、拼写纠错、相关搜索等高级功能。
  • 权重高:搜索结果直接来自百度,对 SEO 更友好。

第一步:准备工作 - 获取百度搜索的 API 权限

这是最关键的一步,没有 API 密钥,后续所有操作都无法进行。

  1. 登录百度智能云

  2. 进入“自然语言处理 NLP”

    • 在产品列表中找到并进入 “人工智能” > “自然语言处理”
  3. 创建应用

    dede 百度站内搜索
    (图片来源网络,侵删)
    • 在 NLP 控制台页面,点击 “创建应用”
    • 填写应用信息:
      • 应用名称:给你的应用起个名字,我的网站站内搜索”。
      • 应用描述:简单描述一下应用用途,用于网站内容搜索”。
      • 接口选择必须勾选 “文本检索”,这是实现站内搜索的核心接口。
    • 阅读并同意服务条款,然后点击 “立即创建”
  4. 获取 API Key 和 Secret Key

    • 应用创建成功后,会跳转到应用详情页。
    • 你可以看到你的 API KeySecret Key,这两个字符串非常重要,请妥善保存,不要泄露。

第二步:修改 DedeCMS 搜索模板

我们需要修改 DedeCMS 的搜索页面模板,让搜索请求不再发送到本地,而是发送到百度的服务器。

  1. 找到搜索模板文件

    • 登录你的 DedeCMS 后台。
    • 进入 “模板” > “模板管理” > “模板文件列表”
    • 在左侧选择你当前使用的模板目录。
    • 找到并点击 “搜索模板” 文件夹,然后编辑 search.htm 文件。
  2. 修改搜索表单

    dede 百度站内搜索
    (图片来源网络,侵删)
    • search.htm 文件中,找到搜索表单的 <form> 标签,它通常是这样的:
      <form name="formsearch" action="{dede:global.cfg_cmsurl/}/search.php" method="get">
    • 我们需要将 action 属性修改为百度的搜索 API 地址,并添加必要的参数。
  3. 编写新的搜索表单代码

    • 将原来的搜索表单替换为以下代码。请务必将 YOUR_API_KEY 替换为你自己申请到的 API Key
    <form name="formsearch" action="https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/site_search?access_token=YOUR_ACCESS_TOKEN" method="post" target="_blank">
        <div class="form-search">
            <input type="text" name="query" id="keyword" class="input-text" placeholder="请输入关键词..." value="{dede:global name='keyword' function='RemoveXSS(@me)'/}">
            <button type="submit" class="btn">搜索</button>
        </div>
    </form>

    代码解释

    • action: 这是百度搜索 API 的地址,注意,这里我们使用的是 wenxinworkshop(文心一言)的插件接口,这是目前官方推荐的用于站内搜索的接口。
    • access_token: 这是访问 API 的凭证,但它不是你的 API Key,而是通过 API KeySecret Key 换取的,我们需要在页面加载时动态获取它。
    • method="post": 百度站内搜索 API 要求使用 POST 方法提交数据。
    • target="_blank": 可选,点击搜索后在新标签页打开结果。
    • name="query": 这是关键! 搜索关键词的输入框 name 属性必须设置为 query,百度 API 才能识别。
    • value="{dede:global name='keyword'...}": 这行代码用于保留用户在搜索结果页再次搜索时已经输入的关键词。

第三步:动态获取 Access Token

access_token 有有效期(30 天),不能直接写在代码里,我们需要在页面加载时通过 JavaScript 动态获取它。

  1. search.htm 中添加 JavaScript 代码

    • search.htm 文件的 <head> 标签内或 <body> 标签末尾的 <script> 标签内,添加以下 JavaScript 代码。同样,将 YOUR_API_KEYYOUR_SECRET_KEY 替换成你自己的
    <script>
    // 在页面加载时执行
    window.onload = function() {
        // 使用 async/await 处理异步请求
        async function getAccessToken() {
            const apiKey = 'YOUR_API_KEY'; // 替换成你的 API Key
            const secretKey = 'YOUR_SECRET_KEY'; // 替换成你的 Secret Key
            const tokenUrl = `https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=${apiKey}&client_secret=${secretKey}`;
            try {
                const response = await fetch(tokenUrl);
                const data = await response.json();
                if (data.access_token) {
                    // 获取到 token 后,将其放入表单的 action 中
                    const form = document.querySelector('form[name="formsearch"]');
                    form.action = `https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/plugin/site_search?access_token=${data.access_token}`;
                } else {
                    console.error('获取 Access Token 失败:', data.error_description);
                }
            } catch (error) {
                console.error('请求 Access Token 时发生错误:', error);
            }
        }
        // 调用函数获取 token
        getAccessToken();
    };
    </script>

工作原理

  • 当用户打开搜索页面时,这段 JavaScript 代码会自动运行。
  • 它会向百度服务器发送请求,用你的 API KeySecret Key 换取一个临时的 access_token
  • 获取成功后,它会动态地将这个 token 拼接到搜索表单的 action 地址中。
  • 这样,当用户点击搜索按钮时,表单就会提交到正确且有效的百度 API 地址。

第四步:配置百度搜索后台(可选但推荐)

为了让百度更好地索引你的网站内容,你还可以:

  1. 提交网站到百度站长平台

    • 注册并登录 百度站长平台
    • 添加并验证你的网站。
    • “普通收录” 中,你可以提交网站的 URL,让百度更快地发现和收录你的内容。
  2. 配置“熊掌号”(如果还在使用):

    熊掌号已停止新用户申请,但老用户仍可配置,它提供的数据标注等功能对搜索展示有帮助。


总结与排错

完成以上步骤后,你的 DedeCMS 百度站内搜索功能就可以正常使用了。

如果遇到问题,请检查以下几点:

  1. API Key 和 Secret Key 是否正确:确保没有复制错误,并且是同一个应用下的。
  2. Access Token 是否成功获取:打开浏览器开发者工具(F12),切换到 “Network”(网络)标签,刷新页面,看看是否有向 oauth/2.0/token 发起的请求,以及响应内容是否包含 access_token,如果没有,说明密钥可能有问题。
  3. 搜索请求是否成功发送:在开发者工具的 “Network” 标签中,搜索时应该能看到一个向 ai_custom/v1/.../site_search 发起的 POST 请求,Payload(载荷)中有 query 字段和你的关键词,检查这个请求的响应状态码和内容。
  4. CORS 跨域问题getAccessToken 的请求失败,可能是浏览器的跨域策略阻止了,但由于 aip.baidubce.com 是一个受信任的域名,通常不会出现此问题,如果出现,请检查服务器端是否有代理或防火墙设置。

通过以上步骤,你就可以为你的 DedeCMS 网站集成一个强大、稳定且用户体验优秀的百度站内搜索功能了。

-- 展开阅读全文 --
头像
织梦后台采集如何替换内容?
« 上一篇 03-29
dede自定义表单模板
下一篇 » 03-29

相关文章

取消
微信二维码
支付宝二维码

目录[+]