高级语法搜索.md 3.3 KB
Newer Older
Lab机器人's avatar
Lab机器人 已提交
1
# 高级语法搜索[](#高级语法搜索 "Permalink")
Lab机器人's avatar
readme  
Lab机器人 已提交
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

版本历史

*[GitLab Enterprise Starter](https://about.gitlab.com/pricing/) 9.2 中引入

**GitLab.com 可用性:**自 2020-07-10 起,在 GitLab.com 上启用了 Bronze 及更高版本的 Advanced Global Search(由 Elasticsearch 支持).

使用高级查询获得更具针对性的搜索结果.

这是用户文档. 要安装和配置 Elasticsearch,请访问[管理员文档](../../integration/elasticsearch.html) .

## Overview[](#overview "Permalink")

"高级语法搜索"是" [高级全局搜索"](advanced_global_search.html)的子集,如果您想要更具体的搜索结果,可以使用它.

Advanced Global Search 仅支持搜索[默认分支](../project/repository/branches/index.html#default-branch) .

## Use cases[](#use-cases "Permalink")

例如,假设您开发的产品依赖于另一个组中托管的另一种产品的代码.

由于在您的 GitLab 实例下托管了数百个不同的项目,因此您需要搜索结果尽可能地高效. 您对要查找的内容有感觉(例如,函数名),但是同时您也不太确定.

在这种情况下,在查询中使用高级搜索语法将产生更好的结果.

## Using the Advanced Syntax Search[](#using-the-advanced-syntax-search "Permalink")

高级语法搜索支持带有前缀,布尔运算符等的模糊或精确搜索查询.

可以在[Elasticsearch 文档中](https://www.elastic.co/guide/en/elasticsearch/reference/5.3/query-dsl-simple-query-string-query.html#_simple_query_string_syntax)找到完整的详细信息,但是这里有一个快速指南:

*   搜索以任何顺序搜索查询中的所有单词,例如:搜索`display bug`问题将以任何顺序返回匹配这两个单词的所有问题.
*   要查找确切的词组(仍然适用词干),请使用双引号: `"display bug"`
*   要查找未提及显示的错误,请使用`-``bug -display`
*   要查找显示或声音中的错误,请使用`|``bug display | sound` `bug display | sound`
*   要组术语一起,使用括号: `bug | (display +sound)` `bug | (display +sound)`
*   要匹配部分单词,请使用`*``bug find_by_*`
*   要查找包含这些符号之一的术语,请使用`\` : `argument \-last`

### Syntax search filters[](#syntax-search-filters "Permalink")

高级语法搜索还支持使用过滤器. 可用的过滤器是:

*   filename:按文件名过滤. 您可以使用 glob( `*` )运算符进行模糊匹配.
*   path:按路径过滤. 您可以使用 glob( `*` )运算符进行模糊匹配.
*   扩展名:按扩展名过滤文件名. 请写扩展名,不要带引号. 仅完全匹配.

要使用它们,只需将它们添加到您的查询格式`<filter_name>:<value>`没有冒号之间的空格( `:` )和值.

Examples:

*   查找包含任何名为`hello_world.rb`内容的文件: `* filename:hello_world.rb`
*   查找一个名为`hello_world`的文件,其中包含文本`whatever` : `whatever filename:hello_world`
*   在扩展名为`.rb`文件中查找文本" def create": `def create extension:rb`
*   在名为`encryption`的文件夹中的文件内查找文本`sha` : `sha path:encryption`
*   查找任何以`hello`开头的文件,其中包含`world`并带有`.js`扩展名: `world filename:hello* extension:js`