﻿<!DOCTYPE html>
<!--[if IE]><![endif]-->
<html>
  
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <title>Lucene.Net | Apache Lucene.NET 4.8.0-beta00008 Documentation </title>
    <meta name="viewport" content="width=device-width">
    <meta name="title" content="Lucene.Net | Apache Lucene.NET 4.8.0-beta00008 Documentation ">
    <meta name="generator" content="docfx 2.50.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">
    
    <meta property="docfx:rel" content="../../">
    
  </head>
  <body data-spy="scroll" data-target="#affix" data-offset="120">
    <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 class="container body-content">
        
        <div id="search-results">
          <div class="search-list"></div>
          <div class="sr-items">
            <p><i class="glyphicon glyphicon-refresh index-loading"></i></p>
          </div>
          <ul id="pagination"></ul>
        </div>
      </div>
      <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="Lucene.Net">

    <h1 id="" data-uid="Lucene.Net" class="text-break">Lucene.Net</h1>

<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
 contributor license agreements.  See the NOTICE file distributed with
 this work for additional information regarding copyright ownership.
 The ASF licenses this file to You under the Apache License, Version 2.0
 (the "License"); you may not use this file except in compliance with
 the License.  You may obtain a copy of the License at

     http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
-->
<p>Apache Lucene is a high-performance, full-featured text search engine library. Here&#39;s a simple example how to use Lucene for indexing and searching (using JUnit to check if the results are what we expect):</p>
<!-- =   Java2Html Converter 5.0 [2006-03-04] by Markus Gebhard  markus@jave.de   = -->
<pre><code>    Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_CURRENT);

// Store the index in memory:
    Directory directory = new RAMDirectory();
    // To store an index on disk, use this instead:
    //Directory directory = FSDirectory.open(&quot;/tmp/testindex&quot;);
    IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_CURRENT, analyzer);
    IndexWriter iwriter = new IndexWriter(directory, config);
    Document doc = new Document();
    String text = &quot;This is the text to be indexed.&quot;;
    doc.add(new Field(&quot;fieldname&quot;, text, TextField.TYPE_STORED));
    iwriter.addDocument(doc);
    iwriter.close();

    // Now search the index:
    DirectoryReader ireader = DirectoryReader.open(directory);
    IndexSearcher isearcher = new IndexSearcher(ireader);
    // Parse a simple query that searches for &quot;text&quot;:
    QueryParser parser = new QueryParser(Version.LUCENE_CURRENT, &quot;fieldname&quot;, analyzer);
    Query query = parser.parse(&quot;text&quot;);
    ScoreDoc[] hits = isearcher.search(query, null, 1000).scoreDocs;
    assertEquals(1, hits.length);
    // Iterate through the results:
    for (int i = 0; i &lt; hits.length;=&quot;&quot; i++)=&quot;&quot; {=&quot;&quot; document=&quot;&quot; hitdoc=&quot;isearcher.doc(hits[i].doc);&quot; assertequals(&quot;this=&quot;&quot; is=&quot;&quot; the=&quot;&quot; text=&quot;&quot; to=&quot;&quot; be=&quot;&quot; indexed.&quot;,=&quot;&quot; hitdoc.get(&quot;fieldname&quot;));=&quot;&quot; }=&quot;&quot; ireader.close();=&quot;&quot;&gt;
</code></pre><p>The Lucene API is divided into several packages:</p>
<ul>
<li><p><strong><a class="xref" href="../Lucene.Net.TestFramework/Lucene.Net.Analysis.html">Lucene.Net.Analysis</a></strong>
defines an abstract <a class="xref" href="Lucene.Net.Analysis.Analyzer.html">Analyzer</a>
API for converting text from a {@link java.io.Reader}
into a <a class="xref" href="Lucene.Net.Analysis.TokenStream.html">TokenStream</a>,
an enumeration of token <a class="xref" href="Lucene.Net.Util.Attribute.html">Attribute</a>s. 
A TokenStream can be composed by applying <a class="xref" href="Lucene.Net.Analysis.TokenFilter.html">TokenFilter</a>s
to the output of a <a class="xref" href="Lucene.Net.Analysis.Tokenizer.html">Tokenizer</a>. 
Tokenizers and TokenFilters are strung together and applied with an <a class="xref" href="Lucene.Net.Analysis.Analyzer.html">Analyzer</a>. 
<a href="../analyzers-common/overview-summary.html">analyzers-common</a> provides a number of Analyzer implementations, including 
<a href="../analyzers-common/org/apache/lucene/analysis/core/StopAnalyzer.html">StopAnalyzer</a>
and the grammar-based <a href="../analyzers-common/org/apache/lucene/analysis/standard/StandardAnalyzer.html">StandardAnalyzer</a>.</p>
</li>
<li><p><strong><a class="xref" href="../Lucene.Net.TestFramework/Lucene.Net.Codecs.html">Lucene.Net.Codecs</a></strong>
provides an abstraction over the encoding and decoding of the inverted index structure,
as well as different implementations that can be chosen depending upon application needs.</p>
</li>
<li><p><strong><a class="xref" href="../Lucene.Net.Facet/Lucene.Net.Documents.html">Lucene.Net.Documents</a></strong>
provides a simple <a class="xref" href="Lucene.Net.Documents.Document.html">Document</a>
class.  A Document is simply a set of named <a class="xref" href="Lucene.Net.Documents.Field.html">Field</a>s,
whose values may be strings or instances of {@link java.io.Reader}.</p>
</li>
<li><p><strong><a class="xref" href="../Lucene.Net.Misc/Lucene.Net.Index.html">Lucene.Net.Index</a></strong>
provides two primary classes: <a class="xref" href="Lucene.Net.Index.IndexWriter.html">IndexWriter</a>,
which creates and adds documents to indices; and <a class="xref" href="Lucene.Net.Index.IndexReader.html">IndexReader</a>,
which accesses the data in the index.</p>
</li>
<li><p><strong><a class="xref" href="../Lucene.Net.TestFramework/Lucene.Net.Search.html">Lucene.Net.Search</a></strong>
provides data structures to represent queries (ie <a class="xref" href="Lucene.Net.Search.TermQuery.html">TermQuery</a>
for individual words, <a class="xref" href="Lucene.Net.Search.PhraseQuery.html">PhraseQuery</a> 
for phrases, and <a class="xref" href="Lucene.Net.Search.BooleanQuery.html">BooleanQuery</a> 
for boolean combinations of queries) and the <a class="xref" href="Lucene.Net.Search.IndexSearcher.html">IndexSearcher</a>
which turns queries into <a class="xref" href="Lucene.Net.Search.TopDocs.html">TopDocs</a>.
A number of <a href="../queryparser/overview-summary.html">QueryParser</a>s are provided for producing
query structures from strings or xml.</p>
</li>
<li><p><strong><a class="xref" href="../Lucene.Net.TestFramework/Lucene.Net.Store.html">Lucene.Net.Store</a></strong>
defines an abstract class for storing persistent data, the <a class="xref" href="Lucene.Net.Store.Directory.html">Directory</a>,
which is a collection of named files written by an <a class="xref" href="Lucene.Net.Store.IndexOutput.html">IndexOutput</a>
and read by an <a class="xref" href="Lucene.Net.Store.IndexInput.html">IndexInput</a>. 
Multiple implementations are provided, including <a class="xref" href="Lucene.Net.Store.FSDirectory.html">FSDirectory</a>,
which uses a file system directory to store files, and <a class="xref" href="Lucene.Net.Store.RAMDirectory.html">RAMDirectory</a>
which implements files as memory-resident data structures.</p>
</li>
<li><p><strong><a class="xref" href="../Lucene.Net.Benchmarks/Lucene.Net.Util.html">Lucene.Net.Util</a></strong>
contains a few handy data structures and util classes, ie <a class="xref" href="Lucene.Net.Util.OpenBitSet.html">OpenBitSet</a>
and <a href="xref:Lucene.Net.Util.PriorityQueue">PriorityQueue</a>.</p>
</li>
</ul>
<p>To use Lucene, an application should:</p>
<ol>
<li><p>Create <a class="xref" href="Lucene.Net.Documents.Document.html">Document</a>s by
adding
<a class="xref" href="Lucene.Net.Documents.Field.html">Field</a>s;</p>
</li>
<li><p>Create an <a class="xref" href="Lucene.Net.Index.IndexWriter.html">IndexWriter</a>
and add documents to it with <a class="xref" href="Lucene.Net.Index.IndexWriter.html#methods">AddDocument</a>;</p>
</li>
<li><p>Call <a href="../queryparser/org/apache/lucene/queryparser/classic/QueryParserBase.html#parse(java.lang.String)">QueryParser.parse()</a>
to build a query from a string; and</p>
</li>
<li><p>Create an <a class="xref" href="Lucene.Net.Search.IndexSearcher.html">IndexSearcher</a>
and pass the query to its <a class="xref" href="Lucene.Net.Search.IndexSearcher.html#methods">Search</a>
method.</p>
</li>
</ol>
<p>Some simple examples of code which does this are:</p>
<ul>
<li><p><a href="../demo/src-html/org/apache/lucene/demo/IndexFiles.html">IndexFiles.java</a> creates an
index for all the files contained in a directory.</p>
</li>
<li><p><a href="../demo/src-html/org/apache/lucene/demo/SearchFiles.html">SearchFiles.java</a> prompts for
queries and searches an index.</p>
</li>
</ul>
</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/docs/4.8.0-beta00008/src/Lucene.Net/overview.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">
              <!-- <p><a class="back-to-top" href="#top">Back to top</a><p> -->
              </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 © 2020 Licensed to the Apache Software Foundation (ASF)
            
          </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>
