Meteor.js を試していて、Meteor/MongoDB サーバーで実行できる全文検索エンジンを探しています。Meteor はこの機能を開発していないようです。
Meteor アプリに全文検索を追加するための既存のソリューションがあるのだろうか。
私が見つけることができる唯一のものは、node.js API を持つMongoLanternです。Meteor アプリに MongoLantern を追加するにはどうすればよいですか?
Meteor.js を試していて、Meteor/MongoDB サーバーで実行できる全文検索エンジンを探しています。Meteor はこの機能を開発していないようです。
Meteor アプリに全文検索を追加するための既存のソリューションがあるのだろうか。
私が見つけることができる唯一のものは、node.js API を持つMongoLanternです。Meteor アプリに MongoLantern を追加するにはどうすればよいですか?
MongoDB 2.4 には全文検索が含まれます。ガイドはこちらからご覧いただけます。
開発リリースを実行する準備ができている場合は、今すぐ MongoDB 2.3をダウンロードできます。これにはテキスト検索が含まれています。
更新: MongoDB 2.4 がリリースされました。テキスト検索はベータ版として説明されています。
テキスト検索のガイドはここにあり、mongod
このように実行する必要があります
mongod --setParameter textSearchEnabled=true
http://lunrjs.com/をご覧ください。これは、実際の Meteor アプリのほぼ瞬時のパフォーマンスを得るのにも役立つかもしれません.
あなたは見たいと思うかもしれません:
https://github.com/Crenshinibon/spomet
全文検索を提供する Meteor ネイティブ パッケージです。オートコンプリート付きの検索ボックスを簡単に含めることができます。
拡張サンプル アプリケーションに関するチュートリアルをここで読むことができます。
http://shiggyenterprises.wordpress.com/2013/09/28/developing-a-full-text-search-enabled-meteor-app/
Meteor を使用してソリューションを実装する別の方法もあります。検索ソースです。
これは一種の先行入力ですが、UI 部分はありません。必要に応じて Blaze で UI を構築するために使用できるリアクティブ データソースを公開します。
上記のアプリは、Meteor パッケージを検索するためのインスタント検索アプリです。検索ソースを使用してビルドする方法については、この記事に記載されています
簡単に言えば、検索ソースの仕組みは次のとおりです。
var options = {
keepHistory: 1000 * 60 * 5,
localSearch: true
};
var fields = ['packageName', 'description'];
PackageSearch = new SearchSource('packages', fields, options);
SearchSource.defineSource('packages', function(searchText, options) {
var options = {sort: {isoScore: -1}, limit: 20};
if(searchText) {
var regExp = buildRegExp(searchText);
var selector = {packageName: regExp, description: regExp};
return Packages.find(selector, options).fetch();
} else {
return Packages.find({}, options).fetch();
}
});
function buildRegExp(searchText) {
// this is dumb implementation
var parts = searchText.trim().split(' ');
return new RegExp("(" + parts.join('|') + ")", "ig");
}
Template.searchResult.helpers({
getPackages: function() {
return PackageSearch.getData({
transform: function(matchText, regExp) {
return matchText.replace(regExp, "<b>$&</b>")
},
sort: {isoScore: -1}
});
}
});
PackageSearch.search("the text to search");
上記の各機能がどのように機能するかについては、ドキュメントを参照してください。