Hi everyone,
We are storing links found in documents and objects in a table to help with two things:
- indicate then as information about the page
- but more importantly, links to modify when renaming a page
The main limitation of the current storage for the issue I’m working on is that finding backlinks from other wikis is very slow, as we have to request all wikis.
But I would also like to take care of the following problem if I need to come up with a new link store:
- the support for page links is a bit fuzzy (a document reference is arbitrarily chosen to represent it, but it might be the wrong one)
- the table only supports
document
as link source and onlydocument
andattachment
as link targets, it would be interesting to support more types (especially for the source) - it does not have any information about the target locale (it’s possible to indicate a specific locate with the page reference syntax, for example)
I started working on several possible ideas, and you can see the details on Generic multiwiki links (Proposal.Genericmultiwikilinks) - XWiki.
In short, I came up with two different proposals:
- a new more generic database table stored both in the link and the target wiki
- a Solr core
In terms of retro compatibility, whatever choice we make for the new storage, I think the best is to have a legacy platform extension which keeps populating the xwikilinks
table the same way it currently does.
WDYT ?
My preference goes to Solr right now for the following reasons:
- way easier to support a lot more types of source and targets, but even for the same types of links the storage is much simpler (mostly because we don’t have any limitation on the size of the references we index in it)
- cross wiki by definition, so less duplication
But it does come with an important limitation too: impossible to write a single database request which includes links related metadata among other things. So if something has an existing use case like this one in mind it would be interesting to discuss it and if it’s still doable with a Solr core.