2011/7/27 Marius Dumitru Florea <[email protected]> > On 07/27/2011 12:24 PM, 许凌志(Jamesxu) wrote: > > I found that if there is no input for lucene query, no results will be > > returned. But In link suggestion, when user first type "[[", there is no > > queries, so no suggestions will be got, but Marius and I excepted there > is a > > default suggestion results for users, like the recent modified pages, and > > the attachments belong to the current edited pages if exists. > > > > Marius give me wiki page: Panels.Recently Modified, there is an page > object > > for getting the Recently Modeified pages. I have tried to enhance this > > object so that it can return json results which can be used as a web > > service, so I edit the content of the object of this page, the code is > > below: > > {{velocity}} > > *#set($media = "$!request.media")* > > #set ($recentlyModified = $xwiki.searchDocuments('where 1=1 order by > > doc.date desc', 5, 0)) > > #if ($recentlyModified.size()> 0 || $showEmptyPanels) > > *#if($media == 'json') > > $response.setContentType("application/json") > > {'test':'mytest'}* > > #else > > #panelheader($msg.get('panels.recentlyModified.title')) > > #foreach ($docname in $recentlyModified) > > #if ($xwiki.hasAccessLevel('view', $xcontext.getUser(), $docname)) > > #set ($rdoc = > $xwiki.getDocument($docname).getTranslatedDocument()) > > #if ($foreach.index> 0) > > (% class="pitemseparator" %) ~| (%%)## > > #end > > (% class="panelitem" %)[[$rdoc.plainTitle>>$rdoc]](%%)## > > #end > > #end > > #end > > #panelfooter() > > #end > > {{/velocity}} > > > > as you can see, I add an parameter named "media", if the media is json, > then > > return the json file, otherwise the default behaviour will be executed. I > > tested the code above, and the json result is not "*{'test':'mytest'}*", > but > > contains some other html tags. > > > > > Can anyone tell me why? > > James, you have to call the page like you did with your initial fake > link suggestion service and with the XWiki.SuggestLuceneService page: > ?xpage=plain&outputSyntax=plain >
Yes, I have tried the url: http://localhost:8080/xwiki/bin/get/Panels/Recently+Modified?xpage=plain&outputSyntax=plain&media=json but still can't get the right result. > > Hope this helps, > Marius > > > > > On Tue, Jul 26, 2011 at 3:57 PM, Sergiu Dumitriu<[email protected]> > wrote: > > > >> > >> > >> On 07/25/2011 05:08 AM, 许凌志(Jamesxu) wrote: > >>> Hi All, how can I query the attachments of a specific page, for example > >>> "Main.testpage" > >>> > >>> I found if I use the query > >>> space:Main AND filename:__INPUT__* AND type:attachment > >>> I can get the attachments only from the Main space. > >>> > >>> but how about a specific page, I have tried > >>> page:Main.testpage AND filename:__INPUT__* AND type:attachment > >>> wikipage:Main.testpage AND filename:__INPUT__* AND type:attachment > >>> but no one can give the right results. > >> > >> To see which fields are indexed, you can look at the Java sources, > >> starting from > >> > >> > https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-search/xwiki-platform-search-lucene/src/main/java/com/xpn/xwiki/plugin/lucene/AttachmentData.java > >> > >> The document name is indexed both as "name", which holds just the name, > >> without the space, and "fullname", which contains the space as well -- > >> Space.Document > >> > >>> On Wed, Jul 20, 2011 at 5:56 PM, Eduard Moraru<[email protected]> > >> wrote: > >>> > >>>> Hi James, > >>>> > >>>> That's just a query problem. The queries that are used for the search > >>>> suggest are located in XWiki.SearchSuggestConfig. The query for > Document > >>>> Name/Content are not complete. They also need to specify that the > result > >>>> should be a document, and not anything (like attachments for > instance). > >> The > >>>> correct query for searching for documents by document name should be: > >>>> > >>>> name:__INPUT__* AND type:wikipage > >>>> > >>>> For attachment name, the correct query should be: > >>>> > >>>> filename:__INPUT__* AND type:attachment > >>>> > >>>> So, for your usecase (quering documents by name or attachments by > name), > >>>> the > >>>> query should be: > >>>> > >>>> (filename:__INPUT__* AND type:attachment) OR (name:__INPUT__* AND > >>>> type:wikipage) > >>>> > >>>> I`ve tested it out by creating a page named "IconTest" and then > >> searching > >>>> for "icon". The results were: > >>>> > >>>> <results> > >>>> <rs id="/xwiki/bin/download/XWiki/RequestsStatus/icon.png" > >>>> info="XWiki.RequestsStatus">icon.png</rs> > >>>> <rs id="/xwiki/bin/download/XWiki/ExtensionManager/icon.png" > >>>> info="XWiki.ExtensionManager">icon.png</rs> > >>>> <rs id="/xwiki/bin/download/Panels/PanelWizard/icon.png" > >>>> info="Panels.PanelWizard">icon.png</rs> > >>>> <rs id="/xwiki/bin/download/XWiki/OfficeImporterAdmin/icon.png" > >>>> info="XWiki.OfficeImporterAdmin">icon.png</rs> > >>>> <rs id="/xwiki/bin/download/XWiki/SearchAdmin/icon.png" > >>>> info="XWiki.SearchAdmin">icon.png</rs> > >>>> <rs id="/xwiki/bin/download/Blog/Categories/icon.png" > >>>> info="Blog.Categories">icon.png</rs> <----------- > >> attachments > >>>> <rs id="/xwiki/bin/view/Main/IconTest" > >>>> info="Main.IconTest">IconTest</rs> <----------- > documents > >>>> </results> > >>>> > >>>> Ignore the fact that the result is in XML, you can make it json, as > >>>> suggested in my previous mail. > >>>> > >>>> Hope that works for you. > >>>> > >>>> Thanks, > >>>> Eduard > >>>> > >>>> 2011/7/20 许凌志(Jamesxu)<[email protected]> > >>>> > >>>>> Thanks Eduard very much, It is really helpful, today I am trying to > use > >>>>> SuggestLuceneService to test the autosuggestion functions, I found a > >>>>> problem. > >>>>> > >>>>> For example, I create a page named "jamesxu", and upload an > attachment > >>>>> named > >>>>> "autosuggest1.js", then I input the query "jame" to the search box on > >> the > >>>>> top right of the page, the suggestion list shows up, but the results > in > >>>> the > >>>>> "Document Name" and "Document Content" contains both the wiki page > >>>>> "jamesxu" > >>>>> and its attachment "autosuggest1.js", this behaviour is not excepted > in > >>>> the > >>>>> autosuggestion features of the editor, because when user types > "jame“, > >> he > >>>>> really wants to query the wiki page or attachment begin with or > >> contains > >>>>> "jame", the attachment "autosuggest1.js" does not contains "jame", > it > >>>>> should not be included in the suggestion results. > >>>>> > >>>>> On Tue, Jul 19, 2011 at 10:14 PM, Eduard Moraru<[email protected] > >>>>>> wrote: > >>>>> > >>>>>> Hi James, > >>>>>> > >>>>>> I agree with Marius that you should reuse as much as possible what > >>>>> already > >>>>>> exists instead of creating an alternate service that does, in a > great > >>>>>> proportions, the same as an existing one but has one extra feature. > >>>>>> > >>>>>> So, as I was browsing trough REST's resources, I noticed an > >>>> undocumented > >>>>>> "/wikis/{wikiName}/attachments" [1] resource at the wiki level that > is > >>>>> able > >>>>>> to search for attachments. As you can see from the method's > signature, > >>>> it > >>>>>> accepts parameters to filter your search by attachment name, page, > >>>> space, > >>>>>> author, and type. I will fix the REST API documentation and include > >> it. > >>>>>> > >>>>>> This resource should do the trick for what you need, used in > >>>> conjunction > >>>>>> with the search resource that should handle documents. > >>>>>> > >>>>>> The advantage of this is that you can get json, as you did for the > >>>> search > >>>>>> resource. > >>>>>> The disadvantage of the whole REST API, for your needs, might be > that > >>>> it > >>>>> is > >>>>>> limited at wiki level and can not perform a multi-wiki search in one > >>>>> query > >>>>>> (wihout you having to do a search for each wiki). > >>>>>> > >>>>>> On the other side, the Lucene search does not have this problem > >> because > >>>>> it > >>>>>> indexes all the wikis and can perform searches on all wikis in one > >>>> query > >>>>>> and > >>>>>> it does it much faster than REST (which uses database queries). > Also, > >>>>>> lucene > >>>>>> is used in the search suggest (the one at the top-right corner of > the > >>>>>> screen) and in the main XWiki search as well, so it would be much > >>>> better > >>>>> if > >>>>>> the results were consistent. Besides this, if the lucene system is > >>>>> improved > >>>>>> over time, your results will also be improved as a result. > >>>>>> > >>>>>> So my suggestion is that you modify XWiki.SuggestLuceneService and > >> make > >>>>> it > >>>>>> accept a "media" parameter (or something similar) that should accept > >> at > >>>>>> least 2 values: "xml"(default) and "json". Based on this value, you > >> can > >>>>>> wrap > >>>>>> the results of the lucene search into a basic json structure that > you > >>>> can > >>>>>> easily use in your suggest box. You can check [2][3] and [4] for > >>>>> references > >>>>>> of how to use Lucene search in XWiki. > >>>>>> Once you are done with it, you can even do a pull request so that > this > >>>>>> feature gets integrated into XWiki. > >>>>>> > >>>>>> The best and cleanest solution would be that the REST search > resource > >>>>> used > >>>>>> internally lucene instead of a custom database query and that there > >>>> would > >>>>>> be > >>>>>> a single search back-end (preferably configurable in > administration). > >>>>>> Anyway, it's not your job to fix XWiki :) so making > >>>>>> XWiki.SuggestLuceneService return json too is the best way to go > right > >>>>> now, > >>>>>> IMO. > >>>>>> > >>>>>> Thanks, > >>>>>> Eduard > >>>>>> > >>>>>> ----------------- > >>>>>> References: > >>>>>> [1] > >>>>>> > >>>>>> > >>>>> > >>>> > >> > https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-rest/xwiki-platform-rest-server/src/main/java/org/xwiki/rest/resources/wikis/WikiAttachmentsResource.java > >>>>>> [2] > >> http://extensions.xwiki.org/xwiki/bin/view/Extension/Lucene+Plugin > >>>>>> [3] > >>>>>> > >>>>>> > >>>>> > >>>> > >> > https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-search/xwiki-platform-search-lucene/src/main/java/com/xpn/xwiki/plugin/lucene/LucenePluginApi.java > >>>>>> [4] > >>>>>> > >>>>>> > >>>>> > >>>> > >> > https://github.com/xwiki/xwiki-platform/blob/master/xwiki-platform-core/xwiki-platform-search/xwiki-platform-search-lucene/src/main/java/com/xpn/xwiki/plugin/lucene/SearchResult.java > >>>>>> > >>>>>> > >>>>>> On Tue, Jul 19, 2011 at 8:36 AM, 许凌志(Jamesxu)< > [email protected] > >>>>>>> wrote: > >>>>>> > >>>>>>> Hi, these days I need to implement the rest services for getting > >>>>>> suggestion > >>>>>>> results for link autosuggestion. In my design, I think the > suggestion > >>>>>>> results should be filtered and ranked by the following conditions. > >>>>>>> (for example user types "[[mytest" in page "xwiki:main.newpage") > >>>>>>> First [[ is triggered, when user keep typing, the page and > attachment > >>>>>>> suggestion results should be filtered and ranked by the following > >>>>> rules: > >>>>>>> 1. Prefix matched (only for page name and attachment name) > >>>>>>> - The pages which are in the same wiki and space of the > document > >>>>>> current > >>>>>>> edited.( Prior A) > >>>>>>> - The pages which are in the same wiki but different space of > the > >>>>>>> document current edited;(Prior B) > >>>>>>> - The pages which are in different wiki and different space of > the > >>>>>>> document current edited; (Prior C); > >>>>>>> 2. Partial matched (only for page name and attachment name) > >>>>>>> - The pages which are in the same wiki and space of the > document > >>>>>> current > >>>>>>> edited.( Prior C) > >>>>>>> - The pages which are in the same wiki but different space of > the > >>>>>>> document current edited;(Prior D) > >>>>>>> - The pages which are in different wiki and different space of > the > >>>>>>> document current edited; (Prior E) > >>>>>>> 3. If no page and attachment matches the above two rules, the > >>>>> suggestion > >>>>>>> box will be disappeared.(eclipse way) > >>>>>>> > >>>>>>> However, sometimes user might insert the space name too, for > example, > >>>>>> user > >>>>>>> will type "[[Main", following the rule 1 and rule 2, the pages > begins > >>>>>> with > >>>>>>> "Main" will be first retrieved as the suggestion results untill > user > >>>>>> types > >>>>>>> "." after "Main", the suggestion result will be retreved from the > >>>> pages > >>>>>>> under the space "Main" only. Filters still obey the above three > >>>> rules. > >>>>>>> And also when user types "attach:", the suggestion result will be > >>>>>> retrieved > >>>>>>> the attachments only following the above three rules. > >>>>>>> And if the link is under the attachment context, when "@" is typed, > >>>> the > >>>>>>> attachments only will be retrieved following the above three rules. > >>>>>>> > >>>>>>> In order to do this, I investigated the rest services already > >>>> existed( > >>>>>>> http://platform.xwiki.org/xwiki/bin/view/Features/XWikiRESTfulAPI > ), > >>>>> but > >>>>>> I > >>>>>>> found none is perfect suitable for my needs. So I talk with Marius, > >>>> he > >>>>>>> suggested me to use the existed services which are closed to my > needs > >>>>>>> first, > >>>>>>> and then write the perfect one later. > >>>>>>> > >>>>>>> However, I only found the rest service:/wikis/{wiki}/search is the > >>>>> most > >>>>>>> closed one for the pages suggestion to my needs, there is no > >>>> attachment > >>>>>>> search rest service for attachment suggestion, Marius adviced me to > >>>> use > >>>>> " > >>>>>>> > >>>>>>> > >>>>>> > >>>>> > >>>> > >> > http://localhost:8080/xwiki/bin/get/XWiki/SuggestLuceneService?outputSyntax=plain&query=name:__INPUT__*%20AND%20type:attachment&nb={number}&input={query}<http://localhost:8080/xwiki/bin/get/XWiki/SuggestLuceneService?outputSyntax=plain&query=name:__INPUT__*%20AND%20type:attachment&nb=%7Bnumber%7D&input=%7Bquery%7D> > < > http://localhost:8080/xwiki/bin/get/XWiki/SuggestLuceneService?outputSyntax=plain&query=name:__INPUT__*%20AND%20type:attachment&nb=%7Bnumber%7D&input=%7Bquery%7D > > > >> < > >> > http://localhost:8080/xwiki/bin/get/XWiki/SuggestLuceneService?outputSyntax=plain&query=name:__INPUT__*%20AND%20type:attachment&nb=%7Bnumber%7D&input=%7Bquery%7D > >>> > >>>> < > >>>> > >> > http://localhost:8080/xwiki/bin/get/XWiki/SuggestLuceneService?outputSyntax=plain&query=name:__INPUT__*%20AND%20type:attachment&nb=%7Bnumber%7D&input=%7Bquery%7D > >>>>> > >>>>> < > >>>>> > >>>> > >> > http://localhost:8080/xwiki/bin/get/XWiki/SuggestLuceneService?outputSyntax=plain&query=name:__INPUT__*%20AND%20type:attachment&nb=%7Bnumber%7D&input=%7Bquery%7D > >>>>>> > >>>>>> < > >>>>>> > >>>>> > >>>> > >> > http://localhost:8080/xwiki/bin/get/XWiki/SuggestLuceneService?outputSyntax=plain&query=name:__INPUT__*%20AND%20type:attachment&nb=%7Bnumber%7D&input=%7Bquery%7D > >>>>>>> > >>>>>>> " > >>>>>>> instead, but I found the search result is in xml format(not json), > >>>> and > >>>>>> also > >>>>>>> the information of the results got from SuggestLuceneService is > >>>> limit. > >>>>>>> > >>>>>>> I have read the document of how to write custom rest service, but > the > >>>>>>> information is limit, any one can guide me to run an helloworld? > >>>>>>> > >>>>>>> > >>>>>>> > >>>>>>> -- > >>>>>>> Best wishes, > >>>>>>> > >>>>>>> 许凌志(Jame Xu) > >>>>>>> > >>>>>>> MOE KLINNS Lab and SKLMS Lab, Xi'an Jiaotong University > >>>>>>> > >>>>>>> Department of Computer Science and Technology, Xi’an Jiaotong > >>>>> University > >>>>>>> _______________________________________________ > >>>>>>> devs mailing list > >>>>>>> [email protected] > >>>>>>> http://lists.xwiki.org/mailman/listinfo/devs > >>>>>>> > >>>>>> _______________________________________________ > >>>>>> devs mailing list > >>>>>> [email protected] > >>>>>> http://lists.xwiki.org/mailman/listinfo/devs > >>>>>> > >>>>> > >>>>> > >>>>> > >>>>> -- > >>>>> Best wishes, > >>>>> > >>>>> 许凌志(Jame Xu) > >>>>> > >>>>> MOE KLINNS Lab and SKLMS Lab, Xi'an Jiaotong University > >>>>> > >>>>> Department of Computer Science and Technology, Xi’an Jiaotong > >> University > >>>>> _______________________________________________ > >>>>> devs mailing list > >>>>> [email protected] > >>>>> http://lists.xwiki.org/mailman/listinfo/devs > >>>>> > >>>> _______________________________________________ > >>>> devs mailing list > >>>> [email protected] > >>>> http://lists.xwiki.org/mailman/listinfo/devs > >>>> > >>> > >>> > >>> > >> > >> -- > >> Sergiu Dumitriu > >> http://purl.org/net/sergiu/ > >> _______________________________________________ > >> devs mailing list > >> [email protected] > >> http://lists.xwiki.org/mailman/listinfo/devs > >> > > > > > > > _______________________________________________ > devs mailing list > [email protected] > http://lists.xwiki.org/mailman/listinfo/devs > -- Best wishes, 许凌志(Jame Xu) MOE KLINNS Lab and SKLMS Lab, Xi'an Jiaotong University Department of Computer Science and Technology, Xi’an Jiaotong University _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

