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. |