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

Reply via email to