[Kde-pim] akonadi indexing agent: Where does it check on what folders to index?

Daniel Vrátil dvratil at kde.org
Thu Feb 11 12:08:19 GMT 2016


On Thursday, February 11, 2016 12:22:29 PM CET Martin Steigerwald wrote:
> (asking new devel related questions here instead of continuing on kdepim-
> users)
> 
> Hello!

Hi!

> 
> I am trying to get a clue on where it selects which folders to index? For my
> huge maildir it can help to tell it not to index the large LKML folders and
> some other large folders, and there is setting in KMail folder properties
> for that in the maintenance tab. "Enable full text indexing" which I
> disabled for the LKML folders.
> 
> I am not sure whether Akonadi indexing agent actually uses that setting
> tough.

Indeed the agent completely ignores the settings :(

> 
> I think it schedules indexing of folders in
> 
>  47 Scheduler::Scheduler(Index &index, const QSharedPointer<JobFactory>
> &jobFactory, QObject *parent)
> […]
>  64     //Schedule collections we know have missing items from last time
>  65     m_dirtyCollections = group.readEntry("dirtyCollections",
> QList<Akonadi::Collection::Id>()).toSet();
>  66     qCDebug(AKONADI_INDEXER_AGENT_LOG) << "Dirty collections " <<
> m_dirtyCollections;
>  67     Q_FOREACH (Akonadi::Collection::Id col, m_dirtyCollections) {
>  68         scheduleCollection(Akonadi::Collection(col), true);
>  69     }
>  70
>  71     //Trigger a full sync initially
>  72     if (!group.readEntry("initialIndexingDone", false)) {
>  73         qCDebug(AKONADI_INDEXER_AGENT_LOG) << "initial indexing";
>  74         QMetaObject::invokeMethod(this, "scheduleCompleteSync",
> Qt::QueuedConnection);
>  75     }
>  76     group.writeEntry("initialIndexingDone", true);
>  77     group.sync();
>  78 }
> 
> of "scheduler.cpp", yet I don´t see any check for whether fulltext indexing
> is enabled for the folder or not. Also I didn´t see a check in
> scheduleCollection().
> 
> Do I miss something obvious?

You are right, but there are more places where the check is missing

> 
> If it is missing, maybe a junior job for me can be to add it.

That would be awesome!

All you need to do is to check whether a collection has 
Akonadi::IndexPolicyAttribute set and what's the value of indexingEnabled().

One part is adding the check to Scheduler::scheduleCollection, as you already 
found. The other part is little more tricky, because we also want to ignore 
changes happening to and within those Collections, like renaming the 
Collection or new Item being added or Item being changed (marked as read, etc. 
etc). Right now we just get the changed or new Item/Collection, and index it 
straight away.

Dan


> 
> Thanks,


-- 
Daniel Vrátil
www.dvratil.cz | dvratil at kde.org
IRC: dvratil on Freenode (#kde, #kontact, #akonadi, #fedora-kde)

GPG Key: 0x4D69557AECB13683
Fingerprint: 0ABD FA55 A4E6 BEA9 9A83 EA97 4D69 557A ECB1 3683
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-pim/attachments/20160211/d1d66081/attachment.sig>
-------------- next part --------------
_______________________________________________
KDE PIM mailing list kde-pim at kde.org
https://mail.kde.org/mailman/listinfo/kde-pim
KDE PIM home page at http://pim.kde.org/


More information about the kde-pim mailing list