blob: 5cb400b3077b633f30e1c8f16c143f1eb7ebbed6 [file] [log] [blame]
<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Learning Resources | Apache Lucene.NET 4.8.0 </title>
<meta name="viewport" content="width=device-width">
<meta name="title" content="Learning Resources | Apache Lucene.NET 4.8.0 ">
<meta name="generator" content="docfx 2.58.0.0">
<link rel="shortcut icon" href="../logo/favicon.ico">
<link rel="stylesheet" href="../styles/docfx.vendor.css">
<link rel="stylesheet" href="../styles/docfx.css">
<link rel="stylesheet" href="../styles/main.css">
<meta property="docfx:navrel" content="../toc.html">
<meta property="docfx:tocrel" content="toc.html">
<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Lato:400,700%7CMerriweather%7CRoboto+Mono">
<link rel="stylesheet" href="/styles/site.css">
</head>
<body data-spy="scroll" data-target="#affix" data-offset="120">
<span id="forkongithub"><a href="https://github.com/apache/lucenenet" target="_blank">Fork me on GitHub</a></span>
<div id="wrapper">
<header>
<nav id="autocollapse" class="navbar ng-scope" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="../index.html">
<img id="logo" class="svg" src="../logo/lucene-net-color.png" alt="">
</a>
</div>
<div class="collapse navbar-collapse" id="navbar">
<form class="navbar-form navbar-right" role="search" id="search">
<div class="form-group">
<input type="text" class="form-control" id="search-query" placeholder="Search" autocomplete="off">
</div>
</form>
</div>
</div>
</nav>
<div class="subnav navbar navbar-default">
<div class="container hide-when-search" id="breadcrumb">
<ul class="breadcrumb">
<li></li>
</ul>
</div>
</div>
</header>
<div role="main" class="container body-content hide-when-search">
<div class="sidenav hide-when-search">
<a class="btn toc-toggle collapse" data-toggle="collapse" href="#sidetoggle" aria-expanded="false" aria-controls="sidetoggle">Show / Hide Table of Contents</a>
<div class="sidetoggle collapse" id="sidetoggle">
<div id="sidetoc"></div>
</div>
</div>
<div class="article row grid-right">
<div class="col-md-10">
<article class="content wrap" id="_content" data-uid="quick-start/learning-resources">
<h1 id="learning-resources">Learning Resources</h1>
<p>--</p>
<h2 id="lucenenet-documentation">Lucene.NET Documentation</h2>
<p>Lucene.NET has fairly extensive documentation that can be found in the <a class="xref" href="../docs.html">Lucene.NET Documentation</a> section of the website. On that page you will find links to the documentation for various release versions. Click on the documentation link for the version of interest and you will see that it leads to a wealth of documentation. The project is organized as a collection of sub-projects, each one corresponding ultimately to a <a href="https://www.nuget.org/packages/Lucene.Net/absoluteLatest">nuget package</a>. Those projects each have documentation that typically starts with some higher level docs that then link into API or Object/Method level documentations.</p>
<p>Much of this documentation is compiled from the inline documentation comments from the source code and it originated from the Java Lucene code base. In addition to porting the Lucene code from Java to C# we are also working to convert the docs from Java to C# examples as well. Some of this work is completed and some of it remains.</p>
<h2 id="java-lucene-documentation">Java Lucene Documentation</h2>
<p>Apache <a href="https://github.com/apache/lucenenet">Lucene.NET 4.8</a> is a port of Java Apache <a href="https://github.com/apache/lucene/tree/releases/lucene-solr%2F4.8.0">Lucene 4.8</a>. In general we try to do a line by line port when possible. So if you did a comparison of the code for a file in the one <a href="https://github.com/apache/lucenenet">GitHub repo</a> against the corresponding file in the <a href="https://github.com/apache/lucene/tree/releases/lucene-solr%2F4.8.0">other repo</a> the two should in most cases look extremely similar. However, even for files that port fairly easily you will notice that in the conversion process we &quot;.NETify&quot; the code. That is we make stylistic changes to confirm to the .NET way of writing code.</p>
<p>So for example, in Java it's common for method names start with a lower case letter, but of course in .NET we expect method names to start with an upper case letter. So we change the method names to confirm to .NET conventions when porting the code. Likewise, C# has support for properties with getters and setters but Java does not. So sometimes when converting the Java to C# a get method that is behaving like a property accessor will be turned into a C# property.</p>
<p>But other then that, you will find that the documentation for Java Lucene 4.X can be very useful to your learning of Lucene.NET 4.8. Just keep in mind the &quot;.NETifing&quot; that we do to the code and it's pretty simple to translate in your head Java examples into the C# equivalent.</p>
<h2 id="from-the-community">From the Community</h2>
<h3 id="searching-lucenenet-issues">Searching Lucene.NET Issues</h3>
<p>Another source of information about Lucene.NET is current and past GitHub issues for our repo. By default when you go to the GitHub issues page it defaults the search box criteria to open issues only but you can easily remove the <code>is:open</code> from the search box to search all issues for the repo. Or you can use this link to <a href="https://github.com/apache/lucenenet/issues?q=is%3Aissue+is%3Aopen+">search all issues</a> in our repo.</p>
<p><img src="https://lucenenet.apache.org/images/quick-start/learning-resources/search-lucenenet-issues.gif" alt="Search Lucene.NET Issues"></p>
<h3 id="searching-java-lucene-issues">Searching Java Lucene Issues</h3>
<p>In general, the Java Lucene Issues database can be a good place to learn about about how features were developed, the historical issues related to features, and how issues were resolved. One thing that can be helpful to know is that each major Lucene feature is assigned a Lucene issue number and it's often referenced using this format: LUCENE-<issue number=""> for example LUCENE-6001.<p>
<p>Java Lucene has a GitHub mirror of their repo, but they don't track issues there. If you want to search issues for the Java Lucene project you need to search on the <a href="https://issues.apache.org/jira/projects/LUCENE/issues/">apache.org issues website</a>.</p>
<p>By default that page shows only open issues but you can click the &quot;View all issues and filters&quot; link in the upper right corner of the screen (see arrow below) to see and search all issues.</p>
<p><img src="https://lucenenet.apache.org/images/quick-start/learning-resources/search-lucene-issues.gif" alt="Search Lucene.NET Issues"></p>
<h3 id="apache-lucenenet-email-archives">Apache Lucene.NET Email Archives</h3>
<p>You can search the Lucene.NET dev email archives for past emails that may contain information of a topic you'd like to dig into. This can be especially useful, for example, to research why we may have chosen a specific porting approach for some code that wasn't so easy to port. <a href="https://lists.apache.org/list.html?dev@lucenenet.apache.org">https://lists.apache.org/list.html?dev@lucenenet.apache.org</a></p>
<h3 id="java-apache-lucene-email-archives">Java Apache Lucene Email Archives</h3>
<p>You can search the Java Lucene dev email archives for past emails as well. If you the feature or patch you are trying to learn about has an issue number, searching the email archives for it formatted like LUCENE-<issue number=""> for example LUCENE-6001 can return some really great discussion about the rational that went into defining how that feature works. <a href="https://lists.apache.org/list.html?dev@lucene.apache.org">https://lists.apache.org/list.html?dev@lucene.apache.org</a><p>
<h3 id="stackoverflow">StackOverflow</h3>
<p>StackOverflow is a popular programmer question and answer website. Both Lucene and Lucene.NET both have tags on StackOverflow.</p>
<p>One great way to learn about Lucene.NET is to read the <a href="https://stackoverflow.com/questions/tagged/lucene.net?sort=MostVotes">most upvoted Lucene.NET questions</a> StackOverflow is also a great place to ask questions about Lucene.NET&gt;</p>
<p>Additionally you can read the <a href="https://stackoverflow.com/questions/tagged/lucene.net?sort=MostVotes">most upvoted Lucene questions</a> on StackOverflow. Most of these questions and answers will apply to Lucene 4.8 but be aware that some may not if they are for related to features that came after version 4.8.</p>
<div class="TIP">
<h5>Tip</h5>
<p>StackOverflow is a great place to post questions about Lucene.NET. When you post questions there it's important to tag the question with both a <code>lucene.net</code> tag and a <code>lucene</code> tag if the question doesn't specifically pertain to the .NET platform. Having both tags will often result in a faster response.</p>
</div>
<h3 id="community-articles">Community Articles</h3>
<p>In the contributing section of this website we have a list of several community articles about Lucene.NET. You can fine them on the <a class="xref" href="../contributing/community-links.html">Community Links</a> page.</p>
<h3 id="books">Books</h3>
<p><strong><a href="https://www.amazon.com/Instant-Lucene-NET-Michael-Heydt/dp/1782165940">Instant Lucene.NET</a></strong> - Currently this is the only book specifically about Lucene.NET. Based on the reviews it's primarily targeted towards those just getting started with Lucene.NET.</p>
<p><strong><a href="https://www.amazon.com/Lucene-4-Cookbook-Edwood-Ng/dp/1782162283/">Lucene 4 Cookbook</a></strong> - The nice thing about this book is that it is specifically written for Lucene 4, so the examples are all from the era of Lucene.NET 4.X and will work great on Lucene.NET 4.8 While the code examples are in Java it's easy to convert them to C#. ie. change method names from starting with a lower case letter to an upper case letter. Change some getter methods to properties instead.</p>
<p><strong><a href="https://www.amazon.com/Lucene-Action-Second-Covers-Apache/dp/1933988177">Lucene In Action 2nd Edition</a></strong> - This is a great book written by a core Lucene committer that dives deep into the inner workings of Lucene. It's packed full of great information about Lucene. It is written for Java Lucene rather then Lucene.NET but as I have already mentioned, it's generally not a big deal to translate Lucene code samples from Java to c#. That said, the one downside to this book is that it was written during the Lucene 3.0 era. The largest changes in the history of Lucene came in version 4.0. So some of the information in this book, and some of the code samples, are outdated. But much of the information, especially at the conceptual level, hold true and is very valuable for understanding Lucene.</p>
<p><strong><a href="https://nlp.stanford.edu/IR-book/information-retrieval-book.html">Introduction to Information Retrieval</a></strong> - This book isn't written about Lucene per se but is a great resource on the subject of information retrieval which is the knowledgebase that underpins search software like Lucene. This book was written by two professors at Stanford University and one from the University of Stuttgart. The introduction in the book states &quot;Introduction to Information Retrieval is the first textbook with a coherent treatment of classical and web information retrieval, including web search and the related areas of text classification and text clustering. Written from a computer science perspective, it gives and up-to-date treatment of all aspects of the design and implementation of systems for gathering, indexing and searching documents...&quot; The content is <a href="https://nlp.stanford.edu/IR-book/information-retrieval-book.html">available online for free</a> or a <a href="https://www.amazon.com/Introduction-Information-Retrieval-Christopher-Manning/dp/0521865719">hard cover version</a> is available for purchase.</p>
</issue></issue></article>
</div>
<div class="hidden-sm col-md-2" role="complementary">
<div class="sideaffix">
<div class="contribution">
<ul class="nav">
<li>
<a href="https://github.com/apache/lucenenet/blob/master/websites/site/quick-start/learning-resources.md/#L1" class="contribution-link">Improve this Doc</a>
</li>
</ul>
</div>
<nav class="bs-docs-sidebar hidden-print hidden-xs hidden-sm affix" id="affix">
<h5>In This Article</h5>
<div></div>
</nav>
</div>
</div>
</div>
</div>
<footer>
<div class="grad-bottom"></div>
<div class="footer">
<div class="container">
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
Copyright &copy; 2022 The Apache Software Foundation, Licensed under the <a href='http://www.apache.org/licenses/LICENSE-2.0' target='_blank'>Apache License, Version 2.0</a><br> <small>Apache Lucene.Net, Lucene.Net, Apache, the Apache feather logo, and the Apache Lucene.Net project logo are trademarks of The Apache Software Foundation. <br>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</small>
</div>
</div>
</footer>
</div>
<script type="text/javascript" src="../styles/docfx.vendor.js"></script>
<script type="text/javascript" src="../styles/docfx.js"></script>
<script type="text/javascript" src="../styles/main.js"></script>
</body>
</html>