| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| <html xmlns="http://www.w3.org/1999/xhtml"><head> |
| <meta http-equiv="X-UA-Compatible" content="IE=7"></meta> |
| <meta http-equiv="Content-Type" content="text/html; charset=utf-8"></meta> |
| <title>New Stemmers</title><meta name="generator" content="DocBook XSL Stylesheets V1.77.1"></meta><link rel="home" href="index.html" title="README: Web-based Help from DocBook XML"></link><link rel="up" href="ch03s02.html" title="Search"></link><link rel="prev" href="ch03s02.html" title="Search"></link><link rel="next" href="ch04.html" title="FAQ"></link><script type="text/javascript"> |
| //The id for tree cookie |
| var treeCookieId = "treeview-1055"; |
| var language = "en"; |
| var w = new Object(); |
| //Localization |
| txt_filesfound = 'Results'; |
| txt_enter_at_least_1_char = "You must enter at least one character."; |
| txt_browser_not_supported = "JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site."; |
| txt_please_wait = "Please wait. Search in progress..."; |
| txt_results_for = "Results for: "; |
| </script><link rel="shortcut icon" href="../favicon.ico" type="image/x-icon"></link><link rel="stylesheet" type="text/css" href="../common/css/positioning.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/theme-redmond/jquery-ui-1.8.2.custom.css"></link><link rel="stylesheet" type="text/css" href="../common/jquery/treeview/jquery.treeview.css"></link><style type="text/css"> |
| noscript{ |
| font-weight:bold; |
| } |
| input { |
| margin-bottom: 5px; |
| margin-top: 2px; |
| } |
| .folder { |
| display: block; |
| height: 22px; |
| padding-left: 20px; |
| background: transparent url(../common/jquery/treeview/images/folder.gif) 0 0px no-repeat; |
| } |
| span.contentsTab { |
| padding-left: 20px; |
| background: url(../common/images/toc-icon.png) no-repeat 0 center; |
| } |
| span.searchTab { |
| padding-left: 20px; |
| background: url(../common/images/search-icon.png) no-repeat 0 center; |
| } |
| |
| /* Overide jquery treeview's defaults for ul. */ |
| .treeview ul { |
| background-color: transparent; |
| margin-top: 4px; |
| } |
| #webhelp-currentid { |
| background-color: #D8D8D8 !important; |
| } |
| .treeview .hover { color: black; } |
| .filetree li span a { text-decoration: none; font-size: 12px; color: #517291; } |
| |
| /* Override jquery-ui's default css customizations. These are supposed to take precedence over those.*/ |
| .ui-widget-content { |
| border: 0px; |
| background: none; |
| color: none; |
| } |
| .ui-widget-header { |
| color: #e9e8e9; |
| border-left: 1px solid #e5e5e5; |
| border-right: 1px solid #e5e5e5; |
| border-bottom: 1px solid #bbc4c5; |
| border-top: 4px solid #e5e5e5; |
| border: medium none; |
| background: #F4F4F4; /* old browsers */ |
| background: -moz-linear-gradient(top, #F4F4F4 0%, #E6E4E5 100%); /* firefox */ |
| background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#F4F4F4), color-stop(100%,#E6E4E5)); /* webkit */ |
| font-weight: none; |
| } |
| .ui-widget-header a { color: none; } |
| .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { |
| border: none; background: none; font-weight: none; color: none; } |
| .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: black; text-decoration: none; } |
| .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: none; background: none; font-weight: none; color: none; } |
| |
| .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: none; background: none; font-weight: none; color: none; } |
| .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { |
| color: black; text-decoration: none; |
| background: #C6C6C6; /* old browsers */ |
| background: -moz-linear-gradient(top, #C6C6C6 0%, #D8D8D8 100%); /* firefox */ |
| background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#C6C6C6), color-stop(100%,#D8D8D8)); /* webkit */ |
| -webkit-border-radius:15px; -moz-border-radius:10px; |
| border: 1px solid #f1f1f1; |
| } |
| .ui-corner-all { border-radius: 0 0 0 0; } |
| |
| .ui-tabs { padding: .2em;} |
| .ui-tabs .ui-tabs-nav li { top: 0px; margin: -2px 0 1px; text-transform: uppercase; font-size: 10.5px;} |
| .ui-tabs .ui-tabs-nav li a { padding: .25em 2em .25em 1em; margin: .5em; text-shadow: 0 1px 0 rgba(255,255,255,.5); } |
| </style><script type="text/javascript" src="../common/browserDetect.js"></script><script type="text/javascript" src="../common/jquery/jquery-1.4.2.min.js"></script><script type="text/javascript" src="../common/jquery/jquery-ui-1.8.2.custom.min.js"></script><script type="text/javascript" src="../common/jquery/jquery.cookie.js"></script><script type="text/javascript" src="../common/jquery/treeview/jquery.treeview.min.js"></script><script type="text/javascript" src="search/l10n.js"></script><script type="text/javascript" src="search/htmlFileInfoList.js"></script><script type="text/javascript" src="search/nwSearchFnt.js"></script><script type="text/javascript" src="search/stemmers/en_stemmer.js"><!--//make this scalable to other languages as well.--></script><script type="text/javascript" src="search/index-1.js"></script><script type="text/javascript" src="search/index-2.js"></script><script type="text/javascript" src="search/index-3.js"></script></head><body><div id="header"><a target="_blank" href="#"><img style="margin-right: 2px; height: 59px; padding-right: 25px; padding-top: 8px" align="right" src="../common/images/logo.png" alt=" Documentation"></img></a><h1>README: Web-based Help from DocBook XML<br></br>Search</h1><div id="navheader"><table class="navLinks"><tr><td><a id="showHideButton" href="javascript:showHideToc();" class="pointLeft" tabindex="5" title="Hide TOC tree">Sidebar |
| </a></td><td><a accesskey="p" class="navLinkPrevious" tabindex="5" href="ch03s02.html">Prev</a> |
| | |
| <a accesskey="u" class="navLinkUp" tabindex="5" href="ch03s02.html">Up</a> |
| | |
| <a accesskey="n" class="navLinkNext" tabindex="5" href="ch04.html">Next</a></td></tr></table></div></div><div id="content"><noscript>JavaScript is disabled on your browser. Please enable JavaScript to enjoy all the features of this site.</noscript><div class="section"><div xmlns="" class="titlepage"><div><div><h3 xmlns="http://www.w3.org/1999/xhtml" class="title"><a id="id377401"></a>New Stemmers</h3></div></div></div> |
| <p class="summary">Adding new Stemmers is very simple.</p><p>Currently, only English, French, and German stemmers are integrated in to WebHelp. But |
| the code is extensible such that you can add new stemmers easily by few steps.</p><p>What you need: </p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; "><li class="listitem"><p>You'll need two versions of the stemmer; One written in JavaScript, and another |
| in Java. But fortunately, Snowball contains Java stemmers for number of popular |
| languages, and are already included with the package. You can see the full list in |
| <a class="ulink" href="ch02s04.html" target="_top">Adding support for other (non-CJKV) languages</a>. |
| If your language is listed there, Then you have to find javascript version of the |
| stemmer. Generally, new stemmers are getting added in to <a class="ulink" href="http://snowball.tartarus.org/otherlangs/index.html" target="_top">Snowball Stemmers in |
| other languages</a> location. If javascript stemmer for your language is |
| available, then download it. Else, you can write a new stemmer in JavaScript using |
| SnowBall algorithm fairly easily. Algorithms are at <a class="ulink" href="http://snowball.tartarus.org/" target="_top">Snowball</a>. </p></li><li class="listitem"><p>Then, name the JS stemmer exactly like this: |
| <code class="filename">{$language-code}_stemmer.js</code>. For example, for Italian(it), |
| name it as, <code class="filename">it_stemmer.js</code>. Then, copy it to the |
| <code class="filename">docbook-webhelp/template/content/search/stemmers/</code> folder. (I |
| assumed <code class="filename">docbook-webhelp</code> is the root folder for webhelp.) </p><div class="note" style="margin-left: 0.5in; margin-right: 0.5in;"><h3 class="title">Note</h3><p>Make sure you changed the <code class="code">webhelp.indexer.language</code> property in |
| <code class="filename">build.properties</code> to your language. </p></div><p> |
| </p></li><li class="listitem"><p>Now two easy changes needed for the indexer.</p><div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: circle; "><li class="listitem"><p>Open |
| <code class="filename">docbook-webhelp/indexer/src/com/nexwave/nquindexer/IndexerTask.java</code> |
| in a text editor and add your language code to the |
| <code class="code">supportedLanguages</code> String Array. </p><div class="example"><a id="id377526"></a><p class="title"><strong>Example 2. Add new language to supportedLanguages array</strong></p><div class="example-contents"><p> change the Array from, |
| </p><pre class="programlisting"> |
| private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko"}; |
| //currently extended support available for |
| // English, German, French and CJK (Chinese, Japanese, Korean) languages only. |
| </pre><p> |
| To,</p><pre class="programlisting"> |
| private String[] supportedLanguages= {"en", "de", "fr", "cn", "ja", "ko", <span class="emphasis"><em>"it"</em></span>}; |
| //currently extended support available for |
| // English, German, French, CJK (Chinese, Japanese, Korean), and Italian languages only. |
| </pre></div></div><br class="example-break"></br></li><li class="listitem"><p> Now, open |
| <code class="filename">docbook-webhelp/indexer/src/com/nexwave/nquindexer/SaxHTMLIndex.java</code> |
| and add the following line to the code where it initializes the Stemmer (Search |
| for <code class="code">SnowballStemmer stemmer;</code>). Then add code to initialize the |
| stemmer Object in your language. It's self understandable. See the example. The |
| class names are at: |
| <code class="filename">docbook-webhelp/indexer/src/com/nexwave/stemmer/snowball/ext/</code>. </p><div class="example"><a id="id377581"></a><p class="title"><strong>Example 3. Initialize correct stemmer based on the |
| <code class="code">webhelp.indexer.language</code> specified</strong></p><div class="example-contents"><pre class="programlisting"> |
| SnowballStemmer stemmer; |
| if(indexerLanguage.equalsIgnoreCase("en")){ |
| stemmer = new EnglishStemmer(); |
| } else if (indexerLanguage.equalsIgnoreCase("de")){ |
| stemmer= new GermanStemmer(); |
| } else if (indexerLanguage.equalsIgnoreCase("fr")){ |
| stemmer= new FrenchStemmer(); |
| } |
| <span class="emphasis"><em>else if (indexerLanguage.equalsIgnoreCase("it")){ //If language code is "it" (Italian) |
| stemmer= new italianStemmer(); //Initialize the stemmer to <code class="code">italianStemmer</code> object. |
| } </em></span> |
| else { |
| stemmer = null; |
| } |
| </pre></div></div><br class="example-break"></br></li></ul></div></li></ul></div><p> |
| </p><p>That's all. Now run <code class="code">ant build-indexer</code> to compile and build the java code. |
| Then, run <code class="code">ant webhelp</code> to generate the output from your docbook file. For any |
| questions, contact us or email to the docbook mailing list |
| <code class="email"><<a class="email" href="mailto:docbook-apps@lists.oasis-open.org">docbook-apps@lists.oasis-open.org</a>></code>.</p><a id="id377631" class="indexterm"></a></div><script type="text/javascript" src="../common/main.js"></script><div class="navfooter"><hr></hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03s02.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch04.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> </td></tr></table></div></div><div id="sidebar"><div id="leftnavigation" style="padding-top:3px;"><div id="tabs"><ul><li><a href="#treeDiv" style="outline:0;" tabindex="1"><span class="contentsTab">Contents</span></a></li><li><a href="#searchDiv" style="outline:0;" tabindex="1" onclick="doSearch()"><span class="searchTab">Search</span></a></li></ul><div id="treeDiv"><img src="../common/images/loading.gif" alt="loading table of contents..." id="tocLoading" style="display:block;"></img><div id="ulTreeDiv" style="display:none"><ul id="tree" class="filetree"><li><span class="file"><a href="ch01.html" tabindex="1">Introduction</a></span></li><li><span class="file"><a href="ch02.html" tabindex="1">Using the package</a></span><ul><li><span class="file"><a href="ch02s01.html" tabindex="1">Generating webhelp output</a></span></li><li><span class="file"><a href="ch02s02.html" tabindex="1">Using and customizing the output</a></span><ul><li><span class="file"><a href="ch02s02s01.html" tabindex="1">Recommended Apache configurations</a></span></li></ul></li><li><span class="file"><a href="ch02s03.html" tabindex="1">Search indexing</a></span></li><li><span class="file"><a href="ch02s04.html" tabindex="1">Adding support for other (non-CJKV) languages</a></span></li><li><span class="file"><a href="ch02s05.html" tabindex="1">Adding images</a></span></li></ul></li><li><span class="file"><a href="ch03.html" tabindex="1">Developer Docs</a></span><ul><li><span class="file"><a href="ch03s01.html" tabindex="1">Design</a></span></li><li><span class="file"><a href="ch03s02.html" tabindex="1">Search</a></span><ul><li id="webhelp-currentid"><span class="file"><a href="ch03s02s01.html" tabindex="1">New Stemmers</a></span></li></ul></li></ul></li><li><span class="file"><a href="ch04.html" tabindex="1">FAQ</a></span></li></ul></div></div><div id="searchDiv"><div id="search"><form onsubmit="Verifie(searchForm);return false" name="searchForm" class="searchForm"><fieldset class="searchFieldSet"><legend>Search</legend><center><input id="textToSearch" name="textToSearch" type="search" class="searchText" tabindex="1"></input> <input onclick="Verifie(searchForm)" type="button" class="searchButton" value="Go" id="doSearch" tabindex="1"></input></center></fieldset></form></div><div id="searchResults"><center></center></div><p class="searchHighlight"><a href="#" onclick="toggleHighlight()">Search Highlighter (On/Off)</a></p></div></div></div></div></body></html> |