Docsearch instantsearch

by maxiloc

HTML

<head>
<title>Docsearch Instant Search Demo</title>
  <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/bootstrap/3.3.7/css/bootstrap.min.css">
  <link rel="stylesheet" type="text/css" href="https://cdn.jsdelivr.net/instantsearch.js/1/instantsearch.min.css">
</head>
  <body>
	  <nav class="navbar navbar-default">
		  <div class="container-fluid">
		    <div class="navbar-header">
		      <a class="navbar-brand" href="#">Docsearch Instant Search Demo</a>
		    </div>
		  </div>
		</nav>
  	<div class="container">
		<div id="ais-input-container" class="col-md-4 col-md-offset-4"></div>
	</div>
	<div class="container">
		<div id="ais-results-container"></div>
		<div id="ais-pagination-container"></div>
	</div>

	<script type="text/template" id="ais-results-template">
		<div class="ais-result">
			{{#hierarchy.lvl0}}
			<div class="ais-lvl0">
				{{{_highlightResult.hierarchy.lvl0.value}}}
			</div>
			{{/hierarchy.lvl0}}

			<div class="ais-lvl1">
				{{#hierarchy.lvl1}}
					{{{_highlightResult.hierarchy.lvl1.value}}}
				{{/hierarchy.lvl1}}

				{{#hierarchy.lvl2}}
					> {{{_highlightResult.hierarchy.lvl2.value}}}
				{{/hierarchy.lvl2}}

				{{#hierarchy.lvl3}}
					> {{{_highlightResult.hierarchy.lvl3.value}}}
				{{/hierarchy.lvl3}}

				{{#hierarchy.lvl4}}
					> {{{_highlightResult.hierarchy.lvl4.value}}}
				{{/hierarchy.lvl4}}
			</div>
			<div class="ais-content">
				{{{#content}}}
					{{{_highlightResult.content.value}}}
				{{{/content}}}
			</div>
		</div>
	</script>

	<script src="https://cdn.jsdelivr.net/jquery/3.1.1/jquery.min.js"></script>
  <script src="https://cdn.jsdelivr.net/instantsearch.js/1/instantsearch.min.js"></script>
  </body>

CSS

#ais-results-container .algolia-docsearch-suggestion--highlight {
    background-color: rgba(89, 165, 234, 0.2);
}

.ais-content {
  color: #63676d;
}

.ais-lvl0 {
  color: black;
  font-size: 1.1em
}


#ais-input-container input {
  width: 100%;
  padding: 8px 16px;
  border-radius: 3px;
  box-shadow: none;
  border: solid 1px #ddd;
}

.ais-result {
  margin-bottom: 15px;
  border-left: solid 1px #ddd;
  padding-left: 10px;
}

input:focus{
  outline: none;
}

JavaScript

$('document').ready(function () {
		var search = instantsearch({
		  appId: 'BH4D9OD16A',
		  apiKey: 'c25b7174e8f6161ce5fdd44bb0b95081',
		  indexName: 'buckbuild',
		  urlSync: true
		});

		search.addWidget(
		  instantsearch.widgets.searchBox({
		    container: '#ais-input-container',
		    placeholder: 'Search in the documentation',
		    autofocus: false,
		    poweredBy: true
		  })
		);

		search.addWidget(
		  instantsearch.widgets.hits({
		    container: '#ais-results-container',
		    templates: {
		      empty: 'No results',
		      item: $('#ais-results-template').html()
		    },
		    hitsPerPage: 6
		  })
		);

		search.addWidget(
		  instantsearch.widgets.pagination({
		    container: '#ais-pagination-container',
		    maxPages: 20,
		    // default is to scroll to 'body', here we disable this behavior
		    scrollTo: false
		  })
		);

		search.start();
	});