Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

update index #80

Merged
merged 2 commits into from
Sep 18, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

`LOOKUP` 语句指定过滤条件对数据进行查询。`LOOKUP` 语句之后通常跟着 `WHERE` 子句。`WHERE` 子句用于向条件中添加过滤性的谓词,从而对数据进行过滤。

**注意:** 在使用 `LOOKUP` 语句之前,请确保已创建索引。查看[索引文档](../1.data-definition-statements/index.md)了解有关索引的更多信息。
> **注意:** 在使用 `LOOKUP` 语句之前,请确保已创建索引。查看[索引文档](../1.data-definition-statements/index.md)了解有关索引的更多信息。

```ngql
LOOKUP ON {<vertex_tag> | <edge_type>} WHERE <expression> [ AND | OR expression ...]) ] [YIELD <return_list>]
Expand All @@ -12,13 +12,18 @@ LOOKUP ON {<vertex_tag> | <edge_type>} WHERE <expression> [ AND | OR expression
```

- `LOOKUP` 语句用于寻找点或边的集合。
- `WHERE` 指定被筛选的逻辑条件。同样支持逻辑关键词 AND、OR、NOT,详情参见 [WHERE](where-syntax.md) 的用法。
**注意:** `WHERE` 子句在 `LOOKUP` 中暂不支持如下操作:
- `$-` 和 `$^`
- 在关系表达式中,暂不支持操作符两边都是field-name 的表达式,如 (tagName.column1 > tagName.column2)
- 暂不支持运算表达式和 function 表达式中嵌套 AliasProp 表达式。
- `WHERE` 指定被筛选的逻辑条件。同样支持逻辑关键词 AND,详情参见 [WHERE](where-syntax.md) 的用法。
- `YIELD` 指定返回结果。如未指定,则在 `LOOKUP` 标签时返回点 ID,在 `LOOKUP` 边类型时返回边的起点 ID、终点 ID 和 ranking 值。

## 索引使用限制

`WHERE` 子句在 `LOOKUP` 中暂不支持如下操作:

- `$-` 和 `$^`
- 在关系表达式中,暂不支持操作符两边都是field-name 的表达式,如 (tagName.column1 > tagName.column2)
- 暂不支持运算表达式和 function 表达式中嵌套 AliasProp 表达式。
- 字符串类型的索引不支持范围查询。

## 点查询

如下示例返回名称为 `Tony Parker`,标签为 _player_ 的点。
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,18 @@

## 系统要求

以下为编译**Nebula Graph**机器所需配置要求,运行环境所需配置要求见[这里](../3.configurations/0.system-requirement.md)。

* 处理器: x86_64
* 内存: 至少 4GB
* 存储空间: 至少 10GB
* Linux 内核: 2.6.32 或更高版本,通过命令`uname -r`查看
* glibc: 2.12 或更高版本,通过命令`ldd --version`查看
* GCC: 7.1.0 或更高版本,通过命令`g++ --version`查看
* CMake: 3.5.0 或更高版本,通过命令`cmake --version`查看
以下为编译 Nebula Graph 机器所需配置要求,运行环境所需配置要求见[这里](../3.configurations/0.system-requirement.md)。

* 处理器x86_64
* 内存至少 4GB
* 存储空间至少 10GB
* Linux 内核2.6.32 或更高版本,通过命令`uname -r`查看
* glibc2.12 或更高版本,通过命令`ldd --version`查看
* GCC7.1.0 或更高版本,通过命令`g++ --version`查看
* CMake3.5.0 或更高版本,通过命令`cmake --version`查看
* 能够访问互联网

**注意**: **Nebula Graph** 目前仅支持 x86_64 架构。
**注意**Nebula Graph 目前仅支持 x86_64 架构。

## 快速编译步骤

Expand Down Expand Up @@ -118,18 +118,18 @@ $ sudo cp etc/nebula-graphd.conf.default etc/nebula-graphd.conf

详情参考[启动和停止 Nebula Graph 服务文档](../2.install/2.start-stop-service.md)。

由于 **Nebula Graph** 使用了大量的 C++ 模板,尤其是 Follyfbthrift 和 boost,因此编译会非常耗时。比如,如果使用 Intel E5-2697 v3 处理器,在 16 个任务并发运行的情况下,需要花费大约 4 分钟完成编译,总的 CPU 时间大约 35 分钟。
由于 Nebula Graph 使用了大量的 C++ 模板,尤其是 Follyfbthrift 和 boost,因此编译会非常耗时。比如,如果使用 Intel E5-2697 v3 处理器,在 16 个任务并发运行的情况下,需要花费大约 4 分钟完成编译,总的 CPU 时间大约 35 分钟。

### 源码打包(可选)

* 如需将 **Nebula Graph** 打包至一个包,请使用以下命令:
* 如需将 Nebula Graph 打包至一个包,请使用以下命令:

```bash
cd nebula/package
./package.sh -v <version>
```

* 如需将 **Nebula Graph** 打包至多个包,请使用以下命令:
* 如需将 Nebula Graph 打包至多个包,请使用以下命令:

```bash
cd nebula/package
Expand All @@ -138,27 +138,27 @@ cd nebula/package

## 编译选项

除默认选项外,**Nebula Graph** 的编译系统还提供诸多选项来调整编译行为。
除默认选项外,Nebula Graph 的编译系统还提供诸多选项来调整编译行为。

### CMake 参数

可通过 `cmake -DArgument=Value ..` 调整 CMake 参数。

#### ENABLE_WERROR

默认情况下,**Nebula Graph** 使用 `-Werror` 选项将编译过程中的告警当成错误。如果在编译过程中遇到了类似情况,可以通过将 `ENABLE_WERROR` 设置为 `OFF` 来暂时忽略此类错误。
默认情况下,Nebula Graph 使用 `-Werror` 选项将编译过程中的告警当成错误。如果在编译过程中遇到了类似情况,可以通过将 `ENABLE_WERROR` 设置为 `OFF` 来暂时忽略此类错误。

#### ENABLE_TESTING

该选项允许用户开启或关闭单元测试的编译,默认开启。如果您只需要编译 **Nebula Graph** 服务模块,可以将该选项设置为 `OFF`。
该选项允许用户开启或关闭单元测试的编译,默认开启。如果您只需要编译 Nebula Graph 服务模块,可以将该选项设置为 `OFF`。

#### ENABLE_ASAN

该选项允许用户开启或关闭 AddressSanitizer(内存相关错误检测器),默认关闭。

#### CMAKE_BUILD_TYPE

**Nebula Graph** 支持以下几种编译类型:
Nebula Graph 支持以下几种编译类型:

* `Debug`,启用调试信息,不启用优化选项,为默认编译类型
* `Release`,启用优化选项,不启用调试信息
Expand All @@ -167,7 +167,7 @@ cd nebula/package

#### CMAKE_INSTALL_PREFIX

该选项用于指定执行 `make install` 命令时,**Nebula Graph** 的服务模块、配置文件以及工具集的安装路径,默认为 `/usr/local/nebula`。
该选项用于指定执行 `make install` 命令时,Nebula Graph 的服务模块、配置文件以及工具集的安装路径,默认为 `/usr/local/nebula`。

#### CMAKE_CXX_COMPILER

Expand All @@ -180,9 +180,9 @@ $ cmake -DCMAKE_C_COMPILER=/path/to/clang/bin/clang -DCMAKE_CXX_COMPILER=/path/t

#### ENABLE_CCACHE

`ccache` 可以加快编译过程,主要用于开发过程。如果系统中安装了 `ccache`,**Nebula Graph** 默认会自动启用该选项。
`ccache` 可以加快编译过程,主要用于开发过程。如果系统中安装了 `ccache`,Nebula Graph 默认会自动启用该选项。

但是,如果你想禁用 `ccache`,将该选项设置成 `OFF` _可能_ 是不够的。因为,在某些系统中,`ccache` 会_代理_ 当前编译器。此时,需要通过设置环境变量 `export CCACHE_DISABLE=true`,或者在 `~/.ccache/ccache.conf` 文件中添加 `disable=true`。后续 **Nebula Graph** 将隐藏这些细节。
但是,如果你想禁用 `ccache`,将该选项设置成 `OFF` _可能_ 是不够的。因为,在某些系统中,`ccache` 会_代理_ 当前编译器。此时,需要通过设置环境变量 `export CCACHE_DISABLE=true`,或者在 `~/.ccache/ccache.conf` 文件中添加 `disable=true`。后续 Nebula Graph 将隐藏这些细节。

另外,关于 `ccache` 的更多细节,请参考[官方文档](https://ccache.dev/manual/3.7.6.html)。

Expand All @@ -196,14 +196,14 @@ $ cmake -DCMAKE_C_COMPILER=/path/to/clang/bin/clang -DCMAKE_CXX_COMPILER=/path/t

### 手动安装 Third Party

在 configure/cmake 阶段,**Nebula Graph** 默认将预先编译好的 third party 下载到当前 build 目录。但是如果你想将其安装到其他路径(比如,安装到某个公共目录),你可以:
在 configure/cmake 阶段,Nebula Graph 默认将预先编译好的 third party 下载到当前 build 目录。但是如果你想将其安装到其他路径(比如,安装到某个公共目录),你可以:

```bash
# 安装 third party 至 /opt 需要 root 权限,可使用 --prefix 改变安装路径
$ ../third-party/install-third-party.sh --prefix=/opt/vesoft/third-party
```

如果不指定 `--prefix`,third party 的默认安装路径为 `/opt/vesoft/third-party`,且可为 **Nebula Graph** 的编译系统自动找到。否则,需使用上文所述的 `NEBULA_THIRDPARTY_ROOT` CMake 参数指定路径,或为该路径设置环境变量并导出。 **Nebula Graph** 查找并选择 third party 的优先级如下:
如果不指定 `--prefix`,third party 的默认安装路径为 `/opt/vesoft/third-party`,且可为 Nebula Graph 的编译系统自动找到。否则,需使用上文所述的 `NEBULA_THIRDPARTY_ROOT` CMake 参数指定路径,或为该路径设置环境变量并导出。 Nebula Graph 查找并选择 third party 的优先级如下:

1. CMake 变量 `NEBULA_THIRDPARTY_ROOT`
2. build 路径下的 `third-party/install`
Expand Down Expand Up @@ -255,7 +255,7 @@ Copyright (C) 2017 Free Software Foundation, Inc.

## 无网络编译

如果在编译源码时无法连接网络,则必须手动下载以上工具和依赖,包括 **Nebula Graph** 仓库中的 GCC 编译器,第三方库和 CMake。然后,将所有内容复制到你的机器上。以下是快速指南。详细信息请参考上述步骤。
如果在编译源码时无法连接网络,则必须手动下载以上工具和依赖,包括 Nebula Graph 仓库中的 GCC 编译器,第三方库和 CMake。然后,将所有内容复制到你的机器上。以下是快速指南。详细信息请参考上述步骤。

首先,需要有一台可以连接外网的主机,并下载以下文件:

Expand Down Expand Up @@ -297,17 +297,17 @@ $ export PATH=/opt/vesoft/toolset/cmake:$PATH
$ sudo bash vesoft-third-party-x86_64-libc-2.12-gcc-7.5.0-abi-11.sh
```

现在您就可以下载并编译 **Nebula Graph** 项目了。
现在您就可以下载并编译 Nebula Graph 项目了。

## 卸载

卸载前,请先停止服务。在 `make` 目录下使用 `make uninstall` 命令即可卸载 **Nebula Graph**。请注意卸载之后配置文件不会删除。
卸载前,请先停止服务。在 `make` 目录下使用 `make uninstall` 命令即可卸载 Nebula Graph。请注意卸载之后配置文件不会删除。

## FAQ

### `error: invalid argument type 'auto' to unary expression`

当使用 Clang 9.0 编译 **Nebula Graph** 时,会发生该错误:
当使用 Clang 9.0 编译 Nebula Graph 时,会发生该错误:

```bash
[ 5%] Building CXX object src/common/fs/CMakeFiles/fs_obj.dir/FileUtils.cpp.o
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ rpm -ivh --prefix=${your_dir} nebula-graph-${version}.rpm

## 卸载

卸载前,请先停止服务。如果使用 rpm 安装,使用 `rpm -qa | grep nebula` 命令搜索 `nebula`,然后把结果传给 rpm -e 同理即可卸载。使用 deb 安装则需通过 `dpkg` 卸载。请注意卸载之后配置文件不会删除。
卸载前,请先停止服务。如果使用 rpm 安装,使用 `rpm -qa | grep nebula` 命令搜索 `nebula`,然后把结果传给 rpm -e 即可卸载。使用 deb 安装则需通过 `dpkg` 卸载。请注意卸载之后配置文件不会删除。

```bash
# rpm
Expand Down