Hi, Mark.

I would suggest three different "types" of relationships rather than just a
single "Strength" relationship : SkillStrength (for person->skill) ,
SkillRelevance (for skill->job), and SkillAffinity (for skill->skill), with
a numeric property on the relationship that gauges the "strength".

I would design it with three nodes off the root node, 'People', 'Skills',
and 'Jobs', and then each person/skill/job would be a node linked to one of
those three nodes using a relationship (e.g. "Person" relationship, "Skill"
relationship, and "Job" relationship).

The traversals look pretty simple, and you can define different algorithms
for aggregating the results (and can probably build on some of the graph
algos that are in the Neo4J optional packages).

It will probably be easiest (and more performant) to sort the aggregated
results "after the fact", though there's no technical reason you couldn't do
it in-process during the traversal.

Looks like a fun project and a good fit for Neo!

-----Original Message-----
From: user-boun...@lists.neo4j.org [mailto:user-boun...@lists.neo4j.org] On
Behalf Of Mark Nijhof
Sent: Friday, May 07, 2010 7:22 AM
To: user@lists.neo4j.org
Subject: [Neo] Usage questions

Hi,

I have a few questions with respect to using Neo4j, let me outline the
details of what we want to accomplish first.

We are building a job site for the Scandinavian IT market and for my
question I would like to use the simplified model:

- Persons
- Skills
- Jobs

A Person will have certain Skills but the relation between the person
and the skills depends on how well he possesses these skills. I like
to call this relation Strength. The same applies to Jobs, a Job
requires certain Skills but here as well some skills are more
important then others. Then there are also relations between the
different Skills them selves, some skills are very tight related
together other are no, or have no relation at all.

Which would end up like this:

- Persons <-- Strength --> Skills
- Skills <-- Strength --> Skills
- Jobs <-- Strength --> Skills

I see all relations bi-directional as I want to be able to from one
end to the other.

Now what I want to be able to do is:

- Find a match between a Job and a Person depending on the relations
between them (via Skills) and also try to calculate the overall
Strength between these matches. This can go both ways.

- Being able to use the relations between Skills to suggest other Jobs
even if the skills are not found in the search query. A very simple
example would be: Search for Ruby and JavaScript would also suggest
Jobs that only have Rails specified. Since there is a strong relation
between Ruby and Rails as well as between JavaScript and Rails.

There are many more scenario's that we would want to query, but I
think that this would be enough to describe the problem domain :-)
else just ask. F.ex. later there will also be relations between
Companies and Persons and Companies and Skills, and ...

Questions:

- Are my assumptions correct that Neo4j would be a good fit?

- Besides the relations there is a _lot_ more content attached to
Persons and Jobs should this data be stored in Neo4j as well, or
should that go into a document db and that Neo4j only has a reference?

- Given the previous question, if that content is in Neo4j how well is
it searchable? I believe Lucene is supported as well, can this be used
in the traversal searches?

- We are using Heroku for our platform (at least in the start) and so
we need a different server to host Neo4j, I am thinking that an Amazon
instance would be great, then using JRuby in front of it to create a
custom API for the Heroku app to use. Does that sound like a good fit?
(our Java abilities are not great, and feel more comfortable with
Ruby).

I hope I have explained our situation well enough and am looking
forward to see some discussion around it.

Cheers,

-Mark


-- 
Mark Nijhof
Cre8ive Thought
m: 0047 95 00 99 37
e:  mark.nij...@cre8ivethought.com
w: www.cre8ivethought.com
_______________________________________________
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

_______________________________________________
Neo mailing list
User@lists.neo4j.org
https://lists.neo4j.org/mailman/listinfo/user

Reply via email to