【问题标题】:Denormalizing relational data for lucene/solr非规范化 lucene/solr 的关系数据
【发布时间】:2011-03-08 22:06:42
【问题描述】:

我有一个关于使用 apache solr/lucene 的架构问题。

我正在构建一个用于搜索 CV 数据库的 solr 索引。基本上每个简历都会有一些字段,例如:

工资率、地址、头衔

这些字段是直截了当的。我需要建议的领域是技能和工作经历。 对于技能,有人可能会添加如下条目:C# - 5 年,Java - 9 年

所以基本上有 N 个技能,每个技能都有一个字符串名称和一个整数年数。 我在想我可以使用动态字段 *_skill,并可能像这样添加它们:

1_skill:C#,2_skill:Java

但是我怎样才能索引这些年的经验呢?然后我会添加一个动态字段,例如:

1_skill_years:5、2_skill_years:9

以前有没有人做过类似的事情? 任何帮助非常感谢?

问候

【问题讨论】:

    标签: solr lucene


    【解决方案1】:

    您可以使用多值字段来代替动态字段。您确实知道同一字段可以存在多个值。因此类似于

    <Skill> Java
    <Skill> Solr
    

    等等

    【讨论】:

    • 是的,我熟悉 MVF,如果它只是技能的名称,那将是完美的,但问题是我如何包含经验年数。即,如果我要搜索具有 5 年经验的 Java,则需要在 2 个不同的领域中捕获它。最终,我希望能够对某人拥有技能的年数进行分面和排序。
    • @mickdelaney,你有什么方法可以解决你的年问题吗?
    【解决方案2】:

    多值字段保持顺序,因此您可以拥有一个用于技能的多值字段和另一个用于多年经验的字段。当您回读它们时,只需按它们的顺序关联它们。

    注意是否有 null 或空值。您必须使用特殊标记对其进行编码,因为空字符串或空值不会被索引,这将改变排序。

    更新
    不幸的是,在 Solr 中不可能按多值字段排序。有关说明,请参阅此链接: http://lucene.472066.n3.nabble.com/performance-sorting-multivalued-field-td905943.html

    【讨论】:

    • 我将如何根据另一个字段中的值对查询进行排序。即 java 5 年经验 if Skill: java (index 2) Skill_years: 5 (index 2) 当它们像这样存储时,我可以对这些值进行排序吗?
    • 不,Solr 不能对多值字段进行排序。
    猜你喜欢
    • 2020-05-21
    • 2012-09-19
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 2016-03-21
    • 2018-02-07
    • 2016-11-18
    • 2013-09-01
    相关资源
    最近更新 更多