In the perspective of implementation, pay attention to the property graph, for example, on Neos4j and Lucene, based on NoSQL, as a search engine for the graph database (+ Distributed Systems). The example provided by you, "Friends from France who love Russia," can be easily handled by Neo4j or a graphical solution of an arbitrary distributed property.
Suppose you use Neo4j, in this case, France will be the value (in the node graph) in the key value store, where say key = Country, all outgoing edges from this node with a βlikeβ label should be traversed, and all the end vertices will be again look for England. What is it (of course, the task here would be to Search and Workarounds for Distributed Degrees of Big Data)!
Consider a diagrammatic view taken from the Neo4j site for a property graph:

I still haven't read about searching on Facebook though :)
Yavar source share