Funny you should mention that! I’ve been playing with search to try to figure out what it might be doing. Here are some notes on what I think it does. I’ll have some suggestions at the end for improving search.
It’s not immediately obvious how search matches your search term to what it finds and returns. For example, if I search on ho scale garage and select Relevant for the search results, these are the top 4 items returned:
The first one is a decent match: the title contains the words “HO Scale” and “Garage”, but the title does not exactly match the search string, and the exact search string does not appear in the item’s description. I cannot tell why this one returns as the top hit.
The second one is odd: the title contains the words “HO Scale” but not “Garage”, so it does not match the search string. The word “garage” appears in the item summary, so search is finding one of the search words in the text associated with the item. The item has a lot of likes, so that’s probably why it is the second hit - when searching on just ho scale, this is always the first item returned. But to the casual user, it’s not obvious why this item is returned at all for ho scale garage and why it is the second hit in the list.
The third one should be first! Not because it’s mine
but because its title exactly matches (other than upper and lower case letters) the search string. As a user, I’d expect something with a title that matches the entire search string to be returned first.
The fourth one I do not understand: the title and Summary text only contain individual words from the search string, so I don’t see how this one is ranked so highly. Looking at the hits that come after this one, there are models that seem to be a better match for the search string and I would expect those other models to appear before this one.
In looking at the results and at the text and tags associated with each model, it looks like search may work like this:
- Tags come first. If a part of the search string is the same as some tag associated with the item, search returns all items with that tag regardless of what’s in the title or Summary text. In my example, search returns items with the tag ho scale first before ranking the results from the text matches.
- Title and Summary text come second. After tags, search seems to prioritize the presence of words in the title or Summary text. In my example, it seems to be locating any of the words in my search string: ho, scale, and garage. When typed as shown here – ho scale garage – it seems to treat the words individually rather than as a phrase. To treat something as a phrase, enclose the text in “” quotes – more on that later. It also looks like the title text may have more weight – that is, be considered more relevant – than the Summary text.
- Search sorts items by likes. Or at least it does this when sorting the search results by Relevance. So search results seem to be ranked by matching a tag, then matching text, then are ordered by the number of likes.
Things appear to go off the rails when you select Popular as the search option. In my example, the top four things are completely unrelated to the intended search. Here are the top four results for ho scale garage when Popular is selected. None of them have ho as a distinct word, but they do have scale or garage somewhere in their Summary text. Here search is returning anything that has any of the words in the search string and then sorting them by likes. Sorting by popular items can be made to work, but you need to use operators to make the context of your terms more clear to the search algorithm.
Search becomes far more powerful when you use the “” quotes and + plus and - minus operators. “” quotes makes the search look for the exact term. + plus tells search that the results must contain the indicated term. - minus tells search that the results must not contain the indicated term. I do not think that the Boolean operators AND, NOT, and OR work, but the “”, +, and - operators definitely work.
Recommendations:
Search should operate on all text associated with an item – more data is always good. The text matching part of search looks like it operates on just the title and Summary text. It does not look like the search indexes text in the Print Settings, Post-Printing, and other text blocks. I think it would be worthwhile to index all of the text associated with an item but understand that there might be a performance trade-off there. If that’s the case, prioritize performance.
The search user interface should make it easier to use the “”, +, and - operators. Typing them in should always work, but some sort of user interface to let people know that these operators are available and to insert the operators with a button click would be helpful.
Search should give more weight to the text associated with an item rather than to the tags. The text associated with an item will provide more information than a tag. Tags are a kind of folksonomy and folksonomies are full of errors, typos, duplications, and weird entries that were meaningful to that one guy but that nobody else would ever think of. For example, I created the tag Vonda for one of my models. Is anyone else ever going to use it? Probably not.
Tags probably still have a place, so maybe search could assign weight to tags and text differently depending on the search term and what it finds:
-
If the entire search string without operators is an exact match for a tag, order the search results by tag-based matches and then by text-based matches.
-
If the entire search string without operators is not an exact match for a tag, order the results by text-based matches and then by tag-based matches.
Just some thoughts.