gpt4 book ai didi

meteor - 如何在 Meteor/Telescope 中实现全文搜索

转载 作者:行者123 更新时间:2023-12-01 03:57:38 26 4
gpt4 key购买 nike

我曾尝试使用纯 javascript 在 Telescope 中实现搜索,因为看起来 FTS 对 Meteor 实现有一段时间了,而且我还不能让 2.4 与 Meteor 一起很好地运行。

我正在使用已在 Telescope 中实现的现有分页模型来显示热门/新/最佳帖子,以及当您导航到例如时在路由器中设置的搜索关键字的 session 变量。/搜索/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;
};

发布.js:
Meteor.publish( 'searchResults', searchPosts );

post_list.html:
<template name="posts_results">
{{> posts_list resultsPostsHandle}}
</template>

post_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,
...
})

任何帮助将不胜感激!

最佳答案

有点晚了但是here是关于如何在meteor 中实现全文搜索的完整文章。

“不编辑任何 Meteor 代码的最简单方法是使用您自己的 mongodb。”

关于meteor - 如何在 Meteor/Telescope 中实现全文搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15878611/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com