<span class="gmail_quote"></span>
<div>Hi,</div>
<div> </div>
<div>I am trying to customise the search behaviour in OpenCMS such that to allow an application to dynamically create a new index source and search index from an arbitrary set of files in VFS and perform a search on those files. The code that I am using is given below. When I run this from a JSP page it returned with an error saying 
<em>No analyzer found for language "null". </em>The trace log for this error is given at the bottom which points to method getAnalyzer() in CmsSearchManager. So I checked the source code of this method and it looks perfectly normal given that I already set the locale for my CmsSearchIndex object to 'en'. I even test printing out the analyzer class name (see code) using getAnalyzers() method of the CmsSearchManager to make sure that analyzer for 'en' locale exists. 
</div>
<div> </div>
<div>So the analyzer is there and the locale has been set for the CmsSearchIndex object, why does it still complain about the analyzer being not found and weird enough in the error message it seems not able to detect the locale ("null" value)? Has anyone experienced this before and perhaps could provide some insights? Thanks very much for your prompt response.
</div>
<div> </div>
<div>Rgds,</div>
<div>David.</div>
<div> </div>
<div> </div>
<div>// Define the document set from files<br>ArrayList docPaths = new ArrayList();<br>docPaths.add("/sites/mysite/file1.doc");<br>docPaths.add("/sites/mysite/file2.pdf");<br>docPaths.add("/sites/mysite/file3.txt");
<br>String query = "hello*";<br>// Define index source<br>CmsSearchIndexSource indexSource = new CmsSearchIndexSource();<br>indexSource.setName("tempIndexSource");<br>indexSource.setIndexerClassName("
org.opencms.search.CmsVfsIndexer");<br>indexSource.addDocumentType("xmlpage");<br>indexSource.addDocumentType("xmlcontent");<br>indexSource.addDocumentType("page");<br>indexSource.addDocumentType
("text");<br>indexSource.addDocumentType("pdf");<br>indexSource.addDocumentType("rtf");<br>indexSource.addDocumentType("html");<br>indexSource.addDocumentType("msword");<br>
indexSource.addDocumentType("msexcel");<br>indexSource.addDocumentType("mspowerpoint");<br>indexSource.addDocumentType("image");<br>indexSource.addDocumentType("generic");</div>
<div>
<p>// Add documents to index source<br>for (Iterator pointerIt = docPaths.iterator(); pointerIt.hasNext();) {<br>    String pointer = (String) pointerIt.next();<br>    // create a document object from this pointer<br>    
indexSource.addResourceName(pointer);<br>}</p>
<p>// Instantiate an index from the index source<br>CmsSearchIndex index = new CmsSearchIndex();<br>index.setName("tempIndex");<br>index.addSourceName(indexSource.getName());                <br>index.setLocale("en");
<br>index.setRebuildMode(CmsSearchIndex.AUTO_REBUILD);<br>index.initialize();</p>
<p>// Test to make sure analyzer for locale 'en' exists<br>CmsSearchManager searchMgr = OpenCms.getSearchManager();<br>CmsSearchAnalyzer analyzer = (CmsSearchAnalyzer) searchMgr.getAnalyzers().get("en");<br>out.println
("Analyzer for locale 'en' is "+analyzer.getClassName());</p>
<p>// Update the index (build it)<br>searchMgr.addAnalyzer(analyzer);<br>searchMgr.addSearchIndexSource(indexSource);<br>searchMgr.addSearchIndex(index);<br>searchMgr.updateIndex(index.getName());</p>
<p>// Code to search using this indexer...</p>
<p> </p>
<p><<< ERROR TRACE MESSAGE >>>></p><pre><html><pre>org.opencms.search.CmsIndexException: No analyzer found for language "null".
        at org.opencms.search.CmsSearchManager.getAnalyzer(CmsSearchManager.java:692)
        at org.opencms.search.CmsSearchIndex.getIndexWriter(CmsSearchIndex.java:328)
        at org.opencms.search.CmsSearchManager.updateIndex(CmsSearchManager.java:600)
        at org.opencms.search.CmsSearchManager.updateIndex(CmsSearchManager.java:557)
        at org.opencms.search.CmsSearchManager.updateIndex(CmsSearchManager.java:544)
        at .....</pre><pre>...... (omitted)</pre></html></pre>
<p><<<ERROR>>>></p></div><br clear="all"><br>-- <br>Rgds,<br>David