Page "Proposals/BEP-0004" was added by andrej Content: -------8<------8<------8<------8<------8<------8<------8<------8<--------
= BEP 4 : Improved search architecture #overview [[PageOutline]] || '''PEP''' || 4 || || '''Title''' || Improved search architecture || || '''Version''' || || || '''Last-Modified''' || || || '''Author''' || The Bloodhound project || || '''Status''' || Draft || || '''Type''' || Standards Trac || || '''Content-Type''' || [wiki:PageTemplates/Proposals text/x-trac-wiki] || || '''Created''' || || || '''Post-History''' || || ---- == Abstract #abstract This document is meant to gather community consensus on the implementation of the improved search functionality. Simultaneously, we want to merge search and custom query functionality under the same umbrella. This is the place to discuss it and make proposals. Main discussion must be placed in mail list with [BEP-0004] subject. == Motivation == Nowadays modern issue tracking system should provide advanced free text search functionality combine with flexible query mechanism. There are a lot of user requests asking for better and customizable search. The term project is very generic and may be confusing considering the context. Therefore in this specification the word product is used instead. == Rationale #rationale === Quick search box Quick search box should be just frontend for adhoc query. For example, if user searches for “bla” string, user receives Search Result view with the following query: text~=”bla”. User can refine query in Query Result view. Search box should accept the following search types: - free-text search: “bla” - free-text + query: bla status!=closed - query only: status!=closed Other nice to have features: - Did you mean... - Suggestions during typing === Query Result view Query Result view represents consistent view of query result for different resources. Result may be represented as - All resources result tab - default, common for all resources columns e.g. name and description - Resource result tabs - resource specific fields are shown e.g. id, status, summary for ticket. - Query Result view can be instructed to limit result to specific resource type e.g. show only tickets in result. In this case, resource tabs can be omitted. User can refine search conditions either by editing query or by using Query Builder. User can specify what fields should be selected and in what results order should be applied. A new order type is introduced for free-text search: score Query Result view should support facets (http://searchhub.org/2009/09/02/faceted-search-with-solr/) for example: - All resources result tab can show facets for resource type and product - Ticket result tab can show facets for products and ticket status Other nice to have features in no particular order: - Possibility to save a query for specific user and sharing of saved queries - Search highlighting === Resource Query New Resource Query should provide the following functionality: - free-text search support - facet support - it is a superset of TracQuery functionality - basic query expressions AND, OR, NOT, search by specific field, search [FROM TO] - TBD (can be similar to SQL or lucene/solr like) - search through different resources not only tickets: wiki, milestones, changesets and other pluggable resources - search through all resource fields - search through attachments, history and comments - multi-product aware - apply security context etc - order by free-text score. Score calculation can be configured, for example if found in summary: id: score:100, score*10, in keywords: score*5, in components: score*3 … Nice to have features - Support search in attachments of specific types e.g word, exel etc. === Resource Query macro Similar to existing TracQuery, New macro must be introduced to enable access to Resource Query from Wiki. === Query Builder A lot improvements may be introduced here, TBD == Proposal #proposal === Implementation steps We can start with small step by implementing search box functionality similar to trac:wiki:AdvancedSearch and then add support for query, wiki macro and query builder/wizard. === Possible free text platforms A few possible solutions were discussed on the mail list: ==== Whoosh Whoosh links: - Product page: http://pypi.python.org/pypi/Whoosh/ - Discussion on implementing Trac search using Whoosh: https://groups.google.com/forum/?fromgroups=#!msg/trac-dev/sbU-g0C6kvk/1_juL29aAtQJ ==== !PyLucen [http://lucene.apache.org/pylucene/ PyLucene] is not a Lucene port but a Python wrapper around Java Lucene. !PyLucene embeds a Java VM with Lucene into a Python process. ==== Java-based servers. Solr or !ElasticSearch == Rejected ideas == Backwards Compatibility #backwards-compatibility TracQuery implementation must be changed to use Resource Query for data retrieval. Existing TracSearch syntax will be mapped to Resource Query. == Reference Implementation #reference-implementation == Resources #resources == References #references Proposals/BEP-0003 - Multi-product architecture === Trac proposals on this subject - trac:wiki:AdvancedSearch - trac:wiki:SearchRefactoring === Plugins on this subject - http://trac-hacks.org/wiki/FullTextSearchPlugin from Logica - http://trac-hacks.org/wiki/TracAdvancedSearchPlugin - uses Solr, claims to be designed with extensions points === Existing search and query implementation - TracQuery - TracSearch == Copyright #copyright Copyright © 2009-2012 The [http://www.apache.org Apache Software Foundation] [[BR]] Licensed under the [http://www.apache.org/licenses/LICENSE-2.0 Apache License, Version 2.0]. Apache Bloodhound, Apache, the Apache feather logo, and the Apache Bloodhound project logo are trademarks of The Apache Software Foundation. -------8<------8<------8<------8<------8<------8<------8<------8<-------- -- Page URL: <https://issues.apache.org/bloodhound/wiki/Proposals/BEP-0004> Apache Bloodhound <https://issues.apache.org/bloodhound/> The Apache Bloodhound (incubating) issue tracker This is an automated message. Someone added your email address to be notified of changes on 'Proposals/BEP-0004' page. If it was not you, please report to .
