[opencms-dev] Autosuggest with Solr-Index in OpenCms 11
Klapf Hanspeter
Hanspeter.Klapf at ikt.linz.at
Tue Apr 25 23:20:49 CEST 2023
Hi!
I need an autosuggest-Feature for the search-field of my site. The client calls some Json-Service which should return
{"suggestions": ["Linz", "Lunz", "Lanz", "Linz-Tourisumus", "Linzer Torte", ...] }
for the query parameter „Linz“.
I tried many different approaches including
· „/opencms/handleSolrSpell“
· „/opencms/handleSolrSelect“ and parameters (&suggest.q=linz&suggest.count=20&rows=0)
· enabling OpenCmsSolrServlet via web.xml, trying to use /solr/suggest
· and using it via SolrQuery in JSP code like
CmsSolrIndex searchIndex = CmsSearchManager.getIndexSolr(jsp.getCmsObject(), null);
Field solr = CmsSolrIndex.class.getDeclaredField("m_solr");
solr.setAccessible(true);
SolrClient solrServer = (SolrClient) solr.get(searchIndex);
SolrQuery q = new SolrQuery();
q.setRequestHandler("/suggest");
q.setParam("suggest.q", request.getParameter("q"));
q.setParam("suggest", "true");
q.setParam("suggest.dictionary", "mySuggester");
q.setParam("suggest.build", "false");
After many hours I have now configured a searchComponent and requestHandler as
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">mySuggester</str>
<str name="lookupImpl">FuzzyLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">de_spell</str>
<str name="suggestAnalyzerFieldType">string</str>
<str name="buildOnStartup">true</str>
</lst>
</searchComponent>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
and get some spellcorrections from handleSolrSpell and an empty query-response from SolrQuery with requestHandler „/suggest“, but not an single suggestion („{responseHeader={status=0,QTime=0},suggest={mySuggester={magistrat={numFound=0,suggestions=[]}}}}“). The field de_spell isn’t delivered through handleSolrSpell or handleSolrSelect.
I cannot be the first one, needing some auto-completion search box, am I? I’d be glad for any advice, how this could be implemented.
Best Regards,
Peter
________________________________
Diese Nachricht inklusive aller Anhänge kann vertrauliche Informationen enthalten. Sie ist ausschließlich für die adressierten Personen bestimmt. Das unerlaubte Kopieren sowie die unbefugte Weitergabe sind nicht gestattet. Sollten Sie nicht die richtige Adressatin/der richtige Adressat sein, vernichten Sie den gesamten Inhalt (§ 93 Abs. 4 Telekommunikationsgesetz 2003) und informieren Sie bitte sofort den/die Absender/in. Nähere Regelungen zur elektronischen Kommunikation mit der Stadt Linz finden Sie in den "Allgemeinen Hinweisen und Nutzungsbestimmungen betreffend das E-Government der Stadt Linz (e-linz)" ( http://www.linz.at/images/AGB_egov_Stadt_Linz.pdf).
Informationen über die Verarbeitung personenbezogener Daten finden Sie unter https://www.linz.at/images/files/Datenschutzerklaerung_IKT.pdf
IKT Linz GmbH, Firmenbuch des Landesgerichtes Linz ++ Firmenbuch-Nummer: 321197z ++ UID-Nummer: ATU64636344
A-4020 Linz, Peter-Behrens-Platz 4, Tel. +43 732 7070 0, Fax: +43 732 7070 4704, office at ikt.linz.at, www.linz.at/ikt
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opencms.org/pipermail/opencms-dev/attachments/20230425/ff927357/attachment.htm>
More information about the opencms-dev
mailing list