DokuWiki

It's better when it's simple

用户工具

站点工具


zh:search

搜索

搜索通过顶部(DokuWiki 默认模板在顶部)搜索框来完成。

语法

DokuWiki 默认使用逻辑搜索,这就意味着您放进搜索框的所有词都参与搜索。搜索通常不区分大小写1)

DokuWiki 的高级检索构建语法后面讲述。所有语法可以组合使用。这里我们使用方括号[ … ]代表搜索用词。

去除您不想要的 (-)

如果想从检索结果中去除包含某个词的页面,可以在该词前面添加一个减号 - 即可。例如:搜索 [ dokuwiki -plugin ] 将会搜索所有包含 “DokuWiki” 同时又没有 “plugin” 的页面。

您不仅可以使用 - 语法减掉一个词,也可以用于减掉一个部分匹配、一个句子、一个命名空间甚至一个组检索。例如:你可以使用搜索[ -"phrase you want to exclude" ] 减掉一个精准的句子。

部分匹配 (*)

您可以通过在一个词前置或者后置一个星号 * 来进行部分匹配。例如:搜索 [ wiki ] 只会找到 “wiki”,但是搜索 [ *wiki ] 还会找到 “DokuWiki” (后缀匹配)。您也可以搜索 [ doku* ] (前缀匹配)和 and [ *okuwik* ] (部分匹配)。

注意: * 不是“通配符”,您不能在一个词内使用。例如:搜索 [ doku*iki ] 就会什么也找不到。

短语搜索 ("")

您可以通过在短语外使用双引号2)来进行短语精确搜索。例如: [ "installing dokuwiki" ]

命名空间内搜索 (@)

您可以搜索限定命名空间。在一个命名空间内搜索,在命名空间前添加前置词 @ 或者 ns:。不搜索指定命名空间,在命名空间前添加前置词 ^ 或者 -ns:

例如:搜索 [ dokuwiki @wiki ^wiki:docs ] 会在命名空间“wiki”内,但是不属于命名空间“wiki:docs”的范围内搜索“dokuwiki”。搜索 [ dokuwiki ns:wiki -ns:wiki:docs ] 结果一样。

或 运算 (|)

DokuWiki 默认进行逻辑搜索,但是也可以使用 | 或者 or 连接词语进行逻辑搜索。例如:搜索 [ plugin | template ] 会查找包含 “plugin” 或者 “template” 或者两者都有的页面。搜索 [ plugin or template ] 结果一样。您可以用作为 部分匹配 (*) 的简单替代,例如:搜索人们使用不同变体 [ Frank | Fränk ] 的页面。

运算优先权低于运算。所以搜索 [ dokuwiki plugin | template ] 也可以表示为 [ (dokuwiki plugin) | template ],但不能用 [ dokuwiki (plugin | template) ]。或运算也可以使用下面的分组搜索。

如果您想严格限定于某个命名空间内搜索,您必须使用“()“分组,否则搜索 [ plugin | template @plugin] 会被认为是 [ (plugin) | (template @plugin)],例如:在 所有 命名空间内搜索 “plugin” 或者 “template @plugin”,而不是在所有命名空间搜索 “plugin” 或者在 plugin 命名空间搜索 “template”,作为纠正可以写成 [ (plugin | template) @plugin]

分组搜索

您可以通过使用括号 ( … ) 进行分组搜索。括号因为拥有最高优先级,所以被用于提高优先权。

例如:搜索 [ dokuwiki -(plugin | @plugin) ] 会搜索包含 “DokuWiki” 但是不包含 “plugin” 或者不在命名空间 “plugin” 内的页面。

快速搜索

您可以通过在搜索框键入页面名的开头部分然后等待半秒。大多数现代浏览器里您都会得到一个页面名相匹配的下拉列表。

OpenSearch

Firefox 中的 OpenSearch

OpenSearch 是将网站搜索集成进浏览器的一个标准。所有现代浏览器都支持该标准。 DokuWiki 也启用了 OpenSearch。

下面就是如何在 Firefox 中添加您的维基搜索(其他浏览器处理方式雷同):

  1. 在浏览器中打开您的维基
  2. 点击浏览器搜索框左侧放大镜
  3. 选择 “Add <your wiki's title>“,例如: “Add DokuWiki”

关于搜索索引(Searchindex)的一些背景知识

DokuWiki 甚至一些大的维基都是基于索引进行搜索。基于索引的搜索需要提前将数据进行索引,当用户浏览页面时页面信息就会添加和更新索引数据。每个页面都有一个不可见的(网络信息标)用于在需要时唤醒索引程序进行更新。3) (也就是说页面时间戳比索引时间戳新的时候就会唤醒索引功能。)

索引由索引目录内的 page.idxw[n].idxi[n].idx三个文件组成。w[n].idx 是所有维基页面内出现的词(停用词除外)和长度n的列表。w[n].idx 文件里的每一行对应 i[n].idx 文件里的行,每一行都是 pn*freq 格式。 pnpage.idx 文件的行号,freq 表示该词在页面出现的频率。多个页面用冒号分开。

索引器引用一个包含了常见但无意义的语言规范停用词表,该表词语不会被索引(例如英语里的 the )。搜索这些停用词不会返回结果。停用词表文件在 DokuWiki 安装的语言文件夹内,也就是 <dokuwiki>/inc/lang/<language>/stopwords.txt,您可以编辑该文件添加或者删除不想被索引的词语。

如果您更新了维基但没有更新索引,搜索将不会返回任何结果。您可以等待索引完成(通过访问您的维基激活索引程序)再搜索,或者安装搜索索引插件生成索引,也可以使用命令行脚本程序更新索引。

参见

1)
这点对于中文检索意义不大,因为中文词没有大小写之分。
2)
英文的双引号
3)
注意:网络新标也常用于其他任务。参见 http://forum.dokuwiki.org/post/3116
zh/search.txt · 最后更改: 2022-11-06 09:26 由 58.35.22.140

除额外注明的地方外,本维基上的内容按下列许可协议发布: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki