Create an interface for searching through connected networks of nodes.

These queries should be saved as nodes.

The "view" operation for these query nodes should execute the query and display the results.

Search options should include the following:

default starting node
follow parents
follow children
return a distinct set of node types (only the first of each node type found is returned)
search distance (how far from the starting node should be searched)
end points (don't search beyond these types of nodes, but include them in the results)
avoidance types (don't search these types of nodes at all, and don't include them in the results)
max results (do not search beyond this many results) **
search types (only return nodes that match these node types) **
search algorithm (Depth-first search, Breadth-first search, etc..) **

There should be a form on the search results page for specifying the node id (nid) of another node to start the search from. This value should override any default value that is specified.

Search algorithms should only follow nodes that are viewable by the current user. **

Provide a means of listing out available ("viewable" to current user) saved queries. This list should optionally be published as part of the a search form in the body of select node types.

Results should be paginated if possible.

(** these features are yet to be implemented, and all others are yet to be committed to CVS)

Comments

javanaut’s picture

This is functionally complete. As I just wrote it, not much in the way of serious testing has been performed. It's in CVS HEAD.

It's really interesting to go crawling through a complex network of nodes and seeing what shows up. While writing it today, I thought of a few "nice to have" features that I'll submit separately.

The only thing that's missing from the stated feature request is the "Breadth-First search" algorithm. I think I got the Depth-First search algorithm properly debugged. The DFS solves the problem that I face, so unless specifically requested, the BFS will remain low priority.

javanaut’s picture

After various bugs found and fixed, poorly implemented logic reworked, and a query trace feature added, I'm calling this "fixed". It hasn't lived in the wild, so I won't close it until it's proven stable.

javanaut’s picture

One More Thing...I'm going to defer implementation of the Breadth-First-Search algorithm for now. I don't currently need it, so I'll submit it as a separate, though deferred, feature.

Anonymous’s picture