Home

Awesome

NPM version NPM downloads MIT License Build Status Join the chat at https://gitter.im/fergiemcdowall/search-index

      ___           ___           ___           ___           ___      
     /\__\         /\  \         /\  \         /\  \         /\__\     
    /::|  |       /::\  \       /::\  \       /::\  \       /:/  /     
   /:|:|  |      /:/\:\  \     /:/\:\  \     /:/\:\  \     /:/__/      
  /:/|:|  |__   /:/  \:\  \   /::\~\:\  \   /:/  \:\  \   /::\  \ ___  
 /:/ |:| /\__\ /:/__/ \:\__\ /:/\:\ \:\__\ /:/__/ \:\__\ /:/\:\  /\__\ 
 \/__|:|/:/  / \:\  \ /:/  / \/_|::\/:/  / \:\  \  \/__/ \/__\:\/:/  / 
     |:/:/  /   \:\  /:/  /     |:|::/  /   \:\  \            \::/  /  
     |::/  /     \:\/:/  /      |:|\/__/     \:\  \           /:/  /   
     /:/  /       \::/  /       |:|  |        \:\__\         /:/  /    
     \/__/         \/__/         \|__|         \/__/         \/__/     

Deploy

npm install norch and then start with norch

or programatically:

require('norch')(options, function(err, norch) {
  // Norch server started on http://localhost:3030 (or the specified host/port)
})

Put stuff in

curl -X POST -d @myData.json http://localhost:3030/add (where myData.json is a newline separated file of JSON objects)

Search for hits (uses search-index's API)

http://localhost:3030/search?q={"query":[{"AND":{"*":["usa"]}}]}

(http://localhost:3030/search returns everything)

Make autosuggest

http://localhost:3030/matcher?q=usa

Export, import, and replicate an index

# create a snapshot on the server (available under /latestSnapshot)
curl -X POST http://localhost:3030/snapshot
# get latest snapshot
curl -X GET http://anotherIndex:3030/latestSnapshot > export.json
# replicate an export file into a new index on another server
curl -X POST -d @export.json http://someOtherServer:3030/import

API

EndpointMethodResponseTypical Use Case
/addPOSTstatus codeAdd documents to the index
/availableFieldsGETstreamDiscover the name of fields which can be searched in
/bucketsGETstreamAggregate documents on ranges of metadata
/categorizeGETstreamAggregate documents on single metadata values
/concurrentAddPOSTstatus codeFor when more than one source is adding documents to the index at the same time
/createSnapshotPOSTstatus codeCreate a snapshot of the index
/deleteDELETEstatus codeRemove documents from index
/docCountGETobjectCounts total document in index
/flushDELETEstatus codeRemove all documents from index
/getGETstreamGet documents by ID
/importPOSTfileImport/merge an existing index into this one
/latestSnapshotGETfileDownload the latest index snapshot
/listSnapshotsGETfileSee list of snapshots
/matchGETstreamMatch by linguistic similarity- autosuggest, autocomplete
/searchGETstreamSearch in the index
/totalHitsGETobjectShow number of hits that a given query returns

The Norch API docs are here. Norch is essentially an http wrapper around search-index.

About Norch

Norch.js is an experimental search engine built with Node.js and search-index featuring, Full text search, Stopword removal, aggregation Matching (Autosuggest), Phrase search, Fielded search, Field weighting, Relevance weighting (tf-idf), Paging (offset and resultset length)

Logging

On Linux and OSX. Install bunyan, tail the log-file and pipe to bunyan.

Install bunyan:

npm install -g bunyan

Tail log-file:

tail -f log-info.log |bunyan

Mailing list: norchjs@googlegroups.com - subscribe by sending an email to norchjs+subscribe@googlegroups.com

License

MIT, Copyright (c) 2013-16 Fergus McDowall