Wiki source code of Search Interface

Last modified by Vincent Massol on 2024/11/19 16:13

Hide last authors
Guillaume Lerouge 46.1 1 = Search Interface Improvements =
evalica 22.1 2
evalica 130.1 3 Jira: http://jira.xwiki.org/jira/browse/XE-395
evalica 123.1 4 Requirements: [[http:~/~/incubator.myxwiki.org/xwiki/bin/view/Mockups/Search+Interface#requirements>>http://incubator.myxwiki.org/xwiki/bin/view/Mockups/Search+Interface#requirements]]
evalica 122.1 5 Analysis: [[http:~/~/incubator.myxwiki.org/xwiki/bin/view/Mockups/Search+Interface#analysis>>http://incubator.myxwiki.org/xwiki/bin/view/Mockups/Search+Interface#analysis]]
evalica 125.1 6 Mockups:[[http:~/~/incubator.myxwiki.org/xwiki/bin/view/Mockups/Search+Interface#mockups>>http://incubator.myxwiki.org/xwiki/bin/view/Mockups/Search+Interface#mockups]]
evalica 132.1 7 Proposal: [[http:~/~/dev.xwiki.org/xwiki/bin/view/Design/NewSearchInterface>>http://dev.xwiki.org/xwiki/bin/view/Design/NewSearchInterface]]
evalica 70.1 8
evalica 111.1 9 == (% id="requirements" %)0. Requirements (%%) ==
10
11 The aim of this proposal is to suggest and implement an overhaul to the current XWiki search interface.
12
13 Search in XWiki has the following components:
14
15 * Search panel
16 * Search page (query field only)
17 * Search page (with results displayed)
18
19 Search results currently use the default XWiki.Results template. This template uses a table to display results. It's not very user friendly. It has gained negative feedback from some of our customers (Aelia) that do not deem it user friendly enough. Users from the company were expecting results to be be more google-like (unsurprisingly).
20
evalica 112.1 21 ===== 1.Aims =====
evalica 111.1 22
23 This project will be considered a success if the 3 following criteria are met:
24
25 * Cati starts feeling comfortable about XWiki development at the end of the project
26 * The project is completed in a relatively short timeframe (4 to 6 weeks)
27 * Users can find relevant results faster than with the current interface
28
evalica 112.1 29 ===== 2.Users =====
evalica 111.1 30
31 Users have 3 main ways to end up on any given wiki page:
32
33 * Browsing (through the index or one of the menus)
34 * Referral (from another website or a wiki page)
35 * Search
36
37 Users resort to search when:
38
39 * They're not quite sure what they're looking for
40 * They know what they're looking for but cannot access it through navigation (ex: no menu pointing to the page)
41
42 The aim of the search experience is to let users access the content they're looking for as fast as possible. Overall speed is the leading criteria (from the moment the user starts looking for the search box to the moment he can read the content he was looking for).
43
44 We're targetting users that have a working knowledge of the internet (used to browse google, news site, online shops) but do not have a technical background (people from marketing, sales, HR, accounting...).
45
evalica 112.1 46 ===== 3. Food for thought =====
evalica 111.1 47
evalica 112.1 48 **~1. Options**
evalica 111.1 49
50 * Quick Search (Look at the "Quick Find" panel at the top left on the intranet for an example)
51 * Google-like search results
52 * Table search results
53 * Simple + Advanced search ?
54 * Filters
55 * We'll probably try to integrate [http://www.compass-project.org/>http://www.compass-project.org/] underneath to generate better Lucene search results
56 ** "Compass simplifies common usage patterns of Lucene such as google-style search"
57 ** We might be able to get results in context (search term highlighted + surrounding content) using Compass -> keep it in mind in the proposal
58 * Other
59
evalica 112.1 60 **2.Stuff to keep in mind**
evalica 111.1 61
62 Here's a list of XWiki-specific items that may need to be taken into account while rebuilding the search:
63
64 * Spaces / Wikis
65 * Attachments
66 * Access rights => some users may not be allowed to see some documents
67 * Page names vs page titles
68 * Page versioning
69 * Applications (XObjects)
70 * Lucene scoring
71 * Ratings
72 * Comments
73
evalica 112.1 74 ===== 4. Process =====
evalica 111.1 75
76 * Create a JIRA issue describing the task in the relevant JIRA project
77 * Assess XWiki Enterprise's current search implementation
78 * Understand its shortcomings compared with user expectations
79 ** Check with Guillaume is not enough information about user expectations has been provided
80 ** You can draw inspiration about the expected user from [this page>http://intranet.xpertnet.biz/xwiki/bin/view/Products/Users_Reader] (I know it's not a public document)
81 * Suggest one or more potential interface designs to improve it
82 * Propose and discuss this interface on the [email protected] list to get feedback
83 * Update the proposal with feedback from the list
84 * Once the debate seems to be coming to an end, send a \[Vote\] email
85 * Implement the selected search interface
86 ** Clean the velocity code
87 ** Clean the HTML code
88 ** Write cross-browser CSS (make sure it works in IE6)
89 *** Keep in mind that this CSS needs to be easy to modify for cutomer projects
90 *** If possible, use a skin extension to store the CSS code
91 ** If javascript is needed, make it cross-browser and store its code in a JS Extenstion
92 * Get the code reviewed by a XWiki developer (JV, Anca, Raluca, Oana, Jérôme or Sergiu)
93 * Integrate their feedback and make sure to follow XWiki Applications development best practices
94 * Export the XWiki document as an XML file. Clean it (author, version)
95 * Provide the resulting file as a patch attached to the JIRA issue
96 * Beg for a developer to apply it
97 * Go out and party ;-)
98
evalica 75.1 99 == (% id="analysis" %)1. Analysis: Look of the current implementation (%%) ==
Guillaume Lerouge 46.1 100
evalica 25.1 101 image:XWiki-Main-LuceneSearch1235994036615.png
evalica 22.1 102
evalica 75.1 103 === Aims ===
evalica 23.1 104
evalica 60.1 105 The aim of the new design is to provide a more **fast **way for the user to find the page he is looking for. This can be done if the scanning through context is done as fast as possible.
evalica 38.1 106 The search page is for every user (starting with readers through admins), so the page should not be perceived different than a standard website (the concept of space and wiki should be transparent).\\
107
evalica 75.1 108 === Standardization ===
evalica 22.1 109
evalica 28.1 110 - Search Results: I need to know how many types of Search XWiki has in their product (XWatch has a different type of search because there are feed entries) so the searches can have a common UI (same ).
evalica 59.1 111 - Pagination (up and down): for all the places pagination appears, we can use the same format. [[Examples>>http://ui-patterns.com/collection/pagination]] of pagination. [[More>>http://students.info.uaic.ro/~evalica/patterns/]] patterns.
evalica 49.1 112 See also:
evalica 51.1 113 - http://code.xwiki.org/xwiki/bin/view/Macros/PagedViewLinksMacro
114 - http://code.xwiki.org/xwiki/bin/view/Snippets/PaginateSearchSnippet\\
evalica 22.1 115
evalica 75.1 116 === Types of results ===
evalica 22.1 117
evalica 56.1 118 "Quick Search" should be integrated as a prestep operation. \\
evalica 23.1 119
evalica 60.1 120 1. Table search results (the current version - with filters and column scanning - good for sorting if I can't find the page in one go (require 2 steps - refining) )
evalica 58.1 121 1. "Google-like search results" => Instead of tables show the results as a list of items (that have characteristics like Title, Author, Date, Description (for the "surrounding content") ) See** I Solution**
122 1. Extended "Tree" view - per groups See **II Solution**
evalica 56.1 123 1.
124
evalica 75.1 125 === Problems ===
evalica 23.1 126
evalica 26.1 127 In the current version of the interface we have the following:
128
129 - we don't have the word we are looking __highlighted __(in bold for example) so that the user can faster visually scan;
130 - the Filter function is in __gray__ - looking liked a disabled feature;
evalica 68.1 131 **+** it's a bit too cluttered. I have to many information showed and I don't know where to look first, there is no part highlighted (all elements have the same importance - look the same)
evalica 48.1 132 - the most relevant piece of information is where? the title? why it exist pages that don't have a page title?
evalica 38.1 133 - the searching is done within what? (page titles, content, tags, authors, etc)
evalica 56.1 134 - why the page title is "Lucene Search" - who is Lucene? Why do I care as a user?
evalica 64.1 135 - is there the possibility to have 100% Lucene score?
136 - align "query" input in left side - for better readability (momentarily is in the center)
evalica 60.1 137 - do we need to keep the word searched in the "Search Panel"?
evalica 61.1 138 - do we need to know how many versions the page has?
139 - do we need to know how many translations the page has?
140 - keep in mind if you want to integrate user rating for the page.
evalica 60.1 141 - the filter within a pagination filters only the displayed results, not all the results. If I want to see all pages modified by me I have to go on all pagination pages and apply the author filter;
142 - to take in consideration differences between instances that have multiple wikis;
evalica 66.1 143 - remove for the Search page the "Attachments" and "Comment" part + "Last Modified by" - it is not necessary for a search page (removing clutter);
evalica 56.1 144 - integrate Silk icons, if needed, in search results \\
evalica 26.1 145
evalica 75.1 146 === I Solution ===
evalica 26.1 147
evalica 75.1 148 ==== 1. Options for search (also advanced search) ====
evalica 26.1 149
evalica 52.1 150 Lucene has a very nice set of operators that can be used in advanced search to instruct user about search capabilities http://code.xwiki.org/xwiki/bin/view/Applications/SearchApplicationLuceneSearchQueryHelp
evalica 49.1 151
evalica 75.1 152 ==== 2. Results list ====
evalica 23.1 153
evalica 38.1 154 2.1 What is the relevance of displaying the "Page Name" and "Page Title"?
155
156 - page name is used internally for xwiki to name pages, do I need to know the "Page Name"?
evalica 64.1 157 - wiki and space are used for organizational purpose, this might be helpful.
evalica 38.1 158
Guillaume Lerouge 46.1 159 Example
160
evalica 38.1 161 ----
162
163 A) So, for the query:
164 [[image:incubator:Mockups.Search [email protected]]]
165
166 B) I want the result:
167
168 [[image:incubator:Mockups.Search [email protected]]]
169
170
171 C) The URL for my page is: **http:~/~/watch.xwiki.org/xwiki/bin/view/Design/NewUIProposal**
172 \\D) The desired page has a breadcrumb like this:
173 [[image:incubator:Mockups.Search [email protected]]]
174
175 E) so the correct full breadcrumb for my desired page is: **Watch > Design > XWatch User Interface Proposal** for **http:~/~/watch.xwiki.org/xwiki/bin/view/Design/NewUIProposal**
176
177 ----
178
evalica 64.1 179 So we should display primary the "__Page Title__" and "Page Name" should be only in the URL.
evalica 38.1 180 We can have __breadcrumbs__ for the wiki and the space.
181
evalica 64.1 182 Because of the way URL is constructed the wiki should be first in the query and then the space (you could put this also as pre options for the search).
evalica 38.1 183
evalica 41.1 184 I would like to have **results** in this way (list style):
evalica 39.1 185 - relevance (score) - invisible - is the order the items appear in the list;
evalica 55.1 186 - Page Title [link] (most important) (replace "Page Title" with "Page Name" if "Page Title" doesn't exist)
evalica 64.1 187 - Location: Wiki [link] > Space [link] (> Page Name [link] [? - necessary?])
evalica 55.1 188 - Author: Author [link] - Date
evalica 39.1 189
evalica 57.1 190 If we gonna follow this pattern (of breadcrumbs) - then the tale order and query field must be Wiki - Space, not Space - Wiki.
191
evalica 54.1 192 Questions about list view:
193
evalica 64.1 194 * do I need the date to be in the format "2008 Aug 26 at 15:55"? Year is the least changing element and it is in the first place. Do I need to know the time? (I'm doing a search) - Eliminate the clutter ad let only "26 Aug 2008";
evalica 55.1 195 * it is mentioned that the user name signifies the "Last Author". What "Date" signifies? "Creation Date"? "Last Modified Date"?
evalica 60.1 196 * the date is the only field not clickable;
evalica 66.1 197 * would it be usefull for me to know if the page I'm looking for has comments? or attachments? I need to know only the existence of them or also how many of them are?
evalica 60.1 198 * i could display also what types of attachments the page has: images, pdf, doc
evalica 66.1 199 * attachments and comments could be options from the search options
evalica 56.1 200 * do I need to know if I have access rights for the pages I'm looking for?
201 * Last Author - display username or full name?
evalica 54.1 202
evalica 38.1 203 2.2 Author and date are used for a more advanced search - when you know more details about the page you're looking for.
evalica 58.1 204
evalica 75.1 205 === II Solution ===
evalica 58.1 206
evalica 65.1 207 Display result pages in Groups that represent the Space (Wiki) of origin.
208 You can make a group that contain only "My Pages" and you serve this group in front line for the user. But these can be replaced with an option "Search only my pages" and also you can put the view with "My pages"on the user profile
209
evalica 75.1 210 ==== 1. Results list ====
evalica 58.1 211
evalica 59.1 212 Type: {Wiki [Space (article, article, article) , Space (article)] , Wiki [Space (article) ]} - like a SiteMap type of result list.
evalica 58.1 213
214 ----
215
216 Results:
217 Wiki
218 Space
219 article 1 ...
220 article 2 ...
221 article 3 ...
222
223 Space
224 article 4 ...
225
226 Wiki
227 Space
228 article 5 ...
229
230 ----
231
evalica 64.1 232 Based on the idea that Lucene Score can predict what a user is looking for and within what Wiki, Space the more pages have a higher score - show that pages.
evalica 58.1 233
234 Serving results organized in groups gives a nice perspective of the page location.
235
236 Another group that could be added in front of all the results could be a search did in user's pages. This kind of feature could be removed if this part (of user pages) can be found in "User Profile".
237
238 ----
239
240 Results:
241 Results in user pages
242 Other results
243
244 ----
evalica 75.1 245
evalica 77.1 246 == (% id="mockups" %)2. Mockups (%%) ==
evalica 76.1 247
evalica 94.1 248 (-) Not Selected by me
249 (+) Selected by me
250
evalica 78.1 251 === Search bar ===
evalica 76.1 252
evalica 94.1 253 The nice thing about the initial version was that the Pre filtering of the results by selecting your wiki and space.
evalica 78.1 254
evalica 94.1 255 ===== __(-) Version 1__ =====
evalica 78.1 256
evalica 87.1 257 [[image:searchBar1.png||alt="..."]]
evalica 94.1 258 Very nice visual grouping. Actually my favourite. Good for tiny spaces to make the selection wich is not the case.
259 The filters could be in the Advanced section.
evalica 78.1 260
evalica 94.1 261 ===== __(-) Version 2__ =====
evalica 78.1 262
evalica 87.1 263 [[image:searchBar2.png||alt="...."]]
evalica 94.1 264 Keeping the existing layout, but inversing Space selector with Wiki selector, to keep the breadcrumbs arrangement.
265 The filters could be in the Options/Advanced section.
evalica 78.1 266
evalica 94.1 267 ===== __(-) Version 3__ =====
evalica 78.1 268
evalica 87.1 269 [[image:searchBar3.png||alt="...."]]
evalica 94.1 270 This version is the Version 1 combined with Help Information. This way the width is increased.
271 Very nice if there were a function separation: a group for search, one for filters, etc every one with their indications.
evalica 78.1 272
evalica 94.1 273 === (-) Advanced Search ===
evalica 78.1 274
evalica 94.1 275 The advanced section is good if we like to add things like:
evalica 78.1 276
evalica 95.1 277 * User select the level of details for the results (Location, Modified, Contains, Surrounding content, Page Rating, Page Versions, Translations)
evalica 94.1 278 * User select the number of results per page
279 * Integrate Filters
280 * Integrate Lucene advanced search options (AND, OR, NOT, test*, te?t,)
281
evalica 78.1 282 === Results List ===
283
evalica 94.1 284 ===== __(-) Version 1__ =====
evalica 78.1 285
evalica 94.1 286 Show only minimal informations and display more when the user Hovers one result item.
287
evalica 87.1 288 [[image:resultList1.png||style="float: left; margin-right: 1em;"]]
evalica 94.1 289 \\
evalica 78.1 290
291
292
evalica 96.1 293
evalica 95.1 294 \\
evalica 87.1 295
evalica 94.1 296 The way Highlighted items would look like.
297 [[image:resultList1High.png||style="float: left; margin-right: 1em;"]]
evalica 91.1 298
299
evalica 87.1 300
evalica 96.1 301
302
evalica 95.1 303 ===== __(+) Version 2__ =====
304
evalica 94.1 305 Results displayed integrated in the search page.
306 Score field replaced with Relevance, also replacing Stars form Rating Page with Square rating. __
307 __Table Sorting replaced with one way sorting for fields like Relevance, Date, Page Name, LastAuthor.
evalica 87.1 308
evalica 94.1 309 [[image:resultList2.png||style="float: left; margin-right: 1em;"]]
evalica 87.1 310
311
312
evalica 88.1 313
314
evalica 95.1 315
evalica 97.1 316
317
evalica 98.1 318
319
evalica 95.1 320 The way a highlighted result looks like.
evalica 94.1 321 [[image:resultList2High.png||style="float: left; margin-right: 1em;"]]
evalica 91.1 322
323
evalica 92.1 324
evalica 95.1 325 Table fields are grouped (Space with WIki); (Author with Date); (Comments with Attachements). The level of details can be extended (unlike the table view) with the informations like Page Versions, Translations, Page ratings, Surrounding content. The level could be selected by user in his Preferences.
evalica 92.1 326
evalica 87.1 327 === Integration ===
328
evalica 129.1 329 ===== __ Version 1__ =====
evalica 87.1 330
331 [[image:integrated1.png||style="float: left; margin-right: 1em;"]]
evalica 93.1 332
333
334
335
336
337
338
evalica 96.1 339
340
evalica 97.1 341
342
evalica 98.1 343
344
evalica 93.1 345 ===== =====
346
evalica 128.1 347 \\
evalica 93.1 348
evalica 104.1 349 ===== __General View__ =====
350
351 [[image:Proposal.png]]
352
353 ===== __Integrated in Toucan Skin (layout)__ =====
354
355 [[image:integration.png]]
356
357 ===== __Scalable for only one wiki__ =====
358
359 __[[image:onlyspace.png]]__
360
361 ===== __Scalable if more details needed for result item__ =====
362
363 [[image:details.png]]
evalica 128.1 364
365 == 3. Nice ToDo's ==
366
367 * Highlighted search words in result list
368 * Integrate standard XWiki pagination
369 * Sorting DESC, ASC
370 * Display Recent Pages, My Pages
371 * When you search from a wiki or a page - complete the specific query fields with the curent wiki, space - keep search context

Get Connected