Limestone
Sphinx connector for Node.js
Install / Use
/learn @kurokikaze/LimestoneREADME
Limestone is a Sphinx search server connector for Node.js
Usage:
var limestone = require("./limestone").SphinxClient(),
limestone.connect(9312, // port. 9312 is standard Sphinx port. also 'host:port' allowed
function(err) { // callback
if (err) {
console.log('Connection error: ' + err.message);
process.exit();
}
console.log('Connected, sending queries');
limestone.query('test', function(err, answer) { // Simple query
console.log('Simple query returned ' + answer.match_count + 'results');
});
limestone.query( // Query with options
{'query':'test', maxmatches:1},
function(err, answer) {
limestone.disconnect();
console.log("Extended search for 'test' yielded " +
answer.match_count + " results: " +
JSON.stringify(answer));
});
});
To Use Build_Excerpts:
limestone.connect(9312, // port
function(err) { //callback
if (err) {
console.log('Connection error: ' + err);
}
console.log('Connected Build Excerpts');
limestone.build_excerpts(
[
'this is my teste text to be highlighted',
'this is another test text to be highlighted'
], // docs
'questions_1',
'test text',
{},
function(err, answer) {
limestone.disconnect();
console.log(JSON.stringify(answer));
}
);
}
);
Bonus: persistent connection: You can ask sphinx to open a persistent connection. You can then make several request through the same connection
limestone.connect(9312, // port
true, // persistent (optional)
function(err) { // callback
if (err){
console.log('Connection error: ' + err);
}
console.log('Connected Search');
console.log('sending query');
limestone.query({
'query' : 'test', // query object with sphinx options
'maxmatches' : 1,
'indexes':'questions_1,products_3'},
function(err, answer){ // callback
console.log('Extended search yielded ' +
answer.match_count + " results\n" +
JSON.stringify(answer));
limestone.build_excerpts([
'this is my test text to be highlighted',
'this is another test text to be highlighted'
], // docs
'questions_1', // index
'test text', // words
{},
function(err, answer){
limestone.disconnect();
console.log(JSON.stringify(answer));
}
);
}
);
}
);
Limestone is queueing now: You can safely call limestone.query or limestone.build_excerpts methods outside the scope of the callback functions, provided the connection is made persistent. Limestone will enqueue the sphinx commands and run them sequentially.
This works:
limestone.connect(9312, // port. 9312 is standard Sphinx port
function(err) { // callback
...
limestone.query(
{'query':'test', maxmatches:1},
function(err, answer) {
....
});
});
limestone.query({'second query':'test'}, function(err, answer){..}); // won't crash with previous
Related Skills
node-connect
349.2kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
109.5kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
349.2kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
349.2kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
