limestone

by kurokikaze

kurokikaze /limestone

Sphinx connector for Node.js

128 Stars 21 Forks Last release: Not found 138 Commits 3 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

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.