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
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
>>>>>>>
>>>>>>> "
>>>>>>> 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