1

1) 打开一个新标签页

document.getElementById("tabmail").openTab("chromeTab", {
    chromePage: “indexWithGloda.html”,
});

2)该文件indexWithGloda.html有一个带有onlick的按钮,即使它应该开始索引。

function onClickStartIndexingWithGloda()
{
    var inboxFolder = getInboxFolder(); // Find the inbox folder
    GlodaMsgIndexer.indexFolder(inboxFolder, ["force"]);
    var job = GlodaIndexer._indexQueue.pop();
    GlodaMsgIndexer._worker_folderIndex(job);
}

// Adding a messenger lazy getter to the MailServices even though it's not a service
XPCOMUtils.defineLazyGetter(MailServices, "messenger", function () {
    return Cc["@mozilla.org/messenger;1"].createInstance(Ci.nsIMessenger);
});

function getInboxFolder() {
    var inbox = null;
    var accounts = [x for each (x in fixIterator(MailServices.accounts.accounts, Ci.nsIMsgAccount))].filter(function (x) x.incomingServer);

    var server = accounts[0].incomingServer;
    var folder = server.rootFolder;

    var searchForInbox = function(folder) {
        var isInbox = folder.getFlag(Ci.nsMsgFolderFlags.Inbox);
        if (isInbox) {
            inbox = folder;
        }
        else if (folder.hasSubFolders) {
            for each (var subFolder in fixIterator(folder.subFolders, Ci.nsIMsgFolder))
                searchForInbox(subFolder);
        }
    }
    searchForInbox(folder);
    return inbox;
}

问题是GlodaMsgIndexer._worker_folderIndex(job);函数调用onClickStartIndexingWithGloda()并没有真正开始索引。我想它应该以某种异步方式调用,但我不知道如何异步启动它。我非常感谢这里的任何帮助。还有一个问题,如果文件夹已经被索引,这种方法会起作用吗?如果没有,需要做什么来重新索引一个已经建立索引的文件夹?

4

1 回答 1

1

文件夹是否被索引取决于:

  • 用户的全局首选项(mailnews.database.global.indexer.enabled)
  • 通过右键单击文件夹,然后点击属性,然后选择“在全局搜索结果中包含此文件夹”可以访问每个文件夹的首选项。

所以我不认为你应该强迫 Gloda 索引一个文件夹:Gloda 能够自动计算何时将消息添加到文件夹,并相应地索引它们。

你能告诉我更多关于你想要实现的目标吗?

编辑:您正在寻找的链接可能是

于 2012-10-12T19:26:00.550 回答