| Q1. | How to use Lucene spellchecker? | 
|  | You simply do the following steps: Enable the Lucene spellchecker in the JCR QueryHandler configuration: 
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex"><properties>
 ...
 <property name="spellchecker-class" value="org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker$FiveSecondsRefreshInterval"/>
 ...
 </properties>
 </query-handler>
 
Execute query with rep:spellcheck function and word that is checked:
		 Query query = qm.createQuery("select rep:spellcheck() from nt:base where " +
"jcr:path = '/' and spellcheck('word that is checked')", Query.SQL);
 RowIterator rows = query.execute().getRows();
If there is no any result, this means there is no suggestion, so word is correct or spellcheckers dictionary does not contain any words like the checked word.
		 | 
| Q2. | How can I affect spellchecker results? | 
|  | There are two parameters in the JCR QueryHandler configuration: Minimal distance between checked word and proposed
			  suggestion:
			Search for more popular suggestions: 
<query-handler class="org.exoplatform.services.jcr.impl.core.query.lucene.SearchIndex"><properties>
 ...
 <property name="spellchecker-class" value="org.exoplatform.services.jcr.impl.core.query.lucene.spell.LuceneSpellChecker$FiveSecondsRefreshInterval" />
 <property name="spellchecker-more-popular" value="false" />
 <property name="spellchecker-min-distance" value="0.55" />
 ...
 </properties>
 </query-handler>
 
Minimal distance is counted as Levenshtein distance between checked word and spellchecker suggestion.
		 The MorePopular parameter affects in the following way:
		 If "morePopular" is disabled: If "morePopular" is enabled: | 
| Q3. | Does Help application prohibit the use of closed sessions? | 
|  | Products that use JCR, sometimes missuse it since they continue
    to use a session that has been closed through a method call on a node, a
    property or even the session itself. To prevent bad practices, we propose
    three following modes: If the system property
        exo.jcr.prohibit.closed.session.usage has been
        set to "true", then a RepositoryException will be
        thrown any time an application is trying to access to a closed session.
        In the stack trace, you will be able to know the call stack that
        closes the session.If the system property
        exo.jcr.prohibit.closed.session.usage has not
        been set and the system property
        exo.product.developing has been set to
        true, then a warning will be logged in the log
        file with the full stack trace in order to help identifying the root
        cause of the issue. In the stack trace, you will be able to know the
        call stack that closes the session.If none of the previous system properties have been set, then we
        will ignore that issue and let the application use the closed
        session as before without doing anything to
        allow applications to migrate step by step.
 | 
| Q4. | Does Help application allow the use of closed datasources?  | 
|  | Since the usage of closed session affects usage of closed datasource,
			we propose three ways to resolve such kind of issues:  If the system property
					exo.jcr.prohibit.closed.datasource.usage is
					set to true (default value) then a SQLException will be
					thrown any time an application will try to access to a closed datasource.
					In the stack trace, you will be able to know the call stack that
					closes the datasource.If the system property
					exo.jcr.prohibit.closed.datasource.usage is
					set to "false" and the system property
					exo.product.developing is set to
					"true", then a warning will be logged in the log
					file with the full stack trace in order to help identifying the root
					cause of the issue. In the stack trace, you will be able to know the
					call stack that closes the datasource.If the system property
					exo.jcr.prohibit.closed.datasource.usage is
					set to "false" and the system property
					exo.product.developing is set to
					"false" usage of closed datasource will be allowed
					and nothing will be logged or thrown.
 | 
| Q5. | How to get the effective configuration at Runtime of all the repositories?  | 
|  | The effective configuration of all the repositories and their
			workspaces can be known thanks to the method
			getConfigurationXML(). This method is exposed through JMX at
			the RepositoryServiceConfiguration level. In case of a
			PortalContainer, the name of the related MBean will be
			of type exo:portal=${portal-container-name},service=RepositoryServiceConfiguration.
			This method will give you the effective configuration in XML format that
			has been really interpreted by the JCR core. This could be helpful to
			understand how your repositories/workspaces are configured especially if
			you would like to overwrite the configuration for some reasons. |