8

Meteor.js を試していて、Meteor/MongoDB サーバーで実行できる全文検索エンジンを探しています。Meteor はこの機能を開発していないようです。

Meteor アプリに全文検索を追加するための既存のソリューションがあるのだろうか。

私が見つけることができる唯一のものは、node.js API を持つMongoLanternです。Meteor アプリに MongoLantern を追加するにはどうすればよいですか?

4

4 に答える 4

4

MongoDB 2.4 には全文検索が含まれます。ガイドはこちらからご覧いただけます。

開発リリースを実行する準備ができている場合は、今すぐ MongoDB 2.3をダウンロードできます。これにはテキスト検索が含まれています。

更新: MongoDB 2.4 がリリースされました。テキスト検索はベータ版として説明されています。

テキスト検索のガイドはここにあり、mongodこのように実行する必要があります

mongod --setParameter textSearchEnabled=true
于 2013-01-29T14:10:18.610 に答える
1

http://lunrjs.com/をご覧ください。これは、実際の Meteor アプリのほぼ瞬時のパフォーマンスを得るのにも役立つかもしれません.

于 2013-08-01T08:27:13.753 に答える
0

あなたは見たいと思うかもしれません:

https://github.com/Crenshinibon/spomet

全文検索を提供する Meteor ネイティブ パッケージです。オートコンプリート付きの検索ボックスを簡単に含めることができます。

拡張サンプル アプリケーションに関するチュートリアルをここで読むことができます。

http://shiggyenterprises.wordpress.com/2013/09/28/developing-a-full-text-search-enabled-meteor-app/

于 2013-10-04T05:09:18.190 に答える
0

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");

上記の各機能がどのように機能するかについては、ドキュメントを参照してください。

于 2015-01-10T04:23:57.197 に答える