检验/ Lucene教程

时间:2012-09-26 03:05:08

标签: .net search lucene lucene.net

我感兴趣的是Examine在独立桌面应用中构建搜索以搜索数据库表以及office / .pdf文件

这看起来像是Lucene / check

的绝佳场景

然而,文档很少,虽然我有很多SQL全文搜索的经验,但Lucene完全是一个不同的野兽,因此寻找关于如何/从哪里开始的帮助/指示

是的,我做了谷歌搜索,但没有找到任何资源,因为这些术语相当常见(lucene考试教程等)

2 个答案:

答案 0 :(得分:3)

首先要知道的是Lucene.NET是Lucene的逐行端口。只有它的一小部分是特定于.NET的,所以你会发现Java Lucene的大部分内容也适用于.NET版本。仅这一点就足以讨论如何将Java项目移植到.NET。实际上,经过多年的孵化,该项目刚刚毕业,成为一个完整的Apache项目。

现在,我同意Vedran的观点,Lucene in Action书是一个真正的享受,不仅是为了加快速度(上帝知道,Lucene是快速的),而且还要进入血腥的细节,帮助您解决问题。

如果您想从在线资料开始,this intro似乎可以帮助您。它已经差不多10年了,但从快速浏览一下,我会说它通常仍然存在。它解决了搜索(索引/查询)的两个方面,同时使用实际的Java代码进行演示,这些代码应该可以轻松移植到C#。

简而言之,这些是亮点

  1. 要写入索引,请使用 IndexWriter
  2. 要查询索引,请在 IndexSearcher
  3. 上发布查询
  4. 编写者使用 Analyzer (默认为StandardAnalyzer)来定义文本的存储和/或索引方式
  5. 要创建查询,您可以使用 QueryParser (也需要分析器),或自己构建查询对象。
  6. 使用此信息,您可以设置一个最小的工作示例。

    分析仪

    下一步是深入了解令牌化。不同的分析仪进行不同的标记化。它们允许您忽略短字,以非字母数字字符分割或进行词干(SnowballAnalyzer)。了解哪些分析仪可用并选择合适的分析仪对于使Lucene适合您的问题至关重要。

    查询

    可以查询索引数据,我会说这是一种灵活的方式,但有其自身的局限性。由于Lucene的性质,诸如否定,排序和范围之类的东西会让你头疼。

    你必须意识到的一件事是,Lucene实际上只不过是一个你可以查找的超高效词典。这就解释了为什么否定是特殊的。您无法搜索缺少某些内容,但可以搜索“MyField:false”。搜索1到3之间的数字,通常会创建一个查询1,2和3的查询。在处理日期时,您必须确保它们以可排序的方式编入索引(例如20121005)

    社区

    如果您遇到问题:Lucene.NET newsgroup已显示出非常有用且反应灵敏。

    SOLR.NET

    你可能遇到一些限制,比如需要分面。 SOLR.NET建立在Lucene.NET之上,解决了一些需要你不遗余力的事情。我从来没有真正使用它。

    检查

    我也没有使用Examine的经验,但从我很快看到的情况来看,它只是减轻了手动查询的负担。

答案 1 :(得分:1)

我曾经需要使用CLucene,它是Lucene API的C ++实现。在我遇到Lucene in Action书之前,事实证明这是一项非常艰巨的任务。尽管样本都是Java,并且API有一些差异,但本书非常清楚地解释了Lucene中的概念,所以我只是使用了这些知识并在CLucene中使用它。这本书长约470页,但你可以通过前三章来完成。

我知道这不是Lucene / Examine教程的建议,但它真的值得一试,因为Examine只是Lucene的一个简单包装器。一旦得到概念,检查本身就应该变得明显。