<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 03:39:20 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[MAGNOLIA-2708] Implement the jackrabbit spellchecker for the fulltext search</title>
                <link>https://jira.magnolia-cms.com/browse/MAGNOLIA-2708</link>
                <project id="10000" key="MAGNOLIA">Magnolia</project>
                    <description>&lt;p&gt;for workspace.xml:&lt;/p&gt;

&lt;p&gt;&amp;lt;param name=&quot;spellCheckerClass&quot; value=&quot;org.apache.jackrabbit.core.query.lucene.spell.LuceneSpellChecker$OneMinuteRefreshInterval&quot; /&amp;gt;&lt;/p&gt;


&lt;p&gt;code for the template:&lt;/p&gt;

&lt;p&gt;&amp;lt;%&lt;br/&gt;
String q = request.getParameter(&quot;query&quot;);&lt;br/&gt;
Query query = MgnlContext.getWebContext().getQueryManager(&quot;website&quot;)&lt;br/&gt;
.createQuery(&quot;/jcr:root&lt;span class=&quot;error&quot;&gt;&amp;#91;rep:spellcheck(&amp;#39;&amp;quot;+q+&amp;quot;&amp;#39;)&amp;#93;&lt;/span&gt;/(rep:spellcheck())&quot;, Query.XPATH);&lt;br/&gt;
RowIterator rows = ((QueryResultImpl)query.execute()).getJcrResult().getRows();&lt;br/&gt;
// the above query will always return one row no matter what string we check&lt;br/&gt;
Row r = rows.nextRow();&lt;br/&gt;
// get the result of the spell checking&lt;br/&gt;
Value v = r.getValue(&quot;rep:spellcheck()&quot;);&lt;br/&gt;
if (v == null) {&lt;br/&gt;
// no suggestion returned, the spelling is correct or the spell checker&lt;br/&gt;
// does not know how to correct it.&lt;br/&gt;
} else {&lt;br/&gt;
String suggestion = v.getString();&lt;br/&gt;
out.write(&quot;Did you mean &amp;lt;b&amp;gt;&quot; + suggestion + &quot;&amp;lt;/b&amp;gt;?&quot;);&lt;br/&gt;
}&lt;br/&gt;
%&amp;gt;&lt;/p&gt;</description>
                <environment></environment>
        <key id="16495">MAGNOLIA-2708</key>
            <summary>Implement the jackrabbit spellchecker for the fulltext search</summary>
                <type id="2" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10891&amp;avatarType=issuetype">New Feature</type>
                                            <priority id="4" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/minor.svg">Minor</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="8">Outdated</resolution>
                                        <assignee username="pbaerfuss">Philipp B&#228;rfuss</assignee>
                                    <reporter username="tomwespi">Tom Wespi</reporter>
                        <labels>
                    </labels>
                <created>Thu, 30 Apr 2009 11:50:27 +0200</created>
                <updated>Wed, 27 Nov 2013 11:58:45 +0100</updated>
                            <resolved>Thu, 16 May 2013 15:35:40 +0200</resolved>
                                                                        <due></due>
                            <votes>0</votes>
                                    <watches>1</watches>
                                                                                                                <comments>
                            <comment id="22373" author="had" created="Thu, 30 Apr 2009 15:45:37 +0200"  >&lt;p&gt;Tom, when I have shown this feature last week it was meant as a prototype/PoC. To implement this on its own and unrelated to the other search extensions (synonyms, excerpts, etc.) makes no sense. we need to put it together and provide concise and useful package of all the search goodies.  And we also need to provide some flexible API so we can keep adding features as they come with minimal pain.&lt;br/&gt;
Definitively more then updating just search tag to hide the ugly code above I had in the template when showing the feature.&lt;br/&gt;
If we want ever decide to implement it on its own, it will likely be as an additional paragraph in STK.&lt;/p&gt;</comment>
                            <comment id="22489" author="fgrilli" created="Sat, 9 May 2009 00:16:00 +0200"  >&lt;p&gt;Hi, speaking of a search API against magnolia/jcr repositories. Here at OpenMind, I realized a Hibernate Criteria-like API to make it easier to programmatically create xpath queries. The idea crossed my mind when working at a project which involved several different search screens, each with lots of options (that is filters) diversely combined with AND/OR but which ultimately queried a DMS repository,&lt;br/&gt;
Here is an example of its usage:&lt;br/&gt;
{{&lt;br/&gt;
  Calendar begin = Calendar.getInstance();&lt;br/&gt;
  begin.set(2004, 0, 1);&lt;br/&gt;
  Calendar end = Calendar.getInstance();&lt;br/&gt;
  end.set(2008, 11, 1);&lt;/p&gt;

&lt;p&gt;  Collection&amp;lt;Content&amp;gt; pets = JCRCriteriaFactory.createMgnlCriteria(&quot;//dogs//*&quot;, MgnlContext.getQueryManager(&quot;website&quot;), &quot;mgnl:content&quot;).add(&lt;br/&gt;
                    Restrictions.contains(&quot;@name&quot;, &quot;Nana&quot;)).add(&lt;br/&gt;
                    Restrictions.gt(&quot;@weight&quot;, new Float(10))).add(&lt;br/&gt;
                    Restrictions.between(&quot;@birthDate&quot;, begin, end).addOrder(&lt;br/&gt;
                    Order.desc(&quot;@jcr:score()&quot;)).list();&lt;br/&gt;
}}&lt;/p&gt;

&lt;p&gt;will translate to&lt;/p&gt;

&lt;p&gt;{{&lt;br/&gt;
//dogs//*&lt;span class=&quot;error&quot;&gt;&amp;#91;((jcr:contains(@name, &amp;#39;Nana&amp;#39;)) and (@weight&amp;gt;10.0) and (@birthDate &amp;gt;=xs:dateTime(&amp;#39;2004-01-01T00:00:00.000+00:00&amp;#39;) and @birthDate &amp;lt;=xs:dateTime(&amp;#39;2008-12-01T23:59:59.000+00:00&amp;#39;)))&amp;#93;&lt;/span&gt; order by @jcr:score() descending&lt;br/&gt;
}}&lt;/p&gt;

&lt;p&gt;But there&apos;s a lot more (see &lt;a href=&quot;http://openutils.svn.sourceforge.net/viewvc/openutils/trunk/openutils-mgnlcriteria/src/site/apt/index.apt&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://openutils.svn.sourceforge.net/viewvc/openutils/trunk/openutils-mgnlcriteria/src/site/apt/index.apt&lt;/a&gt;). The API is called openutils-mgnlcriteria and it&apos;s released under gplv3. The sources (no maven artifacts yet) can be downloaded from &lt;a href=&quot;http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/trunk/openutils-mgnlcriteria&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;http://openutils.svn.sourceforge.net/viewcvs.cgi/openutils/trunk/openutils-mgnlcriteria&lt;/a&gt;. Perhaps it could become part of the official Magnolia API? &lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="12326" name="jackrabbit-spellchecker-1.5.3.jar" size="15308" author="tomwespi" created="Thu, 30 Apr 2009 11:50:27 +0200"/>
                            <attachment id="12327" name="lucene-spellchecker-2.2.0.jar" size="16281" author="tomwespi" created="Thu, 30 Apr 2009 11:50:53 +0200"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>esense.ch</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 30 Apr 2009 15:45:37 +0200</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>false</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>mmuehlebach</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            14 years, 42 weeks, 2 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>fgrilli</customfieldvalue>
            <customfieldvalue>had</customfieldvalue>
            <customfieldvalue>pbaerfuss</customfieldvalue>
            <customfieldvalue>tomwespi</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|i00zsn:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>5849</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10032" key="com.atlassian.jira.ext.charting:timeinstatus">
                        <customfieldname>Time in Status</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        </customfields>
    </item>
</channel>
</rss>