Page "Proposals/BEP-0012" was changed by sifa_sensay Diff URL: <https://issues.apache.org/bloodhound/wiki/Proposals/BEP-0012?action=diff&version=13> Revision 13 Changes: -------8<------8<------8<------8<------8<------8<------8<------8<-------- Index: Proposals/BEP-0012 ========================================================================= --- Proposals/BEP-0012 (version: 12) +++ Proposals/BEP-0012 (version: 13) @@ -24,26 +24,36 @@ == Proposal #proposal The implementation of the project can be splitted into three distinct parts, the keyword and user suggestion components, and duplicate ticket search component. -The keyword suggestion component of the project will suggest entries that are used in existing tickets while user suggestion component will autocomplete the Owner and Cc fields from a list of valid users. Pressing the down key will be sufficient to display suggested keywords in an alphabetical list that the user can scroll through. Instead of an alphabetical order, popularity of entries would be used to order the suggested keywords and also matching would not be case sensitive to give more flexibility to the user in typing. +The keyword suggestion component of the project will suggest entries that are used in existing tickets while user suggestion component will autocomplete the Owner and Cc fields from a list of valid users. Detecting left mouse button press in the search field will be sufficient to display suggested keywords in an alphabetical list that the user can scroll through. Instead of an alphabetical order, popularity of entries (i.e. frequency of keywords) would be used to order the suggested keywords and also matching would not be case sensitive to give more flexibility to the user in typing. This would be implemented simply by converting the user’s entry to lowercase letter before looking for suggestions. + +Detecting left mouse button press would be implemented in JQuery by mousedown() function. For instance, + +$('#mousedown').mousedown(function(){ + //list keywords in an alphabetical order +}); + + would be an example of how the detecting left mouse button press code will look like. + +Popularity of entries would be implemented by storing the keywords and their frequencies in a table in the database. In more detail, we will create a table in the database with all possible suggestions (and will create another table for all possible usernames), all starts with zero frequency and then when user searches for a keyword/username, we will increase the frequency of that specific word in the database. We will suggest keywords/usernames in an alphabetical order, until we have useful frequency results. The keyword and user suggestion component of the project will be coded using jQuery (JavaScript library). Since most of Bloodhound’s design is done using the Twitter Bootstrap framework, the autocompletion part of the code can also be designed using Twitter Bootstrap Typeahead plugin. - Suggestions can be stored into the source array and can be retrieved on page load. However, this is really inefficient when there are thousands of keywords/usernames since user needs to wait for a long time for the page to be displayed. Alternative solution to this would be storing the suggestions in dynamically retrieved server-side (i.e. database), which will provide faster and more efficient results. More advanced approach would be using the dynamically retrieved server-side with a JSON format (JavaScript Object Notation) for human-readable data interchange between client and server. Using dynamically retrieved server-side for retrieving the suggestions will be faster. However, there will be some latency in retrieving the possible keywords/usernames. In order to overcome the latency, AJAX (Asynchronous JavaScript And XML) would be used to leave client active while the server retrieves the keywords/usernames. The duplicate ticket search component of the project will assist the user to search for the duplicate tickets when entering a new ticket’s summary. One of the possible solution would be determining the duplicates by searching the summary of existing tickets whereas searching the ticket description would be better and powerful solution. - The duplicate ticket search part of the project will be coded using jQuery and AJAX. Since most of Bloodhound’s design has been done using the Twitter Bootstrap framework, this part of the code can also be designed using Twitter Bootstrap. First, the duplicate search feature will be implemented to work with the Trac Search API then it will be manipulated to work with the BloodhoundSearchPlugin since it is much more powerful than Trac Search API. However, the ticket Query API would be another solution to implement duplicate search feature rather than interacting with Search components. The ticket Query API has support for searching ticket summaries and descriptions that contain words and phrases. -We are going to use TicketQuery wiki macro which listing tickets that match certain criteria. Listing tickets according to ticket ID next to the summary, with each ticket on a separate line is one of the format parameters that determine how the list of tickets is presented. +Using TicketQuery wiki macro which listing tickets that match certain criteria would be a better solution to duplicate ticket search, since we want to present the duplicate tickets to the user as a list according to ticket ID next to the summary, with each ticket on a separate line. This ticket presentation is one of the format parameters that determine how the list of tickets is presented in TicketQuery wiki macro. -Therefore, Query API would be better choice than using the incremental set of feature Track Search API first, then BloodhoundSearchPlugin. +On the other hand, we would need the server to do the work of rendering the macro for us. If there is a macro that gives (or can be made to give) the results in the form that we require, that could be an interesting shortcut but just requesting the data we require should also work. -Furthermore, there are going to be a number of areas of the code that deal with tickets including the base implementation from trac and the modifications added by bloodhound. We are going to interact with these through the various interfaces that are available in trac, like IRequestHandler (for handling web requests), ITemplateProvider, IRequestFilter and others. (Initially, we will start to implement the project with bloodhound without the BloodhoundMultiproduct, since it causes complication, after that support for Multiproduct might be added) +Additionally, there are going to be a number of areas of the code that deal with tickets including the base implementation from trac and the modifications added by bloodhound. We are going to interact with these through the various interfaces that are available in trac, like IRequestHandler (for handling web requests), ITemplateProvider, IRequestFilter and others. + Initially, we will start to implement the project with bloodhound without the BloodhoundMultiproduct, since it causes complication, after that support for Multiproduct might be added. Overall, this project will provide faster search facility to users whereas decrease the chance of misspelling. In other words, it will improve the usability and the core functionality of the Apache Bloodhound. This project would also be a start point for my contribution to the Bloodhound application. + Deliverables • Keyword Suggest Component @@ -70,7 +80,7 @@ June 8 – July 8 • Implement the Autocomplete Users Component for BloodhoundThemePlugin. -• Research the Trac Query API +• Research the Trac ticket Query API July 3 • Midterm Evaluation -------8<------8<------8<------8<------8<------8<------8<------8<--------
-- Page URL: <https://issues.apache.org/bloodhound/wiki/Proposals/BEP-0012> Apache Bloodhound <https://issues.apache.org/bloodhound/> The Apache Bloodhound issue tracker This is an automated message. Someone added your email address to be notified of changes on 'Proposals/BEP-0012' page. If it was not you, please report to .
