Installation wie hier: eZ+Find+Demystified+-+Installing+and+configuring+a+multi-core+Solr-eZ+Find+2.6+instance+with+eZ+Tika beschrieben.Dann im ../htdocs/solr/java - Folder solr starten mit:java -Dezf
Installation wie hier: eZ+Find+Demystified+-+Installing+and+configuring+a+multi-core+Solr-eZ+Find+2.6+instance+with+eZ+Tika beschrieben.
Dann im ../htdocs/solr/java - Folder solr starten mit:
java -Dezfind -Dsolr.solr.home=/usr/local/zend/apache2/htdocs/solr/cores -server -d64 -Xmx768m -Xms768m -XX:+UseParallelGC -XX:+AggressiveOpts -XX:NewRatio=5 -jar start.jar
Indexing aus dem Server-(ezpublish)-Verzeichnis starten mit:
php extension/ezfind/bin/php/updatesearchindexsolr.php -s your_admin_siteaccess
WICHTIG:wenn der Index neu erzeugt werden soll, reicht es nicht, nur das index-Verzeichnis zu leeren. Solr VERWEIGERT DANACH DEN DIENST. Dieses muß auch gelöscht werden (also nur das data-Dir übrig lassen). Danach wird der index beim Startup neu erzeugt und es kann re-indiziert werden.
Im ezfind/bin/scripts- Verzeichnis finden sich startup-Scripte für diverse Linux-Distributionen, um solr als Service einzurichten.
Wenn eine multicore-Installation vorgenommen wurde, kann das solr-Admininterface (nicht in Chrome!!) im Browser gestartet werden:
http://localhost:8983/solr/y2/admin/
Hier kann man direkt Queries testen. Folgende Query zeigt z.B. ein XML-Resultset, das zeigt, welche Attribute von solr durchsucht werden können:
meta_main_node_id_si:2718
Das Resultset sieht so aus:
Man erkennt dann, daß das Feld attr_publish_date_dt vorhanden ist, was dem eZ-Attribute article/published_date (data_map-Attribut!) entspricht.Um Datumsabfragen zu testen könnte man z.B. folgenden Querystring in der Adminkonsole eingeben:
attr_publish_date_dt:[1970-01-01T00:00:01Z/DAY TO 2013-12-31T23:59:59Z/DAY+1DAY ]
Wenn das Resultset dem erwünschten Resultat entspricht, kann der ezfind-Fetch z.B. so aussehen:
{set $search = fetch('ezfind', 'search', hash(
'query', '',
'query_handler', 'ezpublish',
'class_id', array('article','image','file','flash_player'),
'limit', '99',
'sort_by', hash('published', 'desc'),
'subtree_array', array($node.node_id),
'filter', array( 'or',
array(concat('file/publish_date:[',$sstart,'/DAY TO ',$send,'/DAY+1DAY ]')),
array(concat('image/publish_date:[',$sstart,'/DAY TO ',$send,'/DAY+1DAY ]')),
array(concat('flash_player/publish_date:[',$sstart,'/DAY TO ',$send,'/DAY+1DAY ]')),
array(concat('folder/publish_date:[',$sstart,'/DAY TO ',$send,'/DAY+1DAY ]')),
)
))
}
Datumsabfragen müssen solr in einem bestimmten Format übergeben werden, in älteren eZ-Publish-Installationen muß man sich hierfür einen Templateoperator bauen, in neueren sollte es ein datetime-preset dafür geben, testen mit: {currentdate()|datetime('solr')}
Um das Resultat anzuzeigen ist nur noch ein Zwischenschritt nötig:
{set $result = $search['SearchResult']}
Darüber kann geloopt werden:
<h2>ezfind Suche ergab {$search['SearchCount']} Treffer</h2>
{foreach $result as $node}
{node_view_gui view='line' content_node=$node}
{/foreach}
Wie man sieht, liefert der Fetch-Array noch andere Items, u.a. den Count und nicht nur die Nodes.