<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.9">
<meta name="Forrest-skin-name" content="lucene">
<title>Solr Mailing Lists</title>
<link type="text/css" href="skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="skin/print.css" rel="stylesheet">
<link type="text/css" href="skin/profile.css" rel="stylesheet">
<script src="skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="skin/fontsize.js" language="javascript" type="text/javascript"></script>
<link rel="shortcut icon" href="images/favicon.ico">
</head>
<body onload="init()">
<script type="text/javascript">ndeSetTextSize();</script>
<div id="top">
<!--+
    |breadtrail
    +-->
<div class="breadtrail">
<a href="http://www.apache.org/">apache</a> &gt; <a href="http://lucene.apache.org/">lucene</a><script src="skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
</div>
<!--+
    |header
    +-->
<div class="header">
<!--+
    |start group logo
    +-->
<div class="grouplogo">
<a href="http://lucene.apache.org/"><img class="logoImage" alt="Lucene" src="images/lucene_green_150.gif" title="Apache Lucene"></a>
</div>
<!--+
    |end group logo
    +-->
<!--+
    |start Project Logo
    +-->
<div class="projectlogo">
<a href="http://lucene.apache.org/solr/"><img class="logoImage" alt="Solr" src="images/solr.jpg" title="Solr Description"></a>
</div>
<!--+
    |end Project Logo
    +-->
<!--+
    |start Search
    +-->
<div class="searchbox">
<form id="searchform" action="http://search.lucidimagination.com/p:solr" method="get" class="roundtopsmall">
<input onFocus="getBlank (this, 'Search the site with Solr');" size="25" name="q" id="query" type="text" value="Search the site with Solr">&nbsp; 
                      <input onclick="selectProvider(this.form)" name="Search" value="Search" type="submit">
                      @
                      <select id="searchProvider" name="searchProvider"><option value="any">select provider</option><option value="lucid">Lucid Find</option><option value="sl">Search-Lucene</option></select>
</form>
</div>
<!--+
    |end search
    +-->
<!--+
    |start Tabs
    +-->
<ul id="tabs">
<li class="current">
<a class="selected" href="index.html">Main</a>
</li>
<li>
<a class="unselected" href="http://wiki.apache.org/solr/FrontPage">Wiki</a>
</li>
</ul>
<!--+
    |end Tabs
    +-->
</div>
</div>
<div id="main">
<div id="publishedStrip">
<!--+
    |start Subtabs
    +-->
<div id="level2tabs"></div>
<!--+
    |end Endtabs
    +-->
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<!--+
    |breadtrail
    +-->
<div class="breadtrail">

             &nbsp;
           </div>
<!--+
    |start Menu, mainarea
    +-->
<!--+
    |start Menu
    +-->
<div id="menu">
<div onclick="SwitchMenu('menu_1.1', 'skin/')" id="menu_1.1Title" class="menutitle">About</div>
<div id="menu_1.1" class="menuitemgroup">
<div class="menuitem">
<a href="index.html" title="Welcome to Solr">Welcome</a>
</div>
<div class="menuitem">
<a href="http://lucene.apache.org/java/docs/whoweare.html" title="Lucene/Solr Committers">Who We Are</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.2', 'skin/')" id="menu_1.2Title" class="menutitle">Documentation</div>
<div id="menu_1.2" class="menuitemgroup">
<div class="menuitem">
<a href="features.html">Features</a>
</div>
<div class="menuitem">
<a href="tutorial.html">Tutorial</a>
</div>
<div class="menuitem">
<a href="http://wiki.apache.org/solr/FrontPage">Docs (Wiki)</a>
</div>
<div class="menuitem">
<a href="http://wiki.apache.org/solr/FAQ">FAQ</a>
</div>
<div class="menuitem">
<a href="api/index.html">All Javadoc</a>
</div>
<div class="menuitem">
<a href="api/solrj/index.html">SolrJ Javadoc</a>
</div>
<div class="menuitem">
<a href="api/test-framework/index.html">Test Framework Javadoc</a>
</div>
</div>
<div onclick="SwitchMenu('menu_selected_1.3', 'skin/')" id="menu_selected_1.3Title" class="menutitle" style="background-image: url('skin/images/chapter_open.gif');">Resources</div>
<div id="menu_selected_1.3" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="http://www.apache.org/dyn/closer.cgi/lucene/solr/">Download</a>
</div>
<div class="menupage">
<div class="menupagetitle">Mailing Lists</div>
</div>
<div class="menuitem">
<a href="issue_tracking.html">Issue Tracking</a>
</div>
<div class="menuitem">
<a href="version_control.html">Version Control</a>
</div>
</div>
<div onclick="SwitchMenu('menu_1.4', 'skin/')" id="menu_1.4Title" class="menutitle">Related Projects</div>
<div id="menu_1.4" class="menuitemgroup">
<div class="menuitem">
<a href="http://lucene.apache.org/java/">Lucene Java</a>
</div>
<div class="menuitem">
<a href="http://lucene.apache.org/nutch/">Nutch</a>
</div>
<div class="menuitem">
<a href="http://incubator.apache.org/connectors/">ManifoldCF</a>
</div>
</div>
<script type="text/javascript">
              function selectProvider(form) {
                provider = form.elements['searchProvider'].value;
                if (provider == "any") {
                  if (Math.random() > 0.5) {
                    provider = "lucid";
                  } else {
                    provider = "sl";
                  }
                }

                if (provider == "lucid") {
                  form.action = "http://search.lucidimagination.com/p:solr";
                } else if (provider == "sl") {
                  form.action = "http://search-lucene.com/solr";
                }

                days = 365; // cookie will be valid for a year
                date = new Date();
                date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                expires = "; expires=" + date.toGMTString();
                document.cookie = "searchProvider=" + provider + expires + "; path=/";
              }

              if (document.cookie.length>0) {
                cStart=document.cookie.indexOf("searchProvider=");
                if (cStart!=-1) {
                  cStart=cStart + "searchProvider=".length;
                  cEnd=document.cookie.indexOf(";", cStart);
                  if (cEnd==-1) {
                    cEnd=document.cookie.length;
                  }
                  provider = unescape(document.cookie.substring(cStart,cEnd));
                  document.forms['searchform'].elements['searchProvider'].value = provider;
                }
              }
            </script>
<div id="credit"></div>
<div id="roundbottom">
<img style="display: none" class="corner" height="15" width="15" alt="" src="skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
<!--+
  |alternative credits
  +-->
<div id="credit2">
<a href="http://www.packtpub.com/solr-1-4-enterprise-search-server?utm_source=http%3A%2F%2Flucene.apache.org%2Fsolr%2F&amp;utm_medium=spons&amp;utm_content=pod&amp;utm_campaign=mdb_000275"><img border="0" title="Book: Solr 1.4 Enterprise Search Server" alt="Book: Solr 1.4 Enterprise Search Server - logo" src="images/solr-book-image.jpg" style="width: 150px;height: 185px;"></a><a href="http://www.packtpub.com/solr-3-1-enterprise-search-server-cookbook/book"><img border="0" title="Book: Apache Solr 3.1 Cookbook" alt="Book: Apache Solr 3.1 Cookbook - logo" src="images/solr_31_cookbook.jpg" style="width: 150px;height: 180px;"></a><a href="http://www.lucidimagination.com/Downloads/LucidWorks-for-Solr/Reference-Guide?sc=AP"><img border="0" title="LucidWorks for Solr Certified Distribution Reference Guide" alt="LucidWorks for Solr Certified Distribution Reference Guide - logo" src="images/lucidworks_reference_guide.png" style="width: 150px;height: 185px;"></a>
</div>
</div>
<!--+
    |end Menu
    +-->
<!--+
    |start content
    +-->
<div id="content">
<div title="Portable Document Format" class="pdflink">
<a class="dida" href="mailing_lists.pdf"><img alt="PDF -icon" src="skin/images/pdfdoc.gif" class="skin"><br>
        PDF</a>
</div>
<h1>Solr Mailing Lists</h1>
<div id="minitoc-area">
<ul class="minitoc">
<li>
<a href="#Users">Users</a>
</li>
<li>
<a href="#Developers">Developers</a>
</li>
<li>
<a href="#Commits">Commits</a>
</li>
</ul>
</div>

    
<a name="N1000E"></a><a name="Users"></a>
<h2 class="boxed">Users</h2>
<div class="section">
<p>If you use Solr, please subscribe to the Solr user mailing list.</p>
<p>
        The Solr user mailing list is :
        <a href="mailto:solr-user@lucene.apache.org">solr-user@lucene.apache.org</a>.
      </p>
<ul>
        
<li>
<a href="mailto:solr-user-subscribe@lucene.apache.org">Subscribe to List</a>
</li>
        
<li>
<a href="mailto:solr-user-unsubscribe@lucene.apache.org">Unsubscribe from List</a>
</li>
        
<li>
<a href="http://mail-archives.apache.org/mod_mbox/lucene-solr-user/">View List Archive</a>  (Alternate list archive providers can be found on the <a href="http://wiki.apache.org/solr/SolrResources">wiki</a>)
        </li>
      
</ul>
<div class="note">
<div class="label">Note</div>
<div class="content">In order to post to the list, it is necessary to first subscribe to it.</div>
</div>
</div>

    
<a name="N10039"></a><a name="Developers"></a>
<h2 class="boxed">Developers</h2>
<div class="section">
<p>If you'd like to contribute to Solr, please subscribe to the
      Lucene/Solr developer mailing list.</p>
<p>
        The Lucene/Solr developer mailing list is:
        <a href="mailto:dev@lucene.apache.org">dev@lucene.apache.org</a>.
      </p>
<ul>
        
<li>
<a href="mailto:dev-subscribe@lucene.apache.org">Subscribe to List</a>
</li>
        
<li>
<a href="mailto:dev-unsubscribe@lucene.apache.org">Unsubscribe from List</a>
</li>
        
<li>
<a href="http://mail-archives.apache.org/mod_mbox/lucene-dev/">View List Archive</a>  (Alternate list archive providers can be found on the <a href="http://wiki.apache.org/solr/SolrResources">wiki</a>)
        </li>
        
<li>
<a href="http://mail-archives.apache.org/mod_mbox/lucene-solr-dev/">View Pre Lucene/Solr Merge List Archive</a>
        
</li>
      
</ul>
<div class="note">
<div class="label">Note</div>
<div class="content">In order to post to the list, it is necessary to first subscribe to it.</div>
</div>
</div>

    
<a name="N1006A"></a><a name="Commits"></a>
<h2 class="boxed">Commits</h2>
<div class="section">
<p>If you'd like to see changes made in Solr's <a href="version_control.html">version control system</a>
      then subscribe to the Solr commit mailing list.</p>
<ul>
        
<li>
<a href="mailto:commits-subscribe@lucene.apache.org">Subscribe to List</a>
</li>
        
<li>
<a href="mailto:commits-unsubscribe@lucene.apache.org">Unsubscribe from List</a>
</li>
      
</ul>
</div>

  
</div>
<!--+
    |end content
    +-->
<div class="clearboth">&nbsp;</div>
</div>
<div id="footer">
<!--+
    |start bottomstrip
    +-->
<div class="lastmodified">
<script type="text/javascript"><!--
document.write("Last Published: " + document.lastModified);
//  --></script>
</div>
<div class="copyright">
        Copyright &copy;
         2007 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
</div>
<!--+
    |end bottomstrip
    +-->
</div>
</body>
</html>
