我试图使用ArangoDB对名称进行全文查询,我希望能够通过初始搜索,例如寻找" John J. Doe"或者" J. DOE"他们都会回归John James Doe。我设置了索引minLength: 1
,我尝试使用prefix
标记进行搜索,例如"prefix:J,Doe"
。不幸的是,这使得搜索速度非常慢(对于超过1.6M记录的单次搜索,则为5秒)。这应该更快,还是prefix:
长度为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似乎是一个很好的妥协。 如果您需要某些功能,则必须在应用程序中准备一个特殊的搜索字段,为索引准备文本。