ArangoDB全文索引性能
我有4842个文档,带有示例格式 {“ID”:“12345”,“NAME”:“NAME_value”,“KIND”:“KIND_value”,…,“Secondary”:{…},“Secondary”:{…},“Secondary”:{…}其中,“…”是每个对象的键值对的数量更多变化 在插入数据之前,我使用-db.collection.ensureFulltextIndex(“KIND”)将KIND索引为全文索引。而且,KIND只是一个单词字符串。没有空格 通过AQL执行了以下查询:ArangoDB全文索引性能,arangodb,full-text-indexing,Arangodb,Full Text Indexing,我有4842个文档,带有示例格式 {“ID”:“12345”,“NAME”:“NAME_value”,“KIND”:“KIND_value”,…,“Secondary”:{…},“Secondary”:{…},“Secondary”:{…}其中,“…”是每个对象的键值对的数量更多变化 在插入数据之前,我使用-db.collection.ensureFulltextIndex(“KIND”)将KIND索引为全文索引。而且,KIND只是一个单词字符串。没有空格 通过AQL执行了以下查询: 对于全文文
---更新Q2。要求在父字符串(仅为一个单词)中搜索子字符串。子字符串可以位于父字符串中的任何位置。(类似于“%text%”的SQL等价物)Q1:全文索引允许进行更复杂的查询。它在分词处拆分文本,并检查一个单词是否出现在较大的文本中。在您的示例中不需要所有这些特性。因此,它产生的开销比节省的要多 在您的示例中,最好创建一个跳过列表或散列索引并搜索相等项 问题2:最简单的形式是,全文查询只包含所需的单词。如果查询中给出了多个搜索词,则应使用逗号分隔。默认情况下,所有搜索词将与逻辑AND组合,并且仅返回包含所有搜索词的文档。可以通过在全文查询中提供额外的控制字符来更改此默认行为,这些字符是:
- +:逻辑与(交叉点)
- |:逻辑或(并集)
- -:否定(排除)
- “香蕉”:搜索包含“香蕉”的文档
- “香蕉,苹果”:搜索同时包含“香蕉”和“苹果”的文档
- “香蕉,|橙色”:搜索包含“香蕉”或“橙色”或两者的文档
- “香蕉-苹果”:搜索包含“香蕉”但不包含“苹果”的文档
- “complete:banana”:搜索包含确切单词“banana”的文档
- “prefix:head”:搜索以前缀“head”开头的单词的文档
- “prefix:head,banana”:对文档的搜索包含以前缀“head”开头的单词,也包含确切的单词“banana”
完全匹配和前缀搜索选项可以与逻辑运算符结合使用。我已经在笔记本上尝试了这些查询。使用arangosh以40ms/56ms的速度运行。您使用的是哪种驱动程序?谢谢您的及时回复。这意味着假设我有一个随机字符串“DeploymentFileName”,并且我想对“%File%”执行类似SQL的查询。有什么机制可以让我做到这一点吗?换句话说,肯定的“prefix:”将帮助我匹配搜索字符串开头的子字符串。如果子串位于搜索字符串的中间呢?@ Pravavajy:刚刚遇到这个问题。全文索引的实现仅支持全文和前缀匹配。AQL中的like运算符和like()函数可以进行类似
%File%
的搜索,但不能使用任何索引。事实上,它需要一种完全不同的索引类型来加速这种类型的搜索(我相信)。如果在调用LIKE()之前可以过滤掉索引支持的许多文档,那么性能可能是可以接受的。