diff options
| author | Christian Weiske <cweiske@cweiske.de> | 2016-08-30 08:05:00 +0200 |
|---|---|---|
| committer | Christian Weiske <cweiske@cweiske.de> | 2016-08-30 08:05:00 +0200 |
| commit | 59f931647a2b4a13be20ba8f2baa4ec93e334ee5 (patch) | |
| tree | cacf6c1e152772e74d616aeb753a94d56dc2ec7a /src/phinde | |
| parent | 210a7ec82c46ed6e410f80be4b1149f5295b1306 (diff) | |
| download | phinde-59f931647a2b4a13be20ba8f2baa4ec93e334ee5.tar.gz phinde-59f931647a2b4a13be20ba8f2baa4ec93e334ee5.zip | |
Add support for modification date queries: "before:", "after:" and "date:"
Resolves: #4
Diffstat (limited to 'src/phinde')
| -rw-r--r-- | src/phinde/Elasticsearch.php | 66 |
1 files changed, 52 insertions, 14 deletions
diff --git a/src/phinde/Elasticsearch.php b/src/phinde/Elasticsearch.php index 96a769b..4035861 100644 --- a/src/phinde/Elasticsearch.php +++ b/src/phinde/Elasticsearch.php @@ -79,6 +79,57 @@ class Elasticsearch ); } + $qMust = array();//query parts for the MUST section + + //modification date filters + if (preg_match('#after:([^ ]+)#', $query, $matches)) { + $dateAfter = $matches[1]; + $query = trim(str_replace($matches[0], '', $query)); + $qMust[] = array( + 'range' => array( + 'modate' => array( + 'gt' => $dateAfter . '||/d', + ) + ) + ); + } + if (preg_match('#before:([^ ]+)#', $query, $matches)) { + $dateBefore = $matches[1]; + $query = trim(str_replace($matches[0], '', $query)); + $qMust[] = array( + 'range' => array( + 'modate' => array( + 'lt' => $dateBefore . '||/d', + ) + ) + ); + } + if (preg_match('#date:([^ ]+)#', $query, $matches)) { + $dateExact = $matches[1]; + $query = trim(str_replace($matches[0], '', $query)); + $qMust[] = array( + 'range' => array( + 'modate' => array( + 'gte' => $dateExact . '||/d', + 'lte' => $dateExact . '||/d', + ) + ) + ); + } + + $qMust[] = array( + 'query_string' => array( + 'default_field' => '_all', + 'default_operator' => 'AND', + 'query' => $query + ) + ); + $qMust[] = array( + 'term' => array( + 'status' => 'indexed' + ) + ); + if ($sort == 'date') { $sortCfg = array('modate' => array('order' => 'desc')); } else { @@ -98,20 +149,7 @@ class Elasticsearch ), 'query' => array( 'bool' => array( - 'must' => array( - array( - 'query_string' => array( - 'default_field' => '_all', - 'default_operator' => 'AND', - 'query' => $query - ) - ), - array( - 'term' => array( - 'status' => 'indexed' - ) - ), - ) + 'must' => $qMust ) ), 'highlight' => array( |
