搜索通过顶部(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 是将网站搜索集成进浏览器的一个标准。所有现代浏览器都支持该标准。 DokuWiki 也启用了 OpenSearch。
下面就是如何在 Firefox 中添加您的维基搜索(其他浏览器处理方式雷同):
DokuWiki 甚至一些大的维基都是基于索引进行搜索。基于索引的搜索需要提前将数据进行索引,当用户浏览页面时页面信息就会添加和更新索引数据。每个页面都有一个不可见的(网络信息标)用于在需要时唤醒索引程序进行更新。3) (也就是说页面时间戳比索引时间戳新的时候就会唤醒索引功能。)
索引由索引目录内的 page.idx
、w[n].idx
、i[n].idx
三个文件组成。w[n].idx
是所有维基页面内出现的词(停用词除外)和长度n的列表。w[n].idx
文件里的每一行对应 i[n].idx
文件里的行,每一行都是 pn*freq
格式。 pn
是 page.idx
文件的行号,freq
表示该词在页面出现的频率。多个页面用冒号分开。
索引器引用一个包含了常见但无意义的语言规范停用词表,该表词语不会被索引(例如英语里的 the
)。搜索这些停用词不会返回结果。停用词表文件在 DokuWiki 安装的语言文件夹内,也就是 <dokuwiki>/inc/lang/<language>/stopwords.txt,您可以编辑该文件添加或者删除不想被索引的词语。
如果您更新了维基但没有更新索引,搜索将不会返回任何结果。您可以等待索引完成(通过访问您的维基激活索引程序)再搜索,或者安装搜索索引插件生成索引,也可以使用命令行脚本程序更新索引。