Skip to content

Instantly share code, notes, and snippets.

Oliver Nightingale olivernn

  • Cape Town
Block or report user

Report or block olivernn

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View gist:d391654b68f9ad0b145590a21c0714ed
require 'delegate'
class Series < SimpleDelegator
def self.of(*xs)
new(xs)
end
def mean
@mean ||= sum / size.to_f
end
@olivernn
olivernn / lunr.js
Created Jul 6, 2015
lunr-issue-162
View lunr.js
/**
* lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 0.5.10-issue162
* Copyright (C) 2015 Oliver Nightingale
* MIT Licensed
* @license
*/
;(function(){
/**
@olivernn
olivernn / Readme.md
Created Jun 8, 2013
Getting started with lunr
View Readme.md

Getting Started with Lunr

There are two ways to use lunr to index some documents, The simplest way is to just build the index client side each time the page is loaded. search.js shows an example of this.

If your data is relatively static it might be more efficient to generate the index server side and then load this on each page load, your can see an example of generating the index in node in builder.js.

You can load a serialised index like this:

var idx = lunr.Index.load(JSON.parse(json_string))
@olivernn
olivernn / lunr.contraction_filter.js
Created Jan 19, 2016
Better handling of English contractions in lunr.
View lunr.contraction_filter.js
lunr.contractionTrimmer = function (token) {
return token.replace(/('ve|n't|'d|'ll|'ve|'s|'re)$/, "")
}
lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'contractionTrimmer')
var englishContractions = function (idx) {
idx.pipeline.after(lunr.trimmer, lunr.contractionTrimmer)
}
@olivernn
olivernn / set_test.rb
Last active Apr 5, 2017
Ruby Set#include? strangeness
View set_test.rb
require 'minitest/autorun'
require 'set'
class Foo
def initialize(s)
@s = s
end
def ==(other)
@s == other
View idx.json
{"version":"2.0.0-alpha.5","averageDocumentLength":10.5,"b":0.75,"k1":1.2,"fields":["name","content","person"],"documentVectors":[["-KgJdlp7WdeQO16yUyMd",[0,0.25774058577405856,1,0.25774058577405856,2,0.25774058577405856,3,0.25774058577405856,4,0.9112426035502958,5,0.18224852071005918,6,0.18224852071005918,7,0.9112426035502958,8,0.9112426035502958]],["-KgJhVbn3E_r8TqMyrP3",[5,0.22158273381294966,6,0.22158273381294966,9,0.2947368421052632,10,0.2947368421052632,11,1.1079136690647482,12,1.1079136690647482]]],"invertedIndex":[["ce",{"_index":2,"name":{"-KgJdlp7WdeQO16yUyMd":{}},"content":{"-KgJdlp7WdeQO16yUyMd":{}},"person":{}}],["connard",{"_index":1,"name":{"-KgJdlp7WdeQO16yUyMd":{}},"content":{"-KgJdlp7WdeQO16yUyMd":{}},"person":{}}],["droit",{"_index":10,"name":{"-KgJhVbn3E_r8TqMyrP3":{}},"content":{"-KgJhVbn3E_r8TqMyrP3":{}},"person":{}}],["et",{"_index":11,"name":{},"content":{"-KgJhVbn3E_r8TqMyrP3":{}},"person":{}}],["jacqu",{"_index":5,"name":{},"content":{},"person":{"-KgJdlp7WdeQO16yUyMd":{},"-KgJhVbn3E
@olivernn
olivernn / output
Created Oct 21, 2016
RubyWat Implicit String Concatenation
View output
'abc'
[:program,
[[:string_literal, [:string_content, [:@tstring_content, "abc", [1, 1]]]]]]
'a' 'b' 'c'
[:program,
[[:string_concat,
[:string_concat,
[:string_literal, [:string_content, [:@tstring_content, "a", [1, 1]]]],
[:string_literal, [:string_content, [:@tstring_content, "b", [1, 5]]]]],
View gist:1129339
<script src="http://raphaeljs.com/raphael.js" type="text/javascript" charset="utf-8"></script>
<style type="text/css" media="screen">
body {
background-color: black;
color: white;
font-family: helvetica;
}
#display {
@olivernn
olivernn / Search.md
Created Jan 25, 2016
Lunr full text search on facets for faceted search
View Search.md

So many of your fields look like tags or facets, e.g. sector or market, so you full text search might not be the best way to search on these.

Instead if you had full text search on the tags themselves, e.g. full text search on all the possible values for sector or market, and then, with the resuts of this tag lookup, go and find companies that have this tag. The facted search, lookup by tags (or groups of tags) isn't really lunr's forte, but you could certainly use it for full text search of the tags.

var idx = lunr(function () {
  this.ref('id')
  this.field('name')
})
  
View colors.html
<body>
<script>
var randInRange = function (min, max) {
var range = max - min
return min + (Math.random() * range)
}
var HSL = function (h, s, l) {
this.h = h, this.s = s, this.l = l
You can’t perform that action at this time.