Система рекомендации в meteor используя easysearch

Я заканчиваю проект, конечный вызов которого состоит в том, чтобы система смогла рекомендовать другие веб сайты на основании голосования за позитив в сайт или комментирования в нем.

Система использует поле keywordsна котором основываются поиски, которые используют easysearch, и на котором я хочу основаться, чтобы делать эту систему рекомендации.

Алгоритм простой, когда пользователь голосует за позитив в сайт, событие находит все Ваши ключевые слова и посылает поиски easysearch что находит сайты с по крайней мере одним из ключевых слов, возвращает только один сайт случайным образом и возвращает результат в красивом модальном сообщении.

Шаблон для сообщения:


Событие, которое должно использовать эти поиски:

Template.website_item.events({
    "click .js-upvote": function (event) {
        var website_id = this._id;
        var keywords = this.keywords;
        console.log("Up voting website with id " + website_id);

        Websites.update({_id: website_id},
            {$inc: {'votes.Up': 1}});

        WebsitesIndex.getComponentMethods().search(keywords);

        console.log(keywords);

        return false;
    }
});

И пример документа веб сайта:

    Websites.insert({
        title:"Google",
        url:"http://www.google.com",
        description:"Popular search engine.",
        keywords: ['google', 'popular', 'search', 'engine'],
        votes:{
            Up: 0,
            Down: 0
        },
        createdOn:new Date()
    });

Поскольку я сказал раньше, поиски с easysearch функционируют удивительно, но мне не удается найтись, которого способ делать поиски беря ключевые слова и посылать результат в шаблон. Поскольку они могут видеть в событии, я сделал попытку получить результат продолжая документацию, но отсюда для там со мной не случается, что больше я могу делать.

Кто-то может вести меня?

0
задан 29.03.2016, 10:38
1 ответ

Если ты только нуждаешься в результате, лучше, чтобы ты это сделал в travГ©s из одного mГ©todo немного asГ-.

Websites.findOne(
/** Que contenga al menos una de las palabras clave **/
  { keywords : { $in : input_array_of_keywords } } , 
/** El que tenga mayor votación **/
  { sort : { "votes.up" : -1 } }
);
1
ответ дан 24.11.2019, 14:41

Теги

Похожие вопросы