Hi,
Ideas similar to the one described below were discussed when working
on XWiki's new search interface.
Basically, I could summarize by saying that the things you label as
"limitations" are actually conscious design choices ;-)
Here are my comments:
On Wed, Jun 17, 2009 at 10:40 AM, Vincent Massol <vincent(a)massol.net> wrote:
Hi,
I think the new search results page (the main search one not the
lucene one) has some limitations that could be improved:
- it doesn't scale with large number of documents (if you do a search
that returns a lot of documents)
Indeed. I've suggested a solution below
- it doesn't allow refining your search easily
Caty & I investigated this question. There are various options that allow
tackling this issue. Here are a couple:
- Add filters in columns (what the livetable currently does)
- Add a single filter for all data (what iTunes currently does)
- Add a "search within results" field (what Google currently does)
It's interesting to note than when using that later field in Google, it runs
a query that adds your additional words to the first query you ran:
1. You run a search on "XWiki Development"
2. You choose to search for "API" within those results
3. Google will return results for a search on "XWiki Development API"
Users are currently familiar with the concept of refining their search query
when the first batch of results they get isn't satisfying enough. Thus we
thought that the best option was to provide users with the interface and the
way of searching they were most familiar with.
I definitely agree on the fact that as a power user that's not my ideal way
of searching (I like the iTunes paradigm much better), but the default
search interface aims at the majority of users and
- the information presented take up more vertical space than needed
(currently 3 lines instead of one) and thus less
results can be
presented
This is not correct. Most of the time, people click on one of the top 3
search results they get on a page. This means they do not scroll much. 2
things really matter:
- Each result has to encapsulate enough of the right information to let
the user know whether the result matches his/her expectations
- Each result be clearly identifiable and separated from the others
This was not the case with the previous table-based interface. A table makes
it harder to identify the different results. The current view improves
contrast by turning each result in an easily scannable nugget of
information.
However, I do agree that the current view isn't enough. What we wanted to do
was to add an extract of the page's relevant content (content matching the
initial query), the way Google does it (they recently beefed up that feature
to display longer content extracts btw). This will make it easier for an
user to know whether the page behind a given result is what he / she is
looking for.
The "vertical space" argument assumes that the search will return a lot of
results that the user will scroll through. The best way to answer it is to
provide more relevant results on top to avoid the need of scrolling
altogether.
- it could be reused by other pages which require listing documents
such as the SpaceIndex which lists all pages in a
given space. It's
actually currently reused but as a consequence the SpaceIndex page
isn't nice at all and doesn't scale.
About using the page to display results, I think the right approach to is is
actually to build several data displayers that can be called by an
application whenever it needs it. It would mean splitting the current
XWiki.Results in several different pages that will address different needs.
The way results are best presented in a search interface is not necessarily
the way results are presented best.
Therefore I think what we really need to do is to write different
displayers:
- A livetable displayer (macro) for data where the livetable is the best
option
- A list results displayer (macro) for search results
- We could actually go as far as writing a search macro that would
take object & space as parameters and return results only for documents
having a given object / located in a given space -> that would be pretty
useful for application developers
- A widget displayer (macro) to display 5 items in a panel-like fashion
- etc...
This way users & developers can choose the displayer that makes the more
sense to the application they're using / writing instead of having a
single-view-fits-all-use-cases approach.
Would it make sense to:
- have a livetable
- display all docs by default when you arrive on the search page (ie
no filter set)
2 comments:
- The index page already does this and I think it's better to keep it
separated from the search
- The user expectation when arriving on a search page is that no results
should be present when no query has been entered rather than the other way
round
- make the current search field a field bound to the livetable and
that filters that table when text is typed inside
That's what I referred to as the "iTunes-like" way of doing things above.
Though I personally like it, Laurent convinced me that it's not what the
majority of people are expecting online, specifically when it comes to
search.
- remove the need for the spaces combo box since it
would be a filter
field in the livetable already
- same for the wiki field
Ideally, results returned by the search right away are relevant enough to
remove the need to filter by space / wiki. However, since we don't live in
an ideal world, if we do not use the livetable we'd have to keep those
fields.
Pros:
- all the limitations listed above are resolved
- the search becomes live (that's a + compared to other solutions
since I haven't seen other apps do this)
- it unifies the way we use livetable across XE
- if we do this we could also modify the AllDocs page to have the
global search field. Basically wherever we display documents we could
also include this search field.
What about the benefits to end users? Searching is about finding. I think
that what we must strive to achieve is to provide relevant search results on
top for any given query. Advanced search options are nice, especially for
power users, but they're not used frequently by most users and they do not
meet the need of mainstream users. Thus I think we'd better fix search
before building a fancy live interface :-)
Main Question:
- would the live search be costly? With Lucene search
probably not,
with the DB search, it could (for ex if document content isn't indexed).
WDYT?
Thanks
-Vincent
_______________________________________________
My personal view is that rather than building a new fancy interface based on
the livetable, there's 2 things we'd better do first:
1. Make XWiki's Lucene Search Backend work reliably
2. Merge both search pages to keep only a Lucene-based one
This would solve the issues Vincent listed above:
- Scalability (the lucene search is paginated)
- Relevance (lucene search puts most relevant results up first)
Plus it matches current users' expectations when it comes to search.
Let met be clear: I'm all for experimenting with new, nicer, more
powerful way to interact with data and filter it and I'm a livetable
fan. However, I don't think it's the best choice for our default
search interface right now and
I think we've got other search-related issues to fix first before working in
that direction.
Guillaume
--
Guillaume Lerouge
Product Manager - XWiki
Skype: wikibc
Twitter: glerouge
http://guillaumelerouge.com/