全文搜索

    在语句中,使用WHERE子句指定字符串的搜索条件。

    请确保已经部署全文索引。详情请参见部署全文索引和。

    使用全文索引前,请确认已经了解全文索引的使用限制

    1. SHOW FULLTEXT INDEXES;
    1. DROP FULLTEXT INDEX <index_name>;
    • PREFIX(schema_name.prop_name, prefix_string, row_limit, timeout)

    • WILDCARD(schema_name.prop_name, wildcard_string, row_limit, timeout)

    • REGEXP(schema_name.prop_name, regexp_string, row_limit, timeout)

      • fuzziness:可选项。允许匹配的最大编辑距离。默认值为AUTO。查看其他可选值和更多信息,请参见。

      • operator:可选项。解释文本的布尔逻辑。可选值为OR(默认)和and

    • row_limit:可选项。指定要返回的行数。默认值为100

    1. //创建图空间。
    2. nebula> CREATE SPACE basketballplayer (partition_num=3,replica_factor=1, vid_type=fixed_string(30));
    3. //登录文本搜索客户端。
    4. nebula> SIGN IN TEXT SERVICE (127.0.0.1:9200);
    5. //切换图空间。
    6. nebula> USE basketballplayer;
    7. //添加listener到Nebula Graph集群。
    8. nebula> ADD LISTENER ELASTICSEARCH 192.168.8.5:9789;
    9. //创建Tag。
    10. nebula> CREATE TAG player(name string, age int);
    11. //创建原生索引。
    12. nebula> CREATE TAG INDEX name ON player(name(20));
    13. //重建原生索引。
    14. nebula> REBUILD TAG INDEX;
    15. nebula> CREATE FULLTEXT TAG INDEX nebula_index_1 ON player(name);
    16. //重建全文索引。
    17. nebula> REBUILD FULLTEXT INDEX;
    18. //查看全文索引。
    19. nebula> SHOW FULLTEXT INDEXES;
    20. +------------------+-------------+-------------+--------+
    21. | Name | Schema Type | Schema Name | Fields |
    22. +------------------+-------------+-------------+--------+
    23. | "nebula_index_1" | "Tag" | "player" | "name" |
    24. +------------------+-------------+-------------+--------+
    25. //插入测试数据。
    26. nebula> INSERT VERTEX player(name, age) VALUES \
    27. "Russell Westbrook": ("Russell Westbrook", 30), \
    28. "Chris Paul": ("Chris Paul", 33),\
    29. "Boris Diaw": ("Boris Diaw", 36),\
    30. "David West": ("David West", 38),\
    31. "Danny Green": ("Danny Green", 31),\
    32. "Tim Duncan": ("Tim Duncan", 42),\
    33. "James Harden": ("James Harden", 29),\
    34. "Tony Parker": ("Tony Parker", 36),\
    35. "Aron Baynes": ("Aron Baynes", 32),\
    36. "Ben Simmons": ("Ben Simmons", 22),\
    37. "Blake Griffin": ("Blake Griffin", 30);
    38. //测试查询
    39. nebula> LOOKUP ON player WHERE PREFIX(player.name, "B");
    40. +-----------------+
    41. | _vid |
    42. +-----------------+
    43. | "Boris Diaw" |
    44. +-----------------+
    45. | "Ben Simmons" |
    46. +-----------------+
    47. | "Blake Griffin" |
    48. +-----------------+
    49. nebula> LOOKUP ON player WHERE WILDCARD(player.name, "*ri*") YIELD player.name, player.age;
    50. +-----------------+-----------------+-----+
    51. | "Chris Paul" | "Chris Paul" | 33 |
    52. +-----------------+-----------------+-----+
    53. | "Boris Diaw" | "Boris Diaw" | 36 |
    54. +-----------------+-----------------+-----+
    55. | "Blake Griffin" | "Blake Griffin" | 30 |
    56. +-----------------+-----------------+-----+
    57. nebula> LOOKUP ON player WHERE WILDCARD(player.name, "*ri*") | YIELD count(*);
    58. +----------+
    59. | count(*) |
    60. +----------+
    61. | 3 |
    62. +----------+
    63. nebula> LOOKUP ON player WHERE REGEXP(player.name, "R.*") YIELD player.name, player.age;
    64. +---------------------+---------------------+-----+
    65. | _vid | name | age |
    66. +---------------------+---------------------+-----+
    67. | "Russell Westbrook" | "Russell Westbrook" | 30 |
    68. +---------------------+---------------------+-----+
    69. nebula> LOOKUP ON player WHERE REGEXP(player.name, ".*");
    70. +---------------------+
    71. | _vid |
    72. +---------------------+
    73. | "Danny Green" |
    74. +---------------------+
    75. | "David West" |
    76. +---------------------+
    77. | "Russell Westbrook" |
    78. +---------------------+
    79. ...
    80. nebula> LOOKUP ON player WHERE FUZZY(player.name, "Tim Dunncan", AUTO, OR) YIELD player.name;
    81. +--------------+--------------+
    82. | _vid | name |
    83. +--------------+--------------+
    84. | "Tim Duncan" | "Tim Duncan" |
    85. +--------------+--------------+
    86. nebula> DROP FULLTEXT INDEX nebula_index_1;