Freetext Search
Testing free text search execution times on a collection of 95 strings each ~3500 words in length.
by sdgluck
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/Faker/3.0.1/faker.min.js"></script>
<input type="text" placeholder="Search..." />
<div></div>
<ul></ul>
JavaScript
"use strict";
$(document).ready(function() {
let $ul = $('ul');
let $div = $('div');
let data = [];
makeData(95);
$('input').on('keyup', function() {
let query = $(this).val();
let now = Date.now();
$ul.empty();
if(query.length) {
for(let i = 0; i < data.length; i++) {
let item = data[i];
if(
item.title.indexOf(query) > -1 ||
item.description.indexOf(query) > -1 ||
item.details.indexOf(query) > -1
) {
$ul.append('<li>' + item.title.substring(0, 50) + '...</li>');
}
}
}
$div.html(
'queried in ' + (Date.now() - now) / 1000 + ' seconds<br>' +
$ul.children().length + ' results'
);
});
function makeData(num) {
let lorem = "";
for(let i = 0; i < 4; i++) {
lorem += faker.lorem.paragraphs();
}
data.push({
title: lorem.substring(0, 250),
description: lorem.substring(0, 250),
details: lorem.substring(0, 2500)
});
if(--num) {
makeData(num);
}
}
});