I previously wrote about the Diving into Dev’s Relevancy Feed Builder. And what follows is a quick proof of concept regarding a possible feature for the DEV.to feed.
What we want is to run an experiment in which we inter-weave two different sets of articles to create the relevancy feed. Some constraints are:
- There are two sets of articles.
- We don’t want duplicate articles.
- We want a primary set and a secondary set.
- We want the secondary set to be interspersed within the primary set.
- How we select what is in each set is it’s own unique problem.
Proof of Concept SQL and Result Set
What follows is a quick Postgresql query that is database agnostic. Basically, can I setup a collation of two sets of data. There are some refinements to how I collate, but I’m presently satisfied with the bones of the query.
WITH integers AS (
SELECT
ROW_NUMBER() OVER (PARTITION BY '1') AS collation_order,
'integers' AS table_source,
,*
FROM generate_series(1,12)
), threes AS (
SELECT
(ROW_NUMBER() OVER (PARTITION BY '1') * 0.75 + 0.1) AS collation_order,
'threes' AS table_source,
,*
FROM generate_series(3,27,3)
)
(
(SELECT * FROM integers)
UNION
(SELECT * FROM threes
WHERE generate_series NOT IN (
SELECT generate_series FROM integers))
) ORDER BY collation_order
The results are as follows:
collation_order | table_source | generate_series |
---|---|---|
1.0 | integers | 1 |
2.0 | integers | 2 |
3.0 | integers | 3 |
3.85 | threes | 15 |
4.0 | integers | 4 |
4.6 | threes | 18 |
5.0 | integers | 5 |
5.35 | threes | 21 |
6.0 | integers | 6 |
6.1 | threes | 24 |
6.85 | threes | 27 |
7.0 | integers | 7 |
8.0 | integers | 8 |
9.0 | integers | 9 |
10.0 | integers | 10 |
11.0 | integers | 11 |
12.0 | integers | 12 |
Conclusion
I’m not yet certain if this is something I’ll incorporate into the possible Feed Variants, but I wanted to put this out there.