Features/Plain Query Format: Difference between revisions

Line 23: Line 23:
== Detailed Description ==
== Detailed Description ==


Instead of having dictionary ''query'' argument in ''org.laptop.sugar.DataStore::find()'' method, use plain string of [http://www.xapian.org/docs/queryparser.html full featured] query request i.e. use all system query parameters(like timestamp, mime_type etc.) in query string.
Let users create complex queries with all possible terms([http://xapian.org/docs/glossary.html Xapian glossary]) including system ones. Users can use in query string [[#System prefixes|system]] prefixes and predefined set of [[#Users predefined prefixes|custom]] prefixes.


All system, users predefined and some(its up to user) of users query terms
Prefixes in query string could look like
* use prefixes like mime_type:"text/plain", author:Strugatsky etc.
<prefix>:<one-word-value>
* could be ranged e.g. timestamp:<stamp1>..<stamp2>
<prefix>:"<multi-word-value>"
* could be sorted


==== System terms ====
Values for system prefixes, sugar fills on its own i.e. if ''title'' metadata field is ''My activity'', user can type ''title:"My activity"'' in query string.


Sugar fills these terms on its own.
Values for [[#Users predefined prefixes|custom]] prefixes user should place to ''tags'' metadata field in the same form like in query string.
 
If value is multi worded, any of these word could be used in query e.g. ''title:My'' or ''title:activity''.
 
==== System prefixes ====


{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
Line 103: Line 106:
|}
|}


==== Users predefined terms ====
==== Users predefined prefixes ====
 
The purpose of having predefined users terms:
* Shell or activities can fill these terms implicitly e.g. by parsing metedata of downloaded files(audio, video etc.)
* in some UI(for example books viewer) having some of these terms in separate columns in list view could make sense
* we can provide sorting and ranging options only for known(by Datasotre) terms
* provide the minimal set of [http://dublincore.org/documents/dces/ Dublin Core] metadata fields
 
User can use these prefixes in ''tags'', for multi word terms quotes are needed e.g.
creator:"me and my friends"


{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"
{| border=1 cellpadding=3 style="border: 1px solid white; border-collapse: collapse; background: #e3e4e5;"