Dynamo 2.19 Release

As part of this release, we have revamped Search using Lucene! This means that Search has changed a bit, and we want to articulate some of the differences here.

Buckle up, enjoy the ride and please do give us feedback in this thread as we seek to tweak it to be even better :pray:

Lucene Search is a high-performance, full-featured text search engine that allows us to move on from the original, bespoke implementation and leverage the full knowledge of developers whose speciality is Search - big win! :mag_right:

When searching for Nodes in Dynamo, we currently use the following fields:

  • Name
  • Category*
  • Search Keywords
  • Description

*Please note that the shelves in the Library are not the Categories in this context. These Shelves are somewhat artificial, designed to make finding nodes easier without forcing the development of them down a certain pathway.

The Categories referenced here are things like Core.Input (Node namespaces) utilized by the Dynamo in Nodal development.

For example:
Search terms; "list join"

  • here we utilize the empty space " " for separating words.
  • We will find nodes with:
    • list in the Name
    • join in the Name
    • Contains list in the Category like all the nodes in “Core.List”.
    • Nodes that contain list or join in the Description (If it is repeated several times, it will gain more weight).
    • Nodes that contain list or join in the SearchTags (More repetition here gives more weight)

Currently the period . operator behaves the same way as the space " " above, but we’re investigating if this is better suited to be a specifier - i.e. instead of a separator it becomes part of the full node-name as depicted in Dynamo’s UI that allows you to type.

Weights:
Each search field has Weights associated with it, covering:

  • Fuzzy
  • Normal
  • Wildcards

Each of these weights gets calculated on the above Search hierarchy and re-calculated for successive terms / keystrokes with a slight usability delay.

Problem areas:
We’re still not done yet, as explained above we don’t yet pair the full node name as depicted in Dynamo. This means you may be searching for a Sphere.ByCenterPointRadius and not quite get the answer you expect:

For example:
Search terms: "Sphere by center"
Result: You may notice that this doesn’t return the Sphere.ByCenterPointRadius node in the first few results. This is due to:

  • The node Name is ByCenterPointRadius and the Category is Geometry.Sphere.
  • When using spaces in this Search term, Lucene will try to get:
    • Nodes with Sphere, By or Center in the Name
    • Nodes in which the Category is Sphere, By, or Center
    • Nodes with Sphere, By or Center in the Description
    • Nodes with Sphere, By, or Center in the SearchTags

In the short-term, and generally, you may have better search results by using the latter part of a node name, but suffice it to say that we’re looking at tweaking this even further so that results are as predictable as possible! :pray:

5 Likes