【问题标题】:fulltext queries using prefix使用前缀的全文查询
【发布时间】:2017-03-31 21:22:51
【问题描述】:

我正在尝试使用 ArangoDB 对名称进行全文查询,并且我希望能够按首字母进行搜索,例如搜索“John J. Doe”或“J. Doe”都会返回 John James Doe。我设置了索引minLength: 1,并尝试使用prefix 标签进行搜索,例如"prefix:J,Doe"。不幸的是,这使得搜索速度非常慢(单次搜索超过 160 万条记录需要 5 秒)。这应该更快地工作还是它是 prefix: 长度为 1 的查询的预期行为?

【问题讨论】:

    标签: arangodb aql


    【解决方案1】:

    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 似乎是一个很好的折衷方案。 如果您需要某些功能,则必须在应用程序中准备一个特殊的搜索字段,以便为索引准备文本。

    【讨论】:

      猜你喜欢
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2018-12-11
      • 1970-01-01
      相关资源
      最近更新 更多