Attribute Filter on Date

Author Message

A Costello

Monday 16 March 2009 12:09:13 am

Our search results currently show articles before they are available to the general public. To control when items are visible there is a publish_date that is set by our editors.

I have not had any success with this thus far. My best guess is I would filter on the publish date (although I worry this will lose the search capabilities on other classes?). From the documentation the only way I can think to try is:
'filter', 'article/publish_date:[* TO 1237186789]' (where 1237... is the current timestamp). I built the filter using concat

{def $filter = concat('article/publish_date:[* TO ', currentdate() ,']')}

With the

    {set $search=fetch( ezfind,search,
                        hash( 'query', $search_text,
                              'filter', array($filter),
                              'offset', $view_parameters.offset,
                              'limit', $page_limit,
                              'sort_by', hash( 'score', 'desc' ),
                              'facet', $facetParameters ))}

If this worked (which it doesn't) I worry that the results will still be unacceptable since all other classes are lost.

Any help would be greatly appreciated.

Greg Lakomy

Monday 16 March 2009 10:30:09 am

Hi,

I need to filter on a date attribute as well. I've used concat() to build a filter which ends up in this format: "event_page/event_start_date:[1237179600 TO 1239816199]"
But, it doesn't seem to work either.

Any solutions?

Greg.

Developer
http://www.duoconsulting.com

Greg Lakomy

Monday 16 March 2009 11:16:44 am

I found a solution. See this page for more details http://wiki.apache.org/solr/SolrQuerySyntax

Here is my code that works:

{set $search = fetch( ezfind, search,
		hash( 'query', $search_text,
		'sort_by', hash('event_page/event_start_date', asc),
		'offset', $view_parameters.offset,
		'section_id', 10,
		'subtree_array', $search_subtree_array,
		'filter', 'event_page/event_end_date:[NOW TO NOW/DAY+30DAY]',
		'class_id', array( '48' ),
		'class_attribute_id', $search_field,
		'limit', $page_limit ) ) }

Developer
http://www.duoconsulting.com

A Costello

Monday 16 March 2009 3:24:18 pm

Very much appreciated.
I am very hopeful as the information in that link and your example look great.

Paul Borgermans

Monday 16 March 2009 4:24:15 pm

Since eZ Find 2.0, dates you specify explicitly need to be in in a dedicated format, ISO 8601 Date (more or less)

example: 20089-03-17T23:59:59.999Z

You can use the template operators to construct a date from a timestamp returned by published date or other source

The Solr syntax date math constructs are indeed pretty powerful ... like the rest of Solr

hth
Paul

eZ Publish, eZ Find, Solr expert consulting and training
http://twitter.com/paulborgermans

Sylvain Gogel

Wednesday 25 March 2009 2:18:15 am

very nice,
can i use this
'filter', 'event_page/event_end_date:[NOW TO NOW/DAY+30DAY]'

for the published attribute? i.e. something not in the data_map?

--
http://www.ecedi.fr
Agence Web, Créa/Conseils, Accessibilité
eZPublish, Drupal, Zend, Symfony

Sylvain Gogel

Friday 27 March 2009 10:35:17 am

Works with $node.published!!

{def $searchHash = hash(
	'query', $search_text,
	'offset', $view_parameters.offset,
	'limit', $page_limit,
	'sort_by', hash('published', 'desc', 'relevance', 'desc' ),
	'spell_check', array( true(), 'default' ),
	'section_id', ezini('SectionSettings', 'StandardSectionId', 'content.ini')),
        'filter' 'published:[NOW-90DAY TO NOW/DAY+1DAY]'}

{set $search_data = fetch( 'ezfind', 'search', $searchHash)}

--
http://www.ecedi.fr
Agence Web, Créa/Conseils, Accessibilité
eZPublish, Drupal, Zend, Symfony

Philipp Kamps

Friday 15 October 2010 5:25:05 am

"

Since eZ Find 2.0, dates you specify explicitly need to be in in a dedicated format, ISO 8601 Date (more or less)

example: 20089-03-17T23:59:59.999Z

You can use the template operators to construct a date from a timestamp returned by published date or other source

The Solr syntax date math constructs are indeed pretty powerful ... like the rest of Solr

hth
Paul

"

Would be nice if the ezfind extension would have a function which translate a unix timestamp to the ISO 8601 date format.

The PHP interpretation of ISO 8601 "date( 'c' )" doesn't work.

http://www.mugo.ca
Mugo Web, eZ Partner in Vancouver, Canada

Richard Bayet

Monday 22 November 2010 10:23:36 am

"

Would be nice if the ezfind extension would have a function which translate a unix timestamp to the ISO 8601 date format.

The PHP interpretation of ISO 8601 "date( 'c' )" doesn't work.

"

In eZ Find 2.2 (haven't check in previous version), it does.

extension/ezfind/classes/ezfsolrdocumentfieldbase.php

/**
     * Convert timestamp to Solr date
     * See also: http://www.w3.org/TR/xmlschema-2/#dateTime
     *
     * @param int Timestamp
     *
     * @return string Solr datetime
     */
    static function convertTimestampToDate( $timestamp )
    {

        return strftime( '%Y-%m-%dT%H:%M:%S.000Z', (int)$timestamp );
    }

It's used internaly by ezfSolrDocumentFieldBase::preProcessValue from ezfeZPSolrQueryBuilder::buildSearch when a "SearchDate" param is passed to the fetch.

Regards.

Ronan Guilloux

Tuesday 26 April 2011 3:29:48 am

Here is an example to fetch today's events with mandatory from / to dates,

{def
$picked_date_array = ezhttp('choisissez_votre_jour','get')|explode('/')
$date_to_now = sum(-86400, maketime( 23,59,59, $picked_date_array.1, $picked_date_array.0, $picked_date_array.2))|datetime( 'custom', '%Y-%m-%dT%H:%i:%s.000Z' )

$date_from_now = maketime( 0,0,1, $picked_date_array.1, $picked_date_array.0,$picked_date_array.2)|datetime( 'custom', '%Y-%m-%dT%H:%i:%s.000Z' )

$filter_date_to_now = concat( 'date/from_date:[* TO ', $date_to_now, ']' )
$filter_date_from_now = concat( 'date/to_date:[', $date_from_now,' TO *]' )
$event_list = fetch( 'ezfind', 'search', hash( 'class_id', array('event', 'date'), 'sort_by', hash( 'date/from_date', 'asc' ), 'filter', array(and,$filter_date_to_now, $filter_date_from_now) ) )

}

--
Ronan Guilloux

Powered by eZ Publish™ CMS Open Source Web Content Management. Copyright © 1999-2014 eZ Systems AS (except where otherwise noted). All rights reserved.