我試圖在使用純JavaScript的望遠鏡中實現搜索,因爲它看起來像FTS是流星實現的一段時間,我無法得到2.4與Meteor很好地玩。如何在流星/望遠鏡中實現全文搜索
我使用已經在Telescope中實現的現有分頁模型來顯示Top/New/Best帖子,以及當您導航到例如在路由器中設置的搜索關鍵字的會話變量時。 /搜索/ foobar的。
但是,它似乎並沒有工作;當我有100個帖子時,常規分頁訂閱僅返回其中的25個,而我的搜索結果僅顯示前25個帖子。
我一直在撞牆試了幾天調試這一個:有時它工作,有時它不!
下面的代碼(我已經包括了所有參考額外的搜索代碼):
app.js:
var resultsPostsSubscription = function() {
var handle = paginatedSearchSubscription(10, 'searchResults');
handle.fetch = function() {
return limitDocuments(searchPosts(Session.get('keyword')), handle.loaded());
};
return handle;
};
var resultsPostsHandle = resultsPostsSubscription();
paginated_sub.js:
我複製的現有的paginatedSubscription,因爲我無法將一個Session var作爲arg傳入;它需要是動態的。我稍後可能會重構。
paginatedSearchSubscription = function (perPage/*, name, arguments */) {
var handle = new PaginatedSubscriptionHandle(perPage);
var args = Array.prototype.slice.call(arguments, 1);
Meteor.autosubscribe(function() {
var subHandle = Meteor.subscribe.apply(this, args.concat([
Session.get('keyword'), handle.limit(), function() { handle.done(); }
]));
handle.stop = subHandle.stop;
});
return handle;
}
search.js:(新的文件,在/ common目錄)
// get all posts where headline, categories, tags or body are LIKE %keyword%
searchPosts = function(keyword) {
var query = new RegExp(keyword, 'i');
var results = Posts.find({ $or: [ { 'headline': query }, { 'categories': query }, { 'tags': query }, { 'body': query } ] });
return results;
};
publish.js:
Meteor.publish('searchResults', searchPosts);
posts_list.html:
<template name="posts_results">
{{> posts_list resultsPostsHandle}}
</template>
個
posts_list.js:
Template.posts_results.resultsPostsHandle = function() {
return resultsPostsHandle;
};
router.js: 有在導航搜索欄重定向到這裏
posts_results = function(keyword) {
Session.set('keyword' , keyword);
return 'posts_results';
};
Meteor.Router.add({
...
'/search/:keyword':posts_results,
...
})
任何幫助將不勝感激!
我們一直在爲自己複雜的訂閱而苦苦掙扎。也許直接聯繫Sacha + I會更有成效,我們可以共同設法解決問題。我認爲你可以找出我們的電子郵件地址:) – 2013-04-08 13:38:25
你介意在GitHub上克隆望遠鏡,並將所有確切的更改推送到它?我做了一個非常簡單的搜索測試(https:// gist。github.com/yeputons/8807589)與兩個訂閱,並按預期工作。 – yeputons 2014-02-04 16:51:00