Vra

Ek het hierdie langtermynprobleem gehad om nie heeltemal te verstaan ​​hoe om 'n ordentlike Lucene-soort of rangorde te implementeer nie.Sê ek het 'n lys van stede en hul bevolkings.As iemand "nuut" of "london" soek, wil ek die lys van voorvoegselpassings volgens populasie hê, en ek het dit werk met 'n voorvoegselsoektog en 'n sorteer volgens veld omgekeerd, waar daar 'n bevolkingsveld is, IE New Mexico, New York ;of Londen, Londonderry.

Ek wil egter ook altyd hê dat die presies ooreenstemmende naam bo-aan moet wees.So in die geval van "London" moet die lys "London, London, Londonderry" wys waar die eerste Londen in die VK is en die tweede Londen in Connecticut is, selfs al het Londonderry 'n hoër bevolking as Londen CT.

Het iemand 'n enkele navraag oplossing?

Was dit nuttig?

Oplossing

damblin, laat ek kyk of ek dit reg kry:Jy wil 'n voorvoegsel-gebaseerde navraag maak, en dan die resultate sorteer volgens populasie, en miskien die sorteervolgorde kombineer met voorkeur vir presiese passings.Ek stel voor jy skei die soektog van die sorteer en gebruik 'n CustomSorter vir die sortering:Hier is 'n bloginskrywing wat 'n pasgemaakte sorteerder beskryf. Die klassieke Lucene-boek beskryf dit goed.

Ander wenke

API vir

Sorteer vergelyker

Daar is 'n duidelike vergelykbaar vir elke unieke term in die veld - as sommige dokumente dieselfde term in die veld het, sal die kasreeks inskrywings hê wat dieselfde vergelykbaar is

Jy kan aansoek doen om a

FieldSortedHitQueue

na die sortcomparator wat 'n Comparator-veld het waarvoor die api sê ...

Stoor 'n vergelyker wat ooreenstem met elke veld wat gesorteer word.

Die term kan dus dienooreenkomstig gesorteer word

My huidige oplossing is om 'n presiese soeker en 'n voorvoegselsoeker te skep, beide gesorteer volgens omgekeerde populasie, en dan al my treffers uit te kopieer vanaf die presiese treffers, en beweeg na die voorvoegseltreffers.Dit maak blaai van my resultate effens meer irriterend as wat ek dink dit behoort te wees.

Ek het ook 'n hash gebruik om duplikate uit te skakel, maar het later die voorvoegselsoeker verander in 'n booleaanse navraag van 'n voorvoegselsoektog (MOET) met 'n presiese soektog (MOET NIE), om Lucene te laat verwyder die duplikate.Alhoewel dit selfs meer verkwistend gelyk het.

Wysig:Geskuif na 'n opmerking (aangesien die kenmerk nou bestaan): Yuval F Dankie vir jou blogplasing...Hoe sal die sorteervergelyker weet dat die naamveld "london" presies ooreenstem met die soekterm "london" as dit nie toegang tot die soekterm kan kry nie?

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top