Skip to content

Repository files navigation

#solr-client - a node.js solr client ![Gitter](https://badges.gitter.im/Join Chat.svg)

Dependency Status

NPM

##Install

npm install solr-client

##Features

###Latest (0.6.0)

  • Solr5 Query-Highlighting support through StandardHighlighter (@LukeTaverne) (lbdremy#144)
  • Experimental support for SolrCloud collections administration (@LukeTaverne) (lbdremy#138)
  • Support for large query through POST via configurable automatic switch (@kfitzgerald) (lbdremy#129)
  • Set Default Field (query.df()) (@cbarrientos-ias) (lbdremy#137)
  • Adds support for facet.pivot and facet.pivot.mincount (@nicolasembleton) (lbdremy#146)

Noticeable change: You can now pass a solrVersion to the Client initialization so it will activate features that are only supported by your version or higher. Be sure to check the documentation

###0.5.0

  • Commands supported: search(select), add, delete, update, commit, rollback, optimize, ping, real-time get, prepare commit, soft commit, arbitrary search handler (i.e: mlt, luke ...)
  • Lucene query / DisMax query
  • Grouping / Field Collapsing. (Apache Solr version must be >= 3.3)
  • Convenients methods for querying with Facet, MoreLikeThis
  • HTTP Basic Access Authentication
  • Over HTTPS as well
  • Use json-bigint to handle correctly numbers too large for Javascript Number such as the values of the fields *_l and _version_. By default json-bigint library is not used because the performance difference compared to the native JSON library is too important with "large" chunk of JSON (lbdremy#114 (comment)), but you want to enable it if you use the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features because they use the _version_ field. In order to enable it do var client = solr.createClient({ bigint : true}) or directly on the client instance client.options.bigint = true.

##Documentation

See the website at http://lbdremy.github.com/solr-node-client/.

##Usage

// Load dependencyvarsolr=require('solr-client');// Create a clientvarclient=solr.createClient();// Add a new documentclient.add({id : 12,title_t : 'Hello'},function(err,obj){if(err){console.log(err);}else{console.log('Solr response:',obj);}});

##Migration between 0.5.x and 0.6.x

No breaking change has been introduced to this release. However, to take advantage of facet.pivot and facet.pivot.mincount feature, you'll need to pass a solrVersion parameter to the createClient() method.

Example:

// Will activate features specific to Solr4.0 and above (like facet.pivot and facet.pivot.mincount)varclient=solr.createClient({solrVersion: '4.0'});

A feature allowing to support large queries by switching to POST when the query size reaches the threshold was introduced. To not become a breaking change, it is by default turned OFF.

To activate it, pass the property get_max_request_entity_size to the createClient with the threshold in bytes. Minimum is 1.

Example:

// Will switch to POST as soon as the query size reaches 1000 bytes (limit in servers is usually 2048 or 8192) // You can set it to 1 so every request will always use POST. varclient=solr.createClient({get_max_request_entity_size: 1000});

##Migration between 0.4.x and 0.5.x

The only breaking change introduced in 0.5.x is introduced in this commit 3cbc7fc6cf631f019a4626913c0a4b616092133b which remove escaping of the Solr special characters in some of the methods of the Query class i.e in Query#rangeFilter, Query#matchFilter, Query#group, Query#facet, Query#mlt if you were relying on this behavior just wrap the arguments you passed to those methods into the solr.escapeSpecialChars(arg) method.

For example, for some weird reason you wanted to escape the special char *, don't ask me ;)

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : '*'})

You still can:

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : solr.escapeSpecialChars('*')})

Post an issue if you have troubles migrating to v0.5.0.

##Migration between 0.3.x and 0.4.x

The only breaking change introduced in 0.4.x is about JSON serialization/deserialization of numbers too large for Javascript Number type. If you were using the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features which use the _version_ field or *_l type fields you are affected about this change otherwise you are just fine.

If you affected in order to fix that just initialize your client with the bigint flag set to true:

varclient=solr.createClient({bigint : true});

or directly on the Client instance:

client.options.bigint=true;

Post an issue if you have troubles migrating to v0.4.0.

##Migration between 0.2.x and 0.3.x

The only breaking change introduced in v0.3.0 is about method chaining of the solr Client. Method chaining as simply been removed because we were actually hidding something really interesting and useful the http.ClientRequest instance.

So, before you could have done this:

varclient=solr.createClient();client.search('q=hello',function(err,obj){console.log(err,obj);}).search('q=world',function(err,obj){console.log(err,obj);});

Now it won't work, but you have now access to the http.ClientRequest instead created by Client#search:

varclient=solr.createClient();varrequest=client.search('q=hello',function(err,obj){console.log(err,obj);});request.setTimeout(200,function(){console.log('search timeout');});

Post an issue if you have troubles migrating to v0.3.0.

##Roadmap

###v0.3.x - v0.x.x

  • Test suite with mocha and chai instead of vows
  • Implement all features available in Solr 4 (SolrCloud API in particular)
  • Provide all low-level commands
  • Complete documentation

###v1.0.x

  • First stable version
  • the API is frozen until v2.0.x, only new features and bug fixes can be introduced

##Test

npm test

Tests are executed against a running SOLR instance, so you might want to:

  • install the schema.xml and solrconfig.xml expected by the tests. You find these in test/materials
  • make sure your solr instance is running
  • specifiy non-default connection params to your server in test/config.json You can inject these also on the command line through:
mocha test/*-test.js --client.core=test-node-client --client.port=8080

Test coverage

Before to be able to run the command below, you will need to install jscoverage available here https://github.com/visionmedia/node-jscoverage.

npm run-script test-cov

This command will generate a file named coverage.html, use your browser to visualize it.

Static analysis and complexity report

npm run-script report

##Licence

(The MIT License)

Copyright 2011-2012 HipSnip Limited

Copyright 2013-2014 Rémy Loubradou

About

A solr client for node.js.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - ltjin/solr-node-client: A solr client for node.js. · GitHub
Skip to content

Repository files navigation

#solr-client - a node.js solr client ![Gitter](https://badges.gitter.im/Join Chat.svg)

Dependency Status

NPM

##Install

npm install solr-client

##Features

###Latest (0.6.0)

  • Solr5 Query-Highlighting support through StandardHighlighter (@LukeTaverne) (lbdremy#144)
  • Experimental support for SolrCloud collections administration (@LukeTaverne) (lbdremy#138)
  • Support for large query through POST via configurable automatic switch (@kfitzgerald) (lbdremy#129)
  • Set Default Field (query.df()) (@cbarrientos-ias) (lbdremy#137)
  • Adds support for facet.pivot and facet.pivot.mincount (@nicolasembleton) (lbdremy#146)

Noticeable change: You can now pass a solrVersion to the Client initialization so it will activate features that are only supported by your version or higher. Be sure to check the documentation

###0.5.0

  • Commands supported: search(select), add, delete, update, commit, rollback, optimize, ping, real-time get, prepare commit, soft commit, arbitrary search handler (i.e: mlt, luke ...)
  • Lucene query / DisMax query
  • Grouping / Field Collapsing. (Apache Solr version must be >= 3.3)
  • Convenients methods for querying with Facet, MoreLikeThis
  • HTTP Basic Access Authentication
  • Over HTTPS as well
  • Use json-bigint to handle correctly numbers too large for Javascript Number such as the values of the fields *_l and _version_. By default json-bigint library is not used because the performance difference compared to the native JSON library is too important with "large" chunk of JSON (lbdremy#114 (comment)), but you want to enable it if you use the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features because they use the _version_ field. In order to enable it do var client = solr.createClient({ bigint : true}) or directly on the client instance client.options.bigint = true.

##Documentation

See the website at http://lbdremy.github.com/solr-node-client/.

##Usage

// Load dependencyvarsolr=require('solr-client');// Create a clientvarclient=solr.createClient();// Add a new documentclient.add({id : 12,title_t : 'Hello'},function(err,obj){if(err){console.log(err);}else{console.log('Solr response:',obj);}});

##Migration between 0.5.x and 0.6.x

No breaking change has been introduced to this release. However, to take advantage of facet.pivot and facet.pivot.mincount feature, you'll need to pass a solrVersion parameter to the createClient() method.

Example:

// Will activate features specific to Solr4.0 and above (like facet.pivot and facet.pivot.mincount)varclient=solr.createClient({solrVersion: '4.0'});

A feature allowing to support large queries by switching to POST when the query size reaches the threshold was introduced. To not become a breaking change, it is by default turned OFF.

To activate it, pass the property get_max_request_entity_size to the createClient with the threshold in bytes. Minimum is 1.

Example:

// Will switch to POST as soon as the query size reaches 1000 bytes (limit in servers is usually 2048 or 8192) // You can set it to 1 so every request will always use POST. varclient=solr.createClient({get_max_request_entity_size: 1000});

##Migration between 0.4.x and 0.5.x

The only breaking change introduced in 0.5.x is introduced in this commit 3cbc7fc6cf631f019a4626913c0a4b616092133b which remove escaping of the Solr special characters in some of the methods of the Query class i.e in Query#rangeFilter, Query#matchFilter, Query#group, Query#facet, Query#mlt if you were relying on this behavior just wrap the arguments you passed to those methods into the solr.escapeSpecialChars(arg) method.

For example, for some weird reason you wanted to escape the special char *, don't ask me ;)

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : '*'})

You still can:

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : solr.escapeSpecialChars('*')})

Post an issue if you have troubles migrating to v0.5.0.

##Migration between 0.3.x and 0.4.x

The only breaking change introduced in 0.4.x is about JSON serialization/deserialization of numbers too large for Javascript Number type. If you were using the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features which use the _version_ field or *_l type fields you are affected about this change otherwise you are just fine.

If you affected in order to fix that just initialize your client with the bigint flag set to true:

varclient=solr.createClient({bigint : true});

or directly on the Client instance:

client.options.bigint=true;

Post an issue if you have troubles migrating to v0.4.0.

##Migration between 0.2.x and 0.3.x

The only breaking change introduced in v0.3.0 is about method chaining of the solr Client. Method chaining as simply been removed because we were actually hidding something really interesting and useful the http.ClientRequest instance.

So, before you could have done this:

varclient=solr.createClient();client.search('q=hello',function(err,obj){console.log(err,obj);}).search('q=world',function(err,obj){console.log(err,obj);});

Now it won't work, but you have now access to the http.ClientRequest instead created by Client#search:

varclient=solr.createClient();varrequest=client.search('q=hello',function(err,obj){console.log(err,obj);});request.setTimeout(200,function(){console.log('search timeout');});

Post an issue if you have troubles migrating to v0.3.0.

##Roadmap

###v0.3.x - v0.x.x

  • Test suite with mocha and chai instead of vows
  • Implement all features available in Solr 4 (SolrCloud API in particular)
  • Provide all low-level commands
  • Complete documentation

###v1.0.x

  • First stable version
  • the API is frozen until v2.0.x, only new features and bug fixes can be introduced

##Test

npm test

Tests are executed against a running SOLR instance, so you might want to:

  • install the schema.xml and solrconfig.xml expected by the tests. You find these in test/materials
  • make sure your solr instance is running
  • specifiy non-default connection params to your server in test/config.json You can inject these also on the command line through:
mocha test/*-test.js --client.core=test-node-client --client.port=8080

Test coverage

Before to be able to run the command below, you will need to install jscoverage available here https://github.com/visionmedia/node-jscoverage.

npm run-script test-cov

This command will generate a file named coverage.html, use your browser to visualize it.

Static analysis and complexity report

npm run-script report

##Licence

(The MIT License)

Copyright 2011-2012 HipSnip Limited

Copyright 2013-2014 Rémy Loubradou

About

A solr client for node.js.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ltjin/solr-node-client: A solr client for node.js. · GitHub
Skip to content

Repository files navigation

#solr-client - a node.js solr client ![Gitter](https://badges.gitter.im/Join Chat.svg)

Dependency Status

NPM

##Install

npm install solr-client

##Features

###Latest (0.6.0)

  • Solr5 Query-Highlighting support through StandardHighlighter (@LukeTaverne) (lbdremy#144)
  • Experimental support for SolrCloud collections administration (@LukeTaverne) (lbdremy#138)
  • Support for large query through POST via configurable automatic switch (@kfitzgerald) (lbdremy#129)
  • Set Default Field (query.df()) (@cbarrientos-ias) (lbdremy#137)
  • Adds support for facet.pivot and facet.pivot.mincount (@nicolasembleton) (lbdremy#146)

Noticeable change: You can now pass a solrVersion to the Client initialization so it will activate features that are only supported by your version or higher. Be sure to check the documentation

###0.5.0

  • Commands supported: search(select), add, delete, update, commit, rollback, optimize, ping, real-time get, prepare commit, soft commit, arbitrary search handler (i.e: mlt, luke ...)
  • Lucene query / DisMax query
  • Grouping / Field Collapsing. (Apache Solr version must be >= 3.3)
  • Convenients methods for querying with Facet, MoreLikeThis
  • HTTP Basic Access Authentication
  • Over HTTPS as well
  • Use json-bigint to handle correctly numbers too large for Javascript Number such as the values of the fields *_l and _version_. By default json-bigint library is not used because the performance difference compared to the native JSON library is too important with "large" chunk of JSON (lbdremy#114 (comment)), but you want to enable it if you use the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features because they use the _version_ field. In order to enable it do var client = solr.createClient({ bigint : true}) or directly on the client instance client.options.bigint = true.

##Documentation

See the website at http://lbdremy.github.com/solr-node-client/.

##Usage

// Load dependencyvarsolr=require('solr-client');// Create a clientvarclient=solr.createClient();// Add a new documentclient.add({id : 12,title_t : 'Hello'},function(err,obj){if(err){console.log(err);}else{console.log('Solr response:',obj);}});

##Migration between 0.5.x and 0.6.x

No breaking change has been introduced to this release. However, to take advantage of facet.pivot and facet.pivot.mincount feature, you'll need to pass a solrVersion parameter to the createClient() method.

Example:

// Will activate features specific to Solr4.0 and above (like facet.pivot and facet.pivot.mincount)varclient=solr.createClient({solrVersion: '4.0'});

A feature allowing to support large queries by switching to POST when the query size reaches the threshold was introduced. To not become a breaking change, it is by default turned OFF.

To activate it, pass the property get_max_request_entity_size to the createClient with the threshold in bytes. Minimum is 1.

Example:

// Will switch to POST as soon as the query size reaches 1000 bytes (limit in servers is usually 2048 or 8192) // You can set it to 1 so every request will always use POST. varclient=solr.createClient({get_max_request_entity_size: 1000});

##Migration between 0.4.x and 0.5.x

The only breaking change introduced in 0.5.x is introduced in this commit 3cbc7fc6cf631f019a4626913c0a4b616092133b which remove escaping of the Solr special characters in some of the methods of the Query class i.e in Query#rangeFilter, Query#matchFilter, Query#group, Query#facet, Query#mlt if you were relying on this behavior just wrap the arguments you passed to those methods into the solr.escapeSpecialChars(arg) method.

For example, for some weird reason you wanted to escape the special char *, don't ask me ;)

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : '*'})

You still can:

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : solr.escapeSpecialChars('*')})

Post an issue if you have troubles migrating to v0.5.0.

##Migration between 0.3.x and 0.4.x

The only breaking change introduced in 0.4.x is about JSON serialization/deserialization of numbers too large for Javascript Number type. If you were using the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features which use the _version_ field or *_l type fields you are affected about this change otherwise you are just fine.

If you affected in order to fix that just initialize your client with the bigint flag set to true:

varclient=solr.createClient({bigint : true});

or directly on the Client instance:

client.options.bigint=true;

Post an issue if you have troubles migrating to v0.4.0.

##Migration between 0.2.x and 0.3.x

The only breaking change introduced in v0.3.0 is about method chaining of the solr Client. Method chaining as simply been removed because we were actually hidding something really interesting and useful the http.ClientRequest instance.

So, before you could have done this:

varclient=solr.createClient();client.search('q=hello',function(err,obj){console.log(err,obj);}).search('q=world',function(err,obj){console.log(err,obj);});

Now it won't work, but you have now access to the http.ClientRequest instead created by Client#search:

varclient=solr.createClient();varrequest=client.search('q=hello',function(err,obj){console.log(err,obj);});request.setTimeout(200,function(){console.log('search timeout');});

Post an issue if you have troubles migrating to v0.3.0.

##Roadmap

###v0.3.x - v0.x.x

  • Test suite with mocha and chai instead of vows
  • Implement all features available in Solr 4 (SolrCloud API in particular)
  • Provide all low-level commands
  • Complete documentation

###v1.0.x

  • First stable version
  • the API is frozen until v2.0.x, only new features and bug fixes can be introduced

##Test

npm test

Tests are executed against a running SOLR instance, so you might want to:

  • install the schema.xml and solrconfig.xml expected by the tests. You find these in test/materials
  • make sure your solr instance is running
  • specifiy non-default connection params to your server in test/config.json You can inject these also on the command line through:
mocha test/*-test.js --client.core=test-node-client --client.port=8080

Test coverage

Before to be able to run the command below, you will need to install jscoverage available here https://github.com/visionmedia/node-jscoverage.

npm run-script test-cov

This command will generate a file named coverage.html, use your browser to visualize it.

Static analysis and complexity report

npm run-script report

##Licence

(The MIT License)

Copyright 2011-2012 HipSnip Limited

Copyright 2013-2014 Rémy Loubradou

About

A solr client for node.js.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ltjin/solr-node-client: A solr client for node.js. · GitHub
Skip to content

Repository files navigation

#solr-client - a node.js solr client ![Gitter](https://badges.gitter.im/Join Chat.svg)

Dependency Status

NPM

##Install

npm install solr-client

##Features

###Latest (0.6.0)

  • Solr5 Query-Highlighting support through StandardHighlighter (@LukeTaverne) (lbdremy#144)
  • Experimental support for SolrCloud collections administration (@LukeTaverne) (lbdremy#138)
  • Support for large query through POST via configurable automatic switch (@kfitzgerald) (lbdremy#129)
  • Set Default Field (query.df()) (@cbarrientos-ias) (lbdremy#137)
  • Adds support for facet.pivot and facet.pivot.mincount (@nicolasembleton) (lbdremy#146)

Noticeable change: You can now pass a solrVersion to the Client initialization so it will activate features that are only supported by your version or higher. Be sure to check the documentation

###0.5.0

  • Commands supported: search(select), add, delete, update, commit, rollback, optimize, ping, real-time get, prepare commit, soft commit, arbitrary search handler (i.e: mlt, luke ...)
  • Lucene query / DisMax query
  • Grouping / Field Collapsing. (Apache Solr version must be >= 3.3)
  • Convenients methods for querying with Facet, MoreLikeThis
  • HTTP Basic Access Authentication
  • Over HTTPS as well
  • Use json-bigint to handle correctly numbers too large for Javascript Number such as the values of the fields *_l and _version_. By default json-bigint library is not used because the performance difference compared to the native JSON library is too important with "large" chunk of JSON (lbdremy#114 (comment)), but you want to enable it if you use the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features because they use the _version_ field. In order to enable it do var client = solr.createClient({ bigint : true}) or directly on the client instance client.options.bigint = true.

##Documentation

See the website at http://lbdremy.github.com/solr-node-client/.

##Usage

// Load dependencyvarsolr=require('solr-client');// Create a clientvarclient=solr.createClient();// Add a new documentclient.add({id : 12,title_t : 'Hello'},function(err,obj){if(err){console.log(err);}else{console.log('Solr response:',obj);}});

##Migration between 0.5.x and 0.6.x

No breaking change has been introduced to this release. However, to take advantage of facet.pivot and facet.pivot.mincount feature, you'll need to pass a solrVersion parameter to the createClient() method.

Example:

// Will activate features specific to Solr4.0 and above (like facet.pivot and facet.pivot.mincount)varclient=solr.createClient({solrVersion: '4.0'});

A feature allowing to support large queries by switching to POST when the query size reaches the threshold was introduced. To not become a breaking change, it is by default turned OFF.

To activate it, pass the property get_max_request_entity_size to the createClient with the threshold in bytes. Minimum is 1.

Example:

// Will switch to POST as soon as the query size reaches 1000 bytes (limit in servers is usually 2048 or 8192) // You can set it to 1 so every request will always use POST. varclient=solr.createClient({get_max_request_entity_size: 1000});

##Migration between 0.4.x and 0.5.x

The only breaking change introduced in 0.5.x is introduced in this commit 3cbc7fc6cf631f019a4626913c0a4b616092133b which remove escaping of the Solr special characters in some of the methods of the Query class i.e in Query#rangeFilter, Query#matchFilter, Query#group, Query#facet, Query#mlt if you were relying on this behavior just wrap the arguments you passed to those methods into the solr.escapeSpecialChars(arg) method.

For example, for some weird reason you wanted to escape the special char *, don't ask me ;)

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : '*'})

You still can:

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : solr.escapeSpecialChars('*')})

Post an issue if you have troubles migrating to v0.5.0.

##Migration between 0.3.x and 0.4.x

The only breaking change introduced in 0.4.x is about JSON serialization/deserialization of numbers too large for Javascript Number type. If you were using the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features which use the _version_ field or *_l type fields you are affected about this change otherwise you are just fine.

If you affected in order to fix that just initialize your client with the bigint flag set to true:

varclient=solr.createClient({bigint : true});

or directly on the Client instance:

client.options.bigint=true;

Post an issue if you have troubles migrating to v0.4.0.

##Migration between 0.2.x and 0.3.x

The only breaking change introduced in v0.3.0 is about method chaining of the solr Client. Method chaining as simply been removed because we were actually hidding something really interesting and useful the http.ClientRequest instance.

So, before you could have done this:

varclient=solr.createClient();client.search('q=hello',function(err,obj){console.log(err,obj);}).search('q=world',function(err,obj){console.log(err,obj);});

Now it won't work, but you have now access to the http.ClientRequest instead created by Client#search:

varclient=solr.createClient();varrequest=client.search('q=hello',function(err,obj){console.log(err,obj);});request.setTimeout(200,function(){console.log('search timeout');});

Post an issue if you have troubles migrating to v0.3.0.

##Roadmap

###v0.3.x - v0.x.x

  • Test suite with mocha and chai instead of vows
  • Implement all features available in Solr 4 (SolrCloud API in particular)
  • Provide all low-level commands
  • Complete documentation

###v1.0.x

  • First stable version
  • the API is frozen until v2.0.x, only new features and bug fixes can be introduced

##Test

npm test

Tests are executed against a running SOLR instance, so you might want to:

  • install the schema.xml and solrconfig.xml expected by the tests. You find these in test/materials
  • make sure your solr instance is running
  • specifiy non-default connection params to your server in test/config.json You can inject these also on the command line through:
mocha test/*-test.js --client.core=test-node-client --client.port=8080

Test coverage

Before to be able to run the command below, you will need to install jscoverage available here https://github.com/visionmedia/node-jscoverage.

npm run-script test-cov

This command will generate a file named coverage.html, use your browser to visualize it.

Static analysis and complexity report

npm run-script report

##Licence

(The MIT License)

Copyright 2011-2012 HipSnip Limited

Copyright 2013-2014 Rémy Loubradou

About

A solr client for node.js.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - ltjin/solr-node-client: A solr client for node.js. · GitHub
Skip to content

Repository files navigation

#solr-client - a node.js solr client ![Gitter](https://badges.gitter.im/Join Chat.svg)

Dependency Status

NPM

##Install

npm install solr-client

##Features

###Latest (0.6.0)

  • Solr5 Query-Highlighting support through StandardHighlighter (@LukeTaverne) (lbdremy#144)
  • Experimental support for SolrCloud collections administration (@LukeTaverne) (lbdremy#138)
  • Support for large query through POST via configurable automatic switch (@kfitzgerald) (lbdremy#129)
  • Set Default Field (query.df()) (@cbarrientos-ias) (lbdremy#137)
  • Adds support for facet.pivot and facet.pivot.mincount (@nicolasembleton) (lbdremy#146)

Noticeable change: You can now pass a solrVersion to the Client initialization so it will activate features that are only supported by your version or higher. Be sure to check the documentation

###0.5.0

  • Commands supported: search(select), add, delete, update, commit, rollback, optimize, ping, real-time get, prepare commit, soft commit, arbitrary search handler (i.e: mlt, luke ...)
  • Lucene query / DisMax query
  • Grouping / Field Collapsing. (Apache Solr version must be >= 3.3)
  • Convenients methods for querying with Facet, MoreLikeThis
  • HTTP Basic Access Authentication
  • Over HTTPS as well
  • Use json-bigint to handle correctly numbers too large for Javascript Number such as the values of the fields *_l and _version_. By default json-bigint library is not used because the performance difference compared to the native JSON library is too important with "large" chunk of JSON (lbdremy#114 (comment)), but you want to enable it if you use the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features because they use the _version_ field. In order to enable it do var client = solr.createClient({ bigint : true}) or directly on the client instance client.options.bigint = true.

##Documentation

See the website at http://lbdremy.github.com/solr-node-client/.

##Usage

// Load dependencyvarsolr=require('solr-client');// Create a clientvarclient=solr.createClient();// Add a new documentclient.add({id : 12,title_t : 'Hello'},function(err,obj){if(err){console.log(err);}else{console.log('Solr response:',obj);}});

##Migration between 0.5.x and 0.6.x

No breaking change has been introduced to this release. However, to take advantage of facet.pivot and facet.pivot.mincount feature, you'll need to pass a solrVersion parameter to the createClient() method.

Example:

// Will activate features specific to Solr4.0 and above (like facet.pivot and facet.pivot.mincount)varclient=solr.createClient({solrVersion: '4.0'});

A feature allowing to support large queries by switching to POST when the query size reaches the threshold was introduced. To not become a breaking change, it is by default turned OFF.

To activate it, pass the property get_max_request_entity_size to the createClient with the threshold in bytes. Minimum is 1.

Example:

// Will switch to POST as soon as the query size reaches 1000 bytes (limit in servers is usually 2048 or 8192) // You can set it to 1 so every request will always use POST. varclient=solr.createClient({get_max_request_entity_size: 1000});

##Migration between 0.4.x and 0.5.x

The only breaking change introduced in 0.5.x is introduced in this commit 3cbc7fc6cf631f019a4626913c0a4b616092133b which remove escaping of the Solr special characters in some of the methods of the Query class i.e in Query#rangeFilter, Query#matchFilter, Query#group, Query#facet, Query#mlt if you were relying on this behavior just wrap the arguments you passed to those methods into the solr.escapeSpecialChars(arg) method.

For example, for some weird reason you wanted to escape the special char *, don't ask me ;)

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : '*'})

You still can:

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : solr.escapeSpecialChars('*')})

Post an issue if you have troubles migrating to v0.5.0.

##Migration between 0.3.x and 0.4.x

The only breaking change introduced in 0.4.x is about JSON serialization/deserialization of numbers too large for Javascript Number type. If you were using the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features which use the _version_ field or *_l type fields you are affected about this change otherwise you are just fine.

If you affected in order to fix that just initialize your client with the bigint flag set to true:

varclient=solr.createClient({bigint : true});

or directly on the Client instance:

client.options.bigint=true;

Post an issue if you have troubles migrating to v0.4.0.

##Migration between 0.2.x and 0.3.x

The only breaking change introduced in v0.3.0 is about method chaining of the solr Client. Method chaining as simply been removed because we were actually hidding something really interesting and useful the http.ClientRequest instance.

So, before you could have done this:

varclient=solr.createClient();client.search('q=hello',function(err,obj){console.log(err,obj);}).search('q=world',function(err,obj){console.log(err,obj);});

Now it won't work, but you have now access to the http.ClientRequest instead created by Client#search:

varclient=solr.createClient();varrequest=client.search('q=hello',function(err,obj){console.log(err,obj);});request.setTimeout(200,function(){console.log('search timeout');});

Post an issue if you have troubles migrating to v0.3.0.

##Roadmap

###v0.3.x - v0.x.x

  • Test suite with mocha and chai instead of vows
  • Implement all features available in Solr 4 (SolrCloud API in particular)
  • Provide all low-level commands
  • Complete documentation

###v1.0.x

  • First stable version
  • the API is frozen until v2.0.x, only new features and bug fixes can be introduced

##Test

npm test

Tests are executed against a running SOLR instance, so you might want to:

  • install the schema.xml and solrconfig.xml expected by the tests. You find these in test/materials
  • make sure your solr instance is running
  • specifiy non-default connection params to your server in test/config.json You can inject these also on the command line through:
mocha test/*-test.js --client.core=test-node-client --client.port=8080

Test coverage

Before to be able to run the command below, you will need to install jscoverage available here https://github.com/visionmedia/node-jscoverage.

npm run-script test-cov

This command will generate a file named coverage.html, use your browser to visualize it.

Static analysis and complexity report

npm run-script report

##Licence

(The MIT License)

Copyright 2011-2012 HipSnip Limited

Copyright 2013-2014 Rémy Loubradou

About

A solr client for node.js.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ltjin/solr-node-client: A solr client for node.js. · GitHub
Skip to content

Repository files navigation

#solr-client - a node.js solr client ![Gitter](https://badges.gitter.im/Join Chat.svg)

Dependency Status

NPM

##Install

npm install solr-client

##Features

###Latest (0.6.0)

  • Solr5 Query-Highlighting support through StandardHighlighter (@LukeTaverne) (lbdremy#144)
  • Experimental support for SolrCloud collections administration (@LukeTaverne) (lbdremy#138)
  • Support for large query through POST via configurable automatic switch (@kfitzgerald) (lbdremy#129)
  • Set Default Field (query.df()) (@cbarrientos-ias) (lbdremy#137)
  • Adds support for facet.pivot and facet.pivot.mincount (@nicolasembleton) (lbdremy#146)

Noticeable change: You can now pass a solrVersion to the Client initialization so it will activate features that are only supported by your version or higher. Be sure to check the documentation

###0.5.0

  • Commands supported: search(select), add, delete, update, commit, rollback, optimize, ping, real-time get, prepare commit, soft commit, arbitrary search handler (i.e: mlt, luke ...)
  • Lucene query / DisMax query
  • Grouping / Field Collapsing. (Apache Solr version must be >= 3.3)
  • Convenients methods for querying with Facet, MoreLikeThis
  • HTTP Basic Access Authentication
  • Over HTTPS as well
  • Use json-bigint to handle correctly numbers too large for Javascript Number such as the values of the fields *_l and _version_. By default json-bigint library is not used because the performance difference compared to the native JSON library is too important with "large" chunk of JSON (lbdremy#114 (comment)), but you want to enable it if you use the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features because they use the _version_ field. In order to enable it do var client = solr.createClient({ bigint : true}) or directly on the client instance client.options.bigint = true.

##Documentation

See the website at http://lbdremy.github.com/solr-node-client/.

##Usage

// Load dependencyvarsolr=require('solr-client');// Create a clientvarclient=solr.createClient();// Add a new documentclient.add({id : 12,title_t : 'Hello'},function(err,obj){if(err){console.log(err);}else{console.log('Solr response:',obj);}});

##Migration between 0.5.x and 0.6.x

No breaking change has been introduced to this release. However, to take advantage of facet.pivot and facet.pivot.mincount feature, you'll need to pass a solrVersion parameter to the createClient() method.

Example:

// Will activate features specific to Solr4.0 and above (like facet.pivot and facet.pivot.mincount)varclient=solr.createClient({solrVersion: '4.0'});

A feature allowing to support large queries by switching to POST when the query size reaches the threshold was introduced. To not become a breaking change, it is by default turned OFF.

To activate it, pass the property get_max_request_entity_size to the createClient with the threshold in bytes. Minimum is 1.

Example:

// Will switch to POST as soon as the query size reaches 1000 bytes (limit in servers is usually 2048 or 8192) // You can set it to 1 so every request will always use POST. varclient=solr.createClient({get_max_request_entity_size: 1000});

##Migration between 0.4.x and 0.5.x

The only breaking change introduced in 0.5.x is introduced in this commit 3cbc7fc6cf631f019a4626913c0a4b616092133b which remove escaping of the Solr special characters in some of the methods of the Query class i.e in Query#rangeFilter, Query#matchFilter, Query#group, Query#facet, Query#mlt if you were relying on this behavior just wrap the arguments you passed to those methods into the solr.escapeSpecialChars(arg) method.

For example, for some weird reason you wanted to escape the special char *, don't ask me ;)

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : '*'})

You still can:

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : solr.escapeSpecialChars('*')})

Post an issue if you have troubles migrating to v0.5.0.

##Migration between 0.3.x and 0.4.x

The only breaking change introduced in 0.4.x is about JSON serialization/deserialization of numbers too large for Javascript Number type. If you were using the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features which use the _version_ field or *_l type fields you are affected about this change otherwise you are just fine.

If you affected in order to fix that just initialize your client with the bigint flag set to true:

varclient=solr.createClient({bigint : true});

or directly on the Client instance:

client.options.bigint=true;

Post an issue if you have troubles migrating to v0.4.0.

##Migration between 0.2.x and 0.3.x

The only breaking change introduced in v0.3.0 is about method chaining of the solr Client. Method chaining as simply been removed because we were actually hidding something really interesting and useful the http.ClientRequest instance.

So, before you could have done this:

varclient=solr.createClient();client.search('q=hello',function(err,obj){console.log(err,obj);}).search('q=world',function(err,obj){console.log(err,obj);});

Now it won't work, but you have now access to the http.ClientRequest instead created by Client#search:

varclient=solr.createClient();varrequest=client.search('q=hello',function(err,obj){console.log(err,obj);});request.setTimeout(200,function(){console.log('search timeout');});

Post an issue if you have troubles migrating to v0.3.0.

##Roadmap

###v0.3.x - v0.x.x

  • Test suite with mocha and chai instead of vows
  • Implement all features available in Solr 4 (SolrCloud API in particular)
  • Provide all low-level commands
  • Complete documentation

###v1.0.x

  • First stable version
  • the API is frozen until v2.0.x, only new features and bug fixes can be introduced

##Test

npm test

Tests are executed against a running SOLR instance, so you might want to:

  • install the schema.xml and solrconfig.xml expected by the tests. You find these in test/materials
  • make sure your solr instance is running
  • specifiy non-default connection params to your server in test/config.json You can inject these also on the command line through:
mocha test/*-test.js --client.core=test-node-client --client.port=8080

Test coverage

Before to be able to run the command below, you will need to install jscoverage available here https://github.com/visionmedia/node-jscoverage.

npm run-script test-cov

This command will generate a file named coverage.html, use your browser to visualize it.

Static analysis and complexity report

npm run-script report

##Licence

(The MIT License)

Copyright 2011-2012 HipSnip Limited

Copyright 2013-2014 Rémy Loubradou

About

A solr client for node.js.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - ltjin/solr-node-client: A solr client for node.js. · GitHub
Skip to content

Repository files navigation

#solr-client - a node.js solr client ![Gitter](https://badges.gitter.im/Join Chat.svg)

Dependency Status

NPM

##Install

npm install solr-client

##Features

###Latest (0.6.0)

  • Solr5 Query-Highlighting support through StandardHighlighter (@LukeTaverne) (lbdremy#144)
  • Experimental support for SolrCloud collections administration (@LukeTaverne) (lbdremy#138)
  • Support for large query through POST via configurable automatic switch (@kfitzgerald) (lbdremy#129)
  • Set Default Field (query.df()) (@cbarrientos-ias) (lbdremy#137)
  • Adds support for facet.pivot and facet.pivot.mincount (@nicolasembleton) (lbdremy#146)

Noticeable change: You can now pass a solrVersion to the Client initialization so it will activate features that are only supported by your version or higher. Be sure to check the documentation

###0.5.0

  • Commands supported: search(select), add, delete, update, commit, rollback, optimize, ping, real-time get, prepare commit, soft commit, arbitrary search handler (i.e: mlt, luke ...)
  • Lucene query / DisMax query
  • Grouping / Field Collapsing. (Apache Solr version must be >= 3.3)
  • Convenients methods for querying with Facet, MoreLikeThis
  • HTTP Basic Access Authentication
  • Over HTTPS as well
  • Use json-bigint to handle correctly numbers too large for Javascript Number such as the values of the fields *_l and _version_. By default json-bigint library is not used because the performance difference compared to the native JSON library is too important with "large" chunk of JSON (lbdremy#114 (comment)), but you want to enable it if you use the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features because they use the _version_ field. In order to enable it do var client = solr.createClient({ bigint : true}) or directly on the client instance client.options.bigint = true.

##Documentation

See the website at http://lbdremy.github.com/solr-node-client/.

##Usage

// Load dependencyvarsolr=require('solr-client');// Create a clientvarclient=solr.createClient();// Add a new documentclient.add({id : 12,title_t : 'Hello'},function(err,obj){if(err){console.log(err);}else{console.log('Solr response:',obj);}});

##Migration between 0.5.x and 0.6.x

No breaking change has been introduced to this release. However, to take advantage of facet.pivot and facet.pivot.mincount feature, you'll need to pass a solrVersion parameter to the createClient() method.

Example:

// Will activate features specific to Solr4.0 and above (like facet.pivot and facet.pivot.mincount)varclient=solr.createClient({solrVersion: '4.0'});

A feature allowing to support large queries by switching to POST when the query size reaches the threshold was introduced. To not become a breaking change, it is by default turned OFF.

To activate it, pass the property get_max_request_entity_size to the createClient with the threshold in bytes. Minimum is 1.

Example:

// Will switch to POST as soon as the query size reaches 1000 bytes (limit in servers is usually 2048 or 8192) // You can set it to 1 so every request will always use POST. varclient=solr.createClient({get_max_request_entity_size: 1000});

##Migration between 0.4.x and 0.5.x

The only breaking change introduced in 0.5.x is introduced in this commit 3cbc7fc6cf631f019a4626913c0a4b616092133b which remove escaping of the Solr special characters in some of the methods of the Query class i.e in Query#rangeFilter, Query#matchFilter, Query#group, Query#facet, Query#mlt if you were relying on this behavior just wrap the arguments you passed to those methods into the solr.escapeSpecialChars(arg) method.

For example, for some weird reason you wanted to escape the special char *, don't ask me ;)

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : '*'})

You still can:

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : solr.escapeSpecialChars('*')})

Post an issue if you have troubles migrating to v0.5.0.

##Migration between 0.3.x and 0.4.x

The only breaking change introduced in 0.4.x is about JSON serialization/deserialization of numbers too large for Javascript Number type. If you were using the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features which use the _version_ field or *_l type fields you are affected about this change otherwise you are just fine.

If you affected in order to fix that just initialize your client with the bigint flag set to true:

varclient=solr.createClient({bigint : true});

or directly on the Client instance:

client.options.bigint=true;

Post an issue if you have troubles migrating to v0.4.0.

##Migration between 0.2.x and 0.3.x

The only breaking change introduced in v0.3.0 is about method chaining of the solr Client. Method chaining as simply been removed because we were actually hidding something really interesting and useful the http.ClientRequest instance.

So, before you could have done this:

varclient=solr.createClient();client.search('q=hello',function(err,obj){console.log(err,obj);}).search('q=world',function(err,obj){console.log(err,obj);});

Now it won't work, but you have now access to the http.ClientRequest instead created by Client#search:

varclient=solr.createClient();varrequest=client.search('q=hello',function(err,obj){console.log(err,obj);});request.setTimeout(200,function(){console.log('search timeout');});

Post an issue if you have troubles migrating to v0.3.0.

##Roadmap

###v0.3.x - v0.x.x

  • Test suite with mocha and chai instead of vows
  • Implement all features available in Solr 4 (SolrCloud API in particular)
  • Provide all low-level commands
  • Complete documentation

###v1.0.x

  • First stable version
  • the API is frozen until v2.0.x, only new features and bug fixes can be introduced

##Test

npm test

Tests are executed against a running SOLR instance, so you might want to:

  • install the schema.xml and solrconfig.xml expected by the tests. You find these in test/materials
  • make sure your solr instance is running
  • specifiy non-default connection params to your server in test/config.json You can inject these also on the command line through:
mocha test/*-test.js --client.core=test-node-client --client.port=8080

Test coverage

Before to be able to run the command below, you will need to install jscoverage available here https://github.com/visionmedia/node-jscoverage.

npm run-script test-cov

This command will generate a file named coverage.html, use your browser to visualize it.

Static analysis and complexity report

npm run-script report

##Licence

(The MIT License)

Copyright 2011-2012 HipSnip Limited

Copyright 2013-2014 Rémy Loubradou

About

A solr client for node.js.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - ltjin/solr-node-client: A solr client for node.js. · GitHub
Skip to content

Repository files navigation

#solr-client - a node.js solr client ![Gitter](https://badges.gitter.im/Join Chat.svg)

Dependency Status

NPM

##Install

npm install solr-client

##Features

###Latest (0.6.0)

  • Solr5 Query-Highlighting support through StandardHighlighter (@LukeTaverne) (lbdremy#144)
  • Experimental support for SolrCloud collections administration (@LukeTaverne) (lbdremy#138)
  • Support for large query through POST via configurable automatic switch (@kfitzgerald) (lbdremy#129)
  • Set Default Field (query.df()) (@cbarrientos-ias) (lbdremy#137)
  • Adds support for facet.pivot and facet.pivot.mincount (@nicolasembleton) (lbdremy#146)

Noticeable change: You can now pass a solrVersion to the Client initialization so it will activate features that are only supported by your version or higher. Be sure to check the documentation

###0.5.0

  • Commands supported: search(select), add, delete, update, commit, rollback, optimize, ping, real-time get, prepare commit, soft commit, arbitrary search handler (i.e: mlt, luke ...)
  • Lucene query / DisMax query
  • Grouping / Field Collapsing. (Apache Solr version must be >= 3.3)
  • Convenients methods for querying with Facet, MoreLikeThis
  • HTTP Basic Access Authentication
  • Over HTTPS as well
  • Use json-bigint to handle correctly numbers too large for Javascript Number such as the values of the fields *_l and _version_. By default json-bigint library is not used because the performance difference compared to the native JSON library is too important with "large" chunk of JSON (lbdremy#114 (comment)), but you want to enable it if you use the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features because they use the _version_ field. In order to enable it do var client = solr.createClient({ bigint : true}) or directly on the client instance client.options.bigint = true.

##Documentation

See the website at http://lbdremy.github.com/solr-node-client/.

##Usage

// Load dependencyvarsolr=require('solr-client');// Create a clientvarclient=solr.createClient();// Add a new documentclient.add({id : 12,title_t : 'Hello'},function(err,obj){if(err){console.log(err);}else{console.log('Solr response:',obj);}});

##Migration between 0.5.x and 0.6.x

No breaking change has been introduced to this release. However, to take advantage of facet.pivot and facet.pivot.mincount feature, you'll need to pass a solrVersion parameter to the createClient() method.

Example:

// Will activate features specific to Solr4.0 and above (like facet.pivot and facet.pivot.mincount)varclient=solr.createClient({solrVersion: '4.0'});

A feature allowing to support large queries by switching to POST when the query size reaches the threshold was introduced. To not become a breaking change, it is by default turned OFF.

To activate it, pass the property get_max_request_entity_size to the createClient with the threshold in bytes. Minimum is 1.

Example:

// Will switch to POST as soon as the query size reaches 1000 bytes (limit in servers is usually 2048 or 8192) // You can set it to 1 so every request will always use POST. varclient=solr.createClient({get_max_request_entity_size: 1000});

##Migration between 0.4.x and 0.5.x

The only breaking change introduced in 0.5.x is introduced in this commit 3cbc7fc6cf631f019a4626913c0a4b616092133b which remove escaping of the Solr special characters in some of the methods of the Query class i.e in Query#rangeFilter, Query#matchFilter, Query#group, Query#facet, Query#mlt if you were relying on this behavior just wrap the arguments you passed to those methods into the solr.escapeSpecialChars(arg) method.

For example, for some weird reason you wanted to escape the special char *, don't ask me ;)

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : '*'})

You still can:

varquery=client.createQuery();query.q({'*' : '*'}).rangeFilter({field : 'id',start : 100,end : solr.escapeSpecialChars('*')})

Post an issue if you have troubles migrating to v0.5.0.

##Migration between 0.3.x and 0.4.x

The only breaking change introduced in 0.4.x is about JSON serialization/deserialization of numbers too large for Javascript Number type. If you were using the Optimistic Concurreny feature available in Solr 4.x, along with RealTime Get and Atomic Updates features which use the _version_ field or *_l type fields you are affected about this change otherwise you are just fine.

If you affected in order to fix that just initialize your client with the bigint flag set to true:

varclient=solr.createClient({bigint : true});

or directly on the Client instance:

client.options.bigint=true;

Post an issue if you have troubles migrating to v0.4.0.

##Migration between 0.2.x and 0.3.x

The only breaking change introduced in v0.3.0 is about method chaining of the solr Client. Method chaining as simply been removed because we were actually hidding something really interesting and useful the http.ClientRequest instance.

So, before you could have done this:

varclient=solr.createClient();client.search('q=hello',function(err,obj){console.log(err,obj);}).search('q=world',function(err,obj){console.log(err,obj);});

Now it won't work, but you have now access to the http.ClientRequest instead created by Client#search:

varclient=solr.createClient();varrequest=client.search('q=hello',function(err,obj){console.log(err,obj);});request.setTimeout(200,function(){console.log('search timeout');});

Post an issue if you have troubles migrating to v0.3.0.

##Roadmap

###v0.3.x - v0.x.x

  • Test suite with mocha and chai instead of vows
  • Implement all features available in Solr 4 (SolrCloud API in particular)
  • Provide all low-level commands
  • Complete documentation

###v1.0.x

  • First stable version
  • the API is frozen until v2.0.x, only new features and bug fixes can be introduced

##Test

npm test

Tests are executed against a running SOLR instance, so you might want to:

  • install the schema.xml and solrconfig.xml expected by the tests. You find these in test/materials
  • make sure your solr instance is running
  • specifiy non-default connection params to your server in test/config.json You can inject these also on the command line through:
mocha test/*-test.js --client.core=test-node-client --client.port=8080

Test coverage

Before to be able to run the command below, you will need to install jscoverage available here https://github.com/visionmedia/node-jscoverage.

npm run-script test-cov

This command will generate a file named coverage.html, use your browser to visualize it.

Static analysis and complexity report

npm run-script report

##Licence

(The MIT License)

Copyright 2011-2012 HipSnip Limited

Copyright 2013-2014 Rémy Loubradou

About

A solr client for node.js.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages