2011/7/20 Marius Dumitru Florea <[email protected]> > Hi James, > > On 07/20/2011 11:08 AM, 许凌志(Jamesxu) wrote: > > 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. > > I believe this is a bug in the SuggestLuceneService code that you could > try to fix. You shouldn't discard existing code just because it has a > few bugs. XWiki is an open source project and your contribution outside > of the GSoC program is more than welcome. >
Yes, I am considering use Xwiki.search for autosuggestion, and I am glad to fix this bug, but Could anyone give me some information about how to fix it, because I am not very familiar with Lucene and also the index structure of xwiki. I am also re-considerting about the rest service, I have tested it yet, it seems works well for autosuggestion, and no bugs have found yet, the attachment search is really good and useful too. And I am also considering that the image autosuggestion and macro suggestion, we will not use lucene, but they will still be retrieved by rest service, if any. So till now, I prefer rest services though the page rest service and attachment rest service can not merge to a single service. > > The way you want to rank search results is generic and I would love to > see it used on the default XWiki search, which is pretty bad right now > (not because of Lucene, but because of the way we use Lucene, as I've > been told). > > Thanks, > Marius > > > > > 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 > >>> > >>> " > >>> 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 > >> > > > > > > > _______________________________________________ > 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

