I guess q=mount OR (mount*)^0.01 would work equally as well, i.e. diminishing the effect of wildcard matches. -- Jan Høydahl, search solution architect Cominvent AS - www.cominvent.com Training in Europe - www.solrtraining.com
On 11. aug. 2010, at 17.53, yandong yao wrote: > 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! >>>>> >>>> >> >>