On 07/27/2011 04:30 PM, 许凌志(Jamesxu) wrote: > 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.
What about http://localhost:8080/xwiki/bin/get/Panels/Recently+Modified?outputSyntax=plain&media=json ? > >> >> 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 >> > > > _______________________________________________ devs mailing list [email protected] http://lists.xwiki.org/mailman/listinfo/devs

