首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Algolia in Azure

Algolia in Azure
EN

Stack Overflow用户
提问于 2017-09-01 23:10:33
回答 1查看 196关注 0票数 1

我正在为我的android应用程序使用firebase,并使用Algolia执行全文搜索,这是所有博客都建议的。我已经成功地开发了脚本,并且它的功能正常。现在我想托管脚本以全天候运行。因为我有一个azure帐户,我该如何上传脚本?我已经尝试上传以下作为一个功能,网页应用程序,但一直没有成功。

附言:我试过Heroku,但不满意。

脚本。

代码语言:javascript
复制
var http = require('http');
var port = process.env.port || 1337;
http.createServer(function (req, res) {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello World\n');
}).listen(port);
    var dotenv = require('dotenv');
var firebaseAdmin = require("firebase-admin");
var algoliasearch = require('algoliasearch');
var algoliasearchHelper = require('algoliasearch-helper');


// load values from the .env file in this directory into process.env
dotenv.load();

// configure firebase
var serviceAccount = require("./serviceAccountKey.json");
firebaseAdmin.initializeApp({
  credential: firebaseAdmin.credential.cert(serviceAccount),
  databaseURL: process.env.FIREBASE_DATABASE_URL
});
var database = firebaseAdmin.database();

// configure algolia
var algolia = algoliasearch(process.env.ALGOLIA_APP_ID, process.env.ALGOLIA_API_KEY);
var index = algolia.initIndex('books');

var contactsRef = database.ref("/BookFair");

contactsRef.on('child_added', addOrUpdateIndexRecord);
contactsRef.on('child_changed', addOrUpdateIndexRecord);
contactsRef.on('child_removed', deleteIndexRecord);

function addOrUpdateIndexRecord(dataSnapshot) {
  // Get Firebase object
  var firebaseObject = dataSnapshot.val();
  // Specify Algolia's objectID using the Firebase object key
  firebaseObject.objectID = dataSnapshot.key;
  // Add or update object
  index.saveObject(firebaseObject, function(err, content) {
    if (err) {
      throw err;
    }
    console.log('Firebase object indexed in Algolia', firebaseObject.objectID);
  });
}

function deleteIndexRecord(dataSnapshot) {
  // Get Algolia's objectID from the Firebase object key
  var objectID = dataSnapshot.key;
  // Remove the object from Algolia
  index.deleteObject(objectID, function(err, content) {
    if (err) {
      throw err;
    }
    console.log('Firebase object deleted from Algolia', objectID);
  });
}

var queries = database.ref("/queries");

queries.on('child_added', addOrUpdateIndexRecordN);

function addOrUpdateIndexRecordN(dataSnapshot) {
  // Get Firebase object
  var firebaseObject = dataSnapshot.val();
  // Specify Algolia's objectID using the Firebase object key
  firebaseObject.objectID = dataSnapshot.key;
  // Add or update object

  var collegeName = "";
  var query_ID_LOLWA= "";
  var year="";
  var query = "";
  var counter = 0;

  for(var i in firebaseObject){
      var c = firebaseObject.charAt(i);
      if(c=='/'){
          counter = counter + 1;
          continue;
      }
      else{

          if(counter==2)
              collegeName = collegeName + c;
          else if(counter == 3)
              year = year+c;
          else if(counter == 1)
              query_ID_LOLWA = query_ID_LOLWA + c;
          else
              query = query +c;

      }

  }
  console.log(collegeName);
  console.log(year);
  console.log(query_ID_LOLWA);
  console.log(query);

  const query_final = query_ID_LOLWA;

  var helper = algoliasearchHelper(algoliasearch("****", "****"), 'books', {
    facets: ['collegeName', 'year','priority']});


  helper.on('result', function(data,query_ID_LOLWA){


        data.getFacetValues('priority',{sortBy: ['count:desc']});

        console.log(data.hits);

        var path_query = "/queries_answers/"+query_final;

        path_query = path_query.toString();
        console.log(path_query);
        if(data.hits.length==0){
            console.log("No results");
            database.ref(path_query).push(-1);
        }

        else if(data.hits.length>1){

            var ID = 1;
            var counter = -1;
            var length = data.hits.length-1;
            for(var h in data.hits){
                counter = counter + 1;
                if( (counter%5 == 0) && (counter != 0)){
                    ID = ID + 1;
                }
                database.ref(path_query+"/"+ID).push(data.hits[h].uuid);

            }
            database.ref(path_query+"/totalResults").push(data.hits.length);
        }
        else{
            database.ref(path_query+"/totalResults").push(data.hits.length);
            for(var h in data.hits)
            database.ref(path_query+"/1").push(data.hits[h].uuid);
        }

    });

    helper.addFacetRefinement('collegeName', collegeName);
    helper.addFacetRefinement('year',year);

    helper.setQuery(query);



    helper.search();



  /*index.search(firebaseObject, function(err, content) {
      if (err) {
        console.error(err);
        return;
    }
    console.log(content.hits);

    for (var h in content.hits) {

    console.log('Hit(' + content.hits[h].objectID + '): ' + content.hits[h].uuid);
    }

        database.ref("/query_result").push(content.hits);
    });*/




}
EN

回答 1

Stack Overflow用户

发布于 2017-09-04 19:55:52

没有比but have been unsuccessful更多的细节,唯一的建议就是按照通常的步骤部署一个基于时间的Azure函数。

最简单的方法是使用Azure Portal

  • 登录到您的Microsoft Azure帐户
  • 创建一个函数应用程序来托管您的函数
  • 添加一个计时器触发的模板TimerTrigger-Javascript模板开始

此时,您将拥有一个每分钟运行一次的函数。您可以检查日志以确认它是否正常工作。现在,您希望配置其频率:

  • 更新函数的Timer Schedule (在Integrate选项卡中)要设置函数运行
  • 的频率最后,请使用您自己的代码替换模板的代码。

您可以找到一个,其中包含如何实现这些步骤的说明。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46003231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档