Grundlagen der Suche
Mit ZMS3 wurde die Schnittstelle zur Suchmaschine auf AJAX umgestellt
Mit ZMS3 wurde die Schnittstelle zur Suchmaschine auf AJAX umgestellt
Die Antwort auf die Suchanfrage via Suchformular (Beispiel-Code folgend) ist ein XML-Strom, welcher der Notation von Apache Solr folgt. Da der Resultat-Strom nun damit prinzpiell anwendungs-neutral ist, kann über einen Connector auch ein anderer Indexer eingesetzt werden, als der im System bereits eingebaute ZCatalog. ZMS wird mit zwei Connectors ausgeliefert:
Da die Such-Ergebnisse auf die Formular-Anfrage vom Server in Form einer XML-Datei zurück geliefert werden, muss diese in der Drittsicht in den HTML-Baum implantiert bzw. restrukturiert werden. Das geschieht durch eine JavaScript-Funktion, die sich im Default-Templateset einer ZMS-Instanz oder im ZMS-Quellcode findet unter $ZMS_HOME/plugins/www/ZMS/zmi_body_content_search.js.
<form class="search" method="get"> <tal:block tal:condition="python:request.get('searchform')"> <input tal:condition="python:request.get('searchform')" type="hidden" name="searchform" tal:attributes="value python:request.get('searchform')" /> <input tal:condition="python:request.get('lang')" type="hidden" name="lang" tal:attributes="value python:request.get('lang')" /> <input tal:condition="python:request.get('preview')" type="hidden" name="preview" tal:attributes="value python:request.get('preview')" /> <legend tal:content="python:here.getZMILangStr('SEARCH_HEADER')">Search header</legend> <div class="form-group"> <div class="col-md-12"> <div class="input-group"> <tal:block tal:content="structure python:here.getTextInput(fmName='searchform',elName='search',value=request.get('search',''))">the value</tal:block> <span class="input-group-btn"> <button type="submit" class="btn btn-primary"> <tal:block tal:content="structure python:here.zmi_icon(name='icon-search')"></tal:block> </button> </span> </div> </div> </div><!-- .form-group --> </tal:block> <div id="search_results" class="form-group" style="display:none"> <div class="col-md-12"> <h4 tal:content="python:here.getZMILangStr('SEARCH_HEADERRESULT')">Result</h4> <div class="header row"> <div class="col-md-12"> <span class="small-head"> <span class="glyphicon glyphicon-refresh" alt="Loading..."></span> <tal:block tal:content="python:here.getZMILangStr('MSG_LOADING')">loading</tal:block> </span> </div> </div><!-- .header.row --> <div class="line row"></div><!-- .row --> <div class="pull-right"> <ul class="pagination"></ul> </div> </div> </div> </form> <script type="text/javascript" charset="UTF-8" src="/++resource++zms_/ZMS/zmi_body_content_search.js"></script>
<response> <lst name="responseHeader"> <int name="status">0</int> <lst name="params"> <int name="q">ipsum</int> <int name="page_index">0</int> <int name="page_size">10</int> <int name="hl.fragsize">200</int> </lst> </lst> <result name="response" numFound="32" start="0"> <doc> <arr name="title"><str><![CDATA[News-Document-1.3]]></str></arr> <arr name="index_html"><str><![CDATA[http://localhost:8080/myzmsx/content/neues/news_13/index_ger.html]]></str></arr> <arr name="loc"><str><![CDATA[http://localhost:8080/myzmsx/content/e5/e8]]></str></arr> <arr name="standard_html"><str><![CDATA[Fifth Folder Fourth Document Labore et dolore magna aliquyam erat, [...]]]></str></arr> <arr name="normscore"><str><![CDATA[100]]></str></arr> <arr name="score"><str><![CDATA[2780]]></str></arr> <arr name="custom"><str><![CDATA[<custom><breadcrumbs><breadcrumb><title>Neues</title><loc>http://localhost:8080/myzmsx/content/neues/index_ger.html</loc></breadcrumb></breadcrumbs></custom>]]></str></arr> <arr name="meta_id"><str><![CDATA[ZMSDocument]]></str></arr> <arr name="titlealt"><str><![CDATA[News-1.3]]></str></arr> <arr name="path"><str><![CDATA[/myzmsy/content/e5/e8]]></str></arr> <arr name="id"><str><![CDATA[e8]]></str></arr> <arr name="attr_dc_description"><str><![CDATA[Takimata sanctus est]]></str></arr> </doc> </result> </response>