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
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!
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 hasWeights
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 theSphere.ByCenterPointRadius
node in the first few results. This is due to:
- The node Name is
ByCenterPointRadius
and the Category isGeometry.Sphere
.- When using spaces in this Search term, Lucene will try to get:
- Nodes with
Sphere
,By
orCenter
in the Name- Nodes in which the Category is
Sphere
,By
, orCenter
- Nodes with
Sphere
,By
orCenter
in the Description- Nodes with
Sphere
,By
, orCenter
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!