使用前缀的全文查询

时间:2017-01-25 22:14:27

标签: arangodb aql

我试图使用ArangoDB对名称进行全文查询,我希望能够通过初始搜索,例如寻找" John J. Doe"或者" J. DOE"他们都会回归John James Doe。我设置了索引minLength: 1,我尝试使用prefix标记进行搜索,例如"prefix:J,Doe"。不幸的是,这使得搜索速度非常慢(对于超过1.6M记录的单次搜索,则为5秒)。这应该更快,还是prefix:长度为1的查询的预期行为?

1 个答案:

答案 0 :(得分:0)

ArangoDB利用ICU标记生成器在其边界上分割单词。 您可以使用SYS_SPLIT_WORDS_ICU命令在arangosh中进行其工作:

SYS_SPLIT_WORDS_ICU()
usage: SplitWordlist(<value>, minLength, [<maxLength>, [<lowerCase>]])

因此,对于您的情况,您可以尝试:

SYS_SPLIT_WORDS_ICU('John J. Doe', 1)
[ 
  "John", 
  " ", 
  "J", 
  ".", 
  " ", 
  "Doe" 
]

这可能是高CPU利用率的原因。最小长度3似乎是一个很好的妥协。 如果您需要某些功能,则必须在应用程序中准备一个特殊的搜索字段,为索引准备文本。