Algolia autocomplete search by range date?

Hi,

So I have a database with this kind of structure:

I have a search bar:

<div class="collapse navbar-collapse" id="search">
  <div class="aa-input-container navbar-right" id="aa-input-container">
    <input type="search" id="aa-search-input" class="aa-input-search" placeholder="Search for business or films..." name="search"  autocomplete="off" />
    <svg class="aa-input-icon" viewBox="654 -372 1664 1664">
      <path d="M1806,332c0-123.3-43.8-228.8-131.5-316.5C1586.8-72.2,1481.3-116,1358-116s-228.8,43.8-316.5,131.5  C953.8,103.2,910,208.7,910,332s43.8,228.8,131.5,316.5C1129.2,736.2,1234.7,780,1358,780s228.8-43.8,316.5-131.5  C1762.2,560.8,1806,455.3,1806,332z M2318,1164c0,34.7-12.7,64.7-38,90s-55.3,38-90,38c-36,0-66-12.7-90-38l-343-342  c-119.3,82.7-252.3,124-399,124c-95.3,0-186.5-18.5-273.5-55.5s-162-87-225-150s-113-138-150-225S654,427.3,654,332  s18.5-186.5,55.5-273.5s87-162,150-225s138-113,225-150S1262.7-372,1358-372s186.5,18.5,273.5,55.5s162,87,225,150s113,138,150,225  S2062,236.7,2062,332c0,146.7-41.3,279.7-124,399l343,343C2305.7,1098.7,2318,1128.7,2318,1164z" />
    </svg>
  </div>
</div>

and js:

var client = algoliasearch('dasd', 'sdad');
var businesses = client.initIndex('businesses');
var films = client.initIndex('films');
var events = client.initIndex('events');

autocomplete('#aa-search-input', {}, [
  {
    source: autocomplete.sources.hits(businesses, { hitsPerPage: 3 }),
    displayKey: 'name',
    templates: {
      header: '<div class="aa-suggestions-category">Businesses</div>',
      suggestion: function(suggestion) {
        return (
          '<span>' +
          suggestion._highlightResult.name.value +
          '</span><span>' +
          suggestion._highlightResult.type.value +
          '</span>'
        );
      },
    },
  },
  {
    source: autocomplete.sources.hits(films, { hitsPerPage: 3 }),
    displayKey: 'title',
    templates: {
      header: '<div class="aa-suggestions-category">Films</div>',
      suggestion: function(suggestion) {
        return (
          '<span>' +
          suggestion._highlightResult.title.value +
          '</span><span>' +
          suggestion._highlightResult.business.name.value +
          '</span>'
        );
      },
    },
  },
  {
    source: autocomplete.sources.hits(events, { hitsPerPage: 3 }),
    displayKey: 'title',
    templates: {
      header: '<div class="aa-suggestions-category">Events</div>',
      suggestion: function(suggestion) {
        return (
          '<span>' +
          suggestion._highlightResult.startdate.value +
          '</span><span>' +
          suggestion._highlightResult.endate.value +
          '</span>'
        );
      },
    },
  },
]);

What I want to do is search ‘events’ index by a range of dates. What I mean is if startdate is 2017-07-03 and endate is 2017-07-05, if I enter 2017-07-04 it will still bring me back that record. Is this possible in Algolia?

What you can do, is storing the date as a unix timestamp. That way you can get a range for valid dates that you set somewhere in the page. On the last source, you’ll change the source to this:

// ...
autocomplete.sources.hits(events, {
  hitsPerPage: 3,
  filters: '1499212800000 TO 1499670325605',
})
//...

Those two timestamps can be generated from new Date('2017-07-05').getTime(), or any other mechanism you need.

Does that give you some pointers to work with?

Read more on the documentation as well.