Lucene i eRedaktør

Fra eRedaktør 3.2 er det mulig å benytte søkemotoren Lucene for å finne frem til elementer. Dette gir mange muligheter for både smarte og avanserte søk, men kanskje først og fremst raske søk ved større databaser.

Hva er forskjellen fra "vanlig" søk?

Fordelen med et vanlig søk er at det går direkte mot databasen, og er alltid sikret å søke i nyeste versjon av dataene. Men dersom en skal søke i mange felter og mange rader, kan det fort bli en tung operasjon som tar tid. Vi har implementert Lucene slik at du kan velge å søke på enkeltfelt eller alle feltene samtidig. Du kan også søke etter ord som likner, men som ikke nødvendigvis er stavt likt.

Søkesyntaks

https://lucene.apache.org/core/3_0_3/queryparsersyntax.html

Aktivering

I eRedaktør 3.2 må en aktivere Lucene manuelt under Innstillinger > System > Innhold. På sikt vil sannsynligvis Lucene bli standard søkemotor. Når en har aktivert Lucene, må en kjøre en indeksering av databasen. Dette gjøres ved å trykke på knappen "Oppdater søkeindeksen (kan ta tid)" og vente på at den skal bli ferdig. Det tar ofte litt tid å fullføre indekseringen.

Når aktiveringen er gjort, vil søk inne i eRedaktør og ute på nettsiden (via er:itemlist) bruke Lucene-indeksen.

Når må jeg reindeksere?

Dersom det gjøres endringer som påvirker elementenes søkbarhet eller innhold, som for Example endringer på feltsettet, er det sannsynligvis enklest å reindeksere databasen. Da vil alle element som er gjort søkbare legges til, og element som ikke skal være søkbare lenger tas bort.

For utvikleren

Indeksere element

Dersom du redigerer elementer manuelt i kode eller via spørringer er det viktig å indeksere det eller de elementene som er påvirket. Det er ressurskrevende å reindeksere alle elementene, så bare indekser de elementene som er endret. Du kan indeksere ett og ett element eller flere om gangen:

LuceneSearch.AddUpdateLuceneIndex(Item item);

LuceneSearch.AddUpdateLuceneIndex(IEnumerable<Item> indexItems);

Søke selv

Dersom du ønsker å søke med Lucene via kode, kan det gjøres på to forskjellige måter. Det er en funksjon som tilpasser søkestrengen slik at brukeren ikke trenger å forholde seg til søkesyntaks og en som søker med søkestrengen slik den er angitt. I begge søkene kan en angi om en ønsker å ha med ikke-søkbare og ikke-publiserte element.

Brukervennlig søk som tilpasses (deler opp søkestrengen og legger til tegn som * og/eller ~)

LuceneSearch.Search(string searchString);

Feltene i kursiv er valgfrie:
LuceneSearch.Search(string searchString, string fieldName, maxResults, db, includeUnPublishedItems);

Egendefinert søk som kjøres akkurat slik som angitt (søkesyntaks må angis manuelt)

Feltene i kursiv er valgfrie:
LuceneSearch.SearchDefault(string searchString, string fieldName, maxResults, db, includeUnPublishedItems);