Lucene面试问题

5

我正在面试一个开发应用程序的候选人,该应用程序在很大程度上依赖于Lucene。除了我通常问的问题外,我希望能够问一两个特定于Lucene的问题,以便大致了解他们对该库的熟悉程度。问题是我自己没有Lucene的经验。有什么建议吗?


1
建议检查Lucene/Solr邮件列表,以查看候选人是否是定期贡献者。此外,可以尝试提出正在进行的编程挑战,以了解其编程能力。 - Mikos
3
很好的想法,我会像其他人一样,在寻找工作时向每个开源项目提交补丁。诀窍在于这样做而不是真正工作 :) Lucene有那么多漏洞吗,以至于必须通过贡献来使用它吗? - IAdapter
3个回答

15

我会问的一些问题:

  • Lucene的数据结构是什么?(倒排索引)
  • Lucene如何计算文档的相关性?(向量空间模型、布尔模型)
  • 什么是段?(索引的一部分)
  • 文本如何被索引?(分析器、分词器)
  • 什么是文档?(字段的集合)
  • Lucene查询语法是什么样的?(布尔查询、提升、模糊搜索)
  • 它与关系数据库有何不同,何时应选择其中之一?

1
谢谢提供这个列表。我一定会问一些关于倒排索引的问题,因为这是我已经理解的概念。 - dbyrne

5
如果候选人有很长的Java开发历史,熟悉Lucene API可能并不那么重要。对于不熟悉Lucene的人来说,可能需要更长时间才能开始,但从长远来看,我会更喜欢非常有经验的Java开发人员,而不是有一定经验的Lucene开发人员。事实上,如果他们的作品集令人印象深刻,我可能更喜欢非常有经验的非Java程序员。

完全同意。Lucene部分的面试不会是最重要的因素。然而,这些候选人是根据他们在Lucene方面的经验而被选择的(不是由我选择的)。如果完全不涉及这个话题,那就有失职责了。 - dbyrne
同意你的“长远来看”的观点,但这是一份短期合同。我们没有太多时间让他们适应。 - dbyrne

5
这是一项棘手的任务。你正在寻找比你更了解Lucene的人,因此,你不能成为候选人知识水平的可靠评判者(尽管你至少应该能够剔除那些明显不如你懂的人)。
我的建议是要求候选人向你解释一些让你感到困惑的Lucene方面。面试结束后,你可以查阅相关资料来判断答案是否合理。这样做还有一个额外的好处,即测试他们沟通复杂思想的能力。(如果答案是“我不知道”,那么你应该把它看作是一个好兆头:愿意承认自己无知的人比那些不愿承认自己无知的人值得更多。)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接