Need help with limestone?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

kurokikaze
128 Stars 21 Forks 138 Commits 12 Opened issues

Description

Sphinx connector for Node.js

Services available

!
?

Need anything else?

Contributors list

# 343,198
JavaScr...
HTML
69 commits
# 200,226
Heroku
invoici...
Rails
HTML
29 commits
# 413,665
knockou...
JavaScr...
validat...
HTML
3 commits
# 76,344
Go
JavaScr...
cloud-i...
centos
2 commits
# 762,549
JavaScr...
1 commit
# 17,475
port-fo...
React
ruby-on...
TypeScr...
1 commit

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

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.