Hi Jan, Seems q=mount OR mount* have different sorting order with q=mount for those documents including mount. Change to q=mount^100 OR (mount?* -mount)^1.0, and test well.
Thanks very much! 2010/8/10 Jan Høydahl / Cominvent <jan....@cominvent.com> > Hi, > > You don't need to duplicate the content into two fields to achieve this. > Try this: > > q=mount OR mount* > > The exact match will always get higher score than the wildcard match > because wildcard matches uses "constant score". > > Making this work for multi term queries is a bit trickier, but something > along these lines: > > q=(mount OR mount*) AND (everest OR everest*) > > -- > Jan Høydahl, search solution architect > Cominvent AS - www.cominvent.com > Training in Europe - www.solrtraining.com > > On 10. aug. 2010, at 09.38, Geert-Jan Brits wrote: > > > you could satisfy this by making 2 fields: > > 1. exactmatch > > 2. wildcardmatch > > > > use copyfield in your schema to copy 1 --> 2 . > > > > q=exactmatch:mount+wildcardmatch:mount*&q.op=OR > > this would score exact matches above (solely) wildcard matches > > > > Geert-Jan > > > > 2010/8/10 yandong yao <yydz...@gmail.com> > > > >> Hi Bastian, > >> > >> Sorry for not make it clear, I also want exact match have higher score > than > >> wildcard match, that is means: if searching 'mount', documents with > 'mount' > >> will have higher score than documents with 'mountain', while 'mount*' > seems > >> treat 'mount' and 'mountain' as same. > >> > >> besides, also want the query to be processed with analyzer, while from > >> > >> > http://wiki.apache.org/lucene-java/LuceneFAQ#Are_Wildcard.2C_Prefix.2C_and_Fuzzy_queries_case_sensitive.3F > >> , > >> Wildcard, Prefix, and Fuzzy queries are not passed through the Analyzer. > >> The > >> rationale is that if search 'mounted', I also want documents with > 'mount' > >> match. > >> > >> So seems built-in wildcard search could not satisfy my requirements if i > >> understand correctly. > >> > >> Thanks very much! > >> > >> > >> 2010/8/9 Bastian Spitzer <bspit...@magix.net> > >> > >>> Wildcard-Search is already built in, just use: > >>> > >>> ?q=umoun* > >>> ?q=mounta* > >>> > >>> -----Ursprüngliche Nachricht----- > >>> Von: yandong yao [mailto:yydz...@gmail.com] > >>> Gesendet: Montag, 9. August 2010 15:57 > >>> An: solr-user@lucene.apache.org > >>> Betreff: how to support "implicit trailing wildcards" > >>> > >>> Hi everyone, > >>> > >>> > >>> How to support 'implicit trailing wildcard *' using Solr, eg: using > >> Google > >>> to search 'umoun', 'umount' will be matched , search 'mounta', > 'mountain' > >>> will be matched. > >>> > >>> From my point of view, there are several ways, both with disadvantages: > >>> > >>> 1) Using EdgeNGramFilterFactory, thus 'umount' will be indexed with > 'u', > >>> 'um', 'umo', 'umou', 'umoun', 'umount'. The disadvantages are: a) the > >> index > >>> size increases dramatically, b) will matches even has no relationship, > >> such > >>> as such 'mount' will match 'mountain' also. > >>> > >>> 2) Using two pass searching: first pass searches term dictionary > through > >>> TermsComponent using given keyword, then using the first matched term > >> from > >>> term dictionary to search again. eg: when user enter 'umoun', > >> TermsComponent > >>> will match 'umount', then use 'umount' to search. The disadvantage are: > >> a) > >>> need to parse query string so that could recognize meta keywords such > as > >>> 'AND', 'OR', '+', '-', '"' (this makes more complex as I am using PHP > >>> client), b) The returned hit counts is not for original search string, > >> thus > >>> will influence other components such as auto-suggest component based on > >> user > >>> search history and hit counts. > >>> > >>> 3) Write custom SearchComponent, while have no idea where/how to start > >>> with. > >>> > >>> Is there any other way in Solr to do this, any feedback/suggestion are > >>> welcome! > >>> > >>> Thanks very much in advance! > >>> > >> > >