Use a regular path traversal, depth first, and create a custom path
evaluator that upon reaching the desired end node, checks the path for a
node with the property value you want.
See https://github.com/maxdemarzi/neo_path_to_label for an idea (it finds
the shortest path to any node with a given Label) but you get the idea.
On Thursday, December 22, 2016 at 3:24:20 PM UTC-6, Aviran Katz wrote:
>
> I'm facing a similar situation. Did you eventually solve this?
>
> On Sunday, June 26, 2016 at 12:55:29 AM UTC+3, rann wrote:
>>
>> Dear ,
>>
>> I am trying find the shortest path between two nodes .
>>
>> I am getting two shortest paths .But my requirement is internally it
>> should filter based on one of the nodes property value . it should return
>> relevant path based on node property value.
>>
>> I added Node filter to the PathExpanderBuilder .but as it is traversing
>> through the whole path at some node, it is giving false as the getP1()
>> method is giving false and finally it is not returning any paths.
>> can some body help?
>>
>> public Iterable<Path> shortestPath(Node sourceNode, Node destNode)
>> {
>> Integer depth=10;
>> PathExpander<?> expander;
>> List<Path> paths = new ArrayList<>();
>> if ( orderedRelTypes == null )
>> {
>> expander = PathExpanders.allTypesAndDirections();
>> }
>> else
>> {
>> PathExpanderBuilder expanderBuilder = PathExpanderBuilder.empty();
>>
>> expanderBuilder = expanderBuilder
>> .add(MyRelationshipTypes.IS_LOCATED_AT, Direction.BOTH)
>> .add(MyRelationshipTypes.BELONGS_TO, Direction.BOTH)
>> .add(MyRelationshipTypes.CARRIES, Direction.BOTH)
>> .addNodeFilter(getP1());
>>
>> expander = expanderBuilder.build();
>> }
>> try (Transaction tx = Neo4JDBEngine.getGraphService().beginTx()) {
>> PathFinder<Path> shortestPath = GraphAlgoFactory.shortestPath(
>> expander, depth == null ? 4 : depth.intValue());
>> for (Path path : shortestPath.findAllPaths(sourceNode, destNode)) {
>> paths.add(path);
>> }
>> tx.success();
>> }
>> return paths;
>> }
>>
>> public static Predicate<Node> getP1() {
>> return p -> "RFS".equals(p.getProperty("Type"));
>> }
>>
>
--
You received this message because you are subscribed to the Google Groups
"Neo4j" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.