【问题标题】:How to create a fulltext index on array attributes?如何在数组属性上创建全文索引?
【发布时间】:2015-05-05 11:16:04
【问题描述】:

我想为数组属性创建全文索引,而无需冗余复制其所有字符串。我尝试为“attrib[*].string”定义一个索引,但这不起作用。我使用了错误的语法吗?如果不是,是否很难支持这样的索引场景?对于我的幼稚理解,除了创建索引时的读取功能之外,功能可能没有太大差异......至少我希望这样:-)

【问题讨论】:

    标签: full-text-indexing arangodb


    【解决方案1】:

    ArangoDB 2.5 及之前版本中的全文索引仅支持对每个全文索引的单个属性进行索引。在索引属性中包含非字符串值的文档将被忽略以进行索引。这意味着在创建索引或在文档中使用具有多个字符串值的数组时,指定多个属性名称都不起作用。

    我刚刚在 devel(即将发布的 2.6 版本)中添加了对全文功能的更改,这将允许索引对象值的直接子属性,前提是对象成员值是字符串。此外,如果数组值是字符串,现在支持索引数组值。

    因此,2.6 将支持以下内容:

     var c = db._create("example");
     c.ensureFulltextIndex("translations");
     c.insert({ translations: { en: "fox", de: "Fuchs", fr: "renard", ru: "лиса" } });
     c.insert({ translations: "Fox is the English translation of the German word Fuchs" });
     c.insert({ translations: [ "ArangoDB", "document", "database", "Foxx" ] });
    
     c.fulltext("translations", "лиса").toArray();       // returns only first document
     c.fulltext("translations", "Fox").toArray();        // returns first and second documents
     c.fulltext("translations", "prefix:Fox").toArray(); // returns all three documents
    

    这可能不完全是需要的(索引数组索引属性的每个数组成员的子属性),但应该更接近 2.5 中的可能。

    在 2.5 中,唯一的选择是在每个文档中创建一个单独的属性,将所有要索引的文本值作为连接字符串包含在内。这样,所有内容都将包含在单个文本属性中,这就是 2.5 全文索引可以处理的内容。

    【讨论】:

    • 对我来说,您的 2.6 增强功能将满足我通常需要的功能。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-20
    相关资源
    最近更新 更多