
doc_search 和 search 的区别
MrDoc中有两个搜索入口,它们使用不同的搜索技术和参数:
1. /doc_search/ — 全文搜索(Haystack + Whoosh)
| 项目 | 说明 |
|---|---|
| URL | /doc_search/?q=关键词 |
| 视图 | DocSearchView(app_doc/views_search.py) |
| 搜索技术 | Whoosh全文检索引擎 + jieba中文分词 |
| 搜索参数 | q(搜索框name="q") |
| 模板 | template/search/search.html |
| 特点 | 支持中文分词、相关性排序、搜索结果高亮、时间筛选 |
| 搜索范围 | 索引中的文档标题和正文内容 |
2. /search/ — 精准搜索(Django ORM)
| 项目 | 说明 |
|---|---|
| URL | /search/?kw=关键词&type=doc |
| 视图 | search 函数(app_doc/views.py) |
| 搜索技术 | Django ORM 的 __icontains(数据库LIKE查询) |
| 搜索参数 | kw(搜索框name="kw") |
| 模板 | template/app_doc/search_result.html |
| 特点 | 支持搜索文档、文集、标签三种类型 |
| 搜索范围 | 数据库中的文档标题、正文、文集名称、标签名称 |
关键区别
- 搜索参数名不同:全文搜索用
q,精准搜索用kw - 搜索技术不同:全文搜索使用Whoosh索引(更快、支持中文分词),精准搜索使用数据库LIKE查询
- 搜索类型不同:全文搜索只搜文档,精准搜索可搜文档/文集/标签
- 页面切换:在精准搜索结果页点击"全文搜索"会跳转到
/doc_search/?q=关键词,在全文搜索页点击"精准搜索"会跳转到/search/?kw=关键词&type=doc
为什么您可能觉得"什么都搜不到"
如果您在首页搜索框(template/app_doc/search.html)输入关键词,当 search_type 为 1 时提交到 /doc_search/?q=关键词(全文搜索),否则提交到 /search/?kw=关键词(精准搜索)。请确认:
- 您访问的是哪个URL路径
- 使用的参数名是
q还是kw - 文档中确实包含您搜索的关键词
浏览
50
点赞
0