Xapian/omega hoe permissies. Omega gebruiken of alleen xapia

Pagina: 1
Acties:

  • kmf
  • Registratie: November 2000
  • Niet online
Ik heb na dagenlang de beperkte documentatie en de onoverzichtelijke mailinglistarchieven doorgepluisd te hebben eindelijk een werkende basis omega/xapian-zoeksysteem opgebouwd.
Deze is uiteindelijk bedoeld om de searchfunctionaliteit van mijn site te dienen.

Deze maakt gebruik van een zelfgemaakte perlscript+scriptindex (omega) om een index op te bouwen vanuit mysql. Voor een forum heb ik bijvoorbeeld per topic een document opgebouwd met title, url, sample, firstpost en rest_posts. Waarbij de weight op title, dan firstpost dan restpost zit.

De hele website is php/mysql-based. Alle (relevante) content zitten ook in de database, daarom wil ik enkel de DB-indexeren zodat echt relevante dingen naar voren komen.

Nu een aantal vragen waarvan ik geen antwoord kan vinden.

Hoe kan ik permissies in de search opbouwen met omega?
Aan de hand van de groep gebruikers moeten ze uiteraard sommige dignen niet vinden.
Ik heb hiervoor deze topic gevonden, die weer verwijst hier naar toe. Aleen begrijp ik niet hoe ik dit in de praktijk moet toepassen. Als het gewoon een queryopbouw is zoals (<QUERY>) AND (XWORLD:yes OR XUSER:bill OR XGROUP:users OR XGROUP:wheel)
dan kan een gebruiker toch gewoon zeggen (<QUERY>) AND (XWORLD:yes XGROUP:wheel) zeggen en dan krijgt ie toch alles voor zijn kiezen?

Incremental indexing
Hoe kan ik voor incremental indexing zorgen? Als er een nieuw topic/post wordt gemaakt, dat enkel deze worden toegevoegd in de index. Ik zat te denken om bij te houden welke topic zijn aangepast (post toegevoegd) en dan batchgewijs deze nogmaals te indexeren. Maar er moet toch wel een betere oplossing zijn?

Algehele re-indexering
Wordt er op GOT oude topics nog herindexed (en verwijderde dus ook uit de index wordt gehaald)? Of alleen nieuwe dingen? Moet ik dus helemaal geen re-indexering doen, of tenminste op gezette tijden (1 maal per jaar of zo)

Ik wil omega/xapian ook thuis gebruiken om mijn documenten te indexeren, maar nu moet ik met omindex elke keer alles herindexeren. Kan er ook alleen nieuwe documenten geindexed worden?

Omega of xapian
Moet ik gebruik maken van omega en dan xml-spullen uitlezen of kan ik beter gebruik maken van de php-bindings om direct de index aan te spreken (en eventueel ook postings direct te verwerken?)

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


  • kmf
  • Registratie: November 2000
  • Niet online
Iemand enig idee?

One thing's certain: the iPad seriously increases toilet time.. tibber uitnodigingscode: bqufpqmp


  • moto-moi
  • Registratie: Juli 2001
  • Laatst online: 09-06-2011

moto-moi

Ja, ik haat jou ook :w

athlonkmf schreef op dinsdag 03 oktober 2006 @ 13:10:
Hoe kan ik permissies in de search opbouwen met omega?[..]Aleen begrijp ik niet hoe ik dit in de praktijk moet toepassen. Als het gewoon een queryopbouw is zoals (<QUERY>) AND (XWORLD:yes OR XUSER:bill OR XGROUP:users OR XGROUP:wheel)
dan kan een gebruiker toch gewoon zeggen (<QUERY>) AND (XWORLD:yes XGROUP:wheel) zeggen en dan krijgt ie toch alles voor zijn kiezen?
Je kunt bij ons prima alles opvragen via omega, ik heb daar zelfs een nagiosproggie voor :P Alleen is voor de buitenwereld omega alleen via php te gebruiken en voor zover ik weet wordt daar ook de rechten bekeken e.d. :)
Incremental indexing
Hoe kan ik voor incremental indexing zorgen? Als er een nieuw topic/post wordt gemaakt, dat enkel deze worden toegevoegd in de index. Ik zat te denken om bij te houden welke topic zijn aangepast (post toegevoegd) en dan batchgewijs deze nogmaals te indexeren. Maar er moet toch wel een betere oplossing zijn?
Bij React is het zo dat er een tabel F_Timers is, daar staat gewoon een counter en het indexprogramma weet dan vanaf welke message hij moet gaan indexeren.
Algehele re-indexering
Wordt er op GOT oude topics nog herindexed (en verwijderde dus ook uit de index wordt gehaald)? Of alleen nieuwe dingen? Moet ik dus helemaal geen re-indexering doen, of tenminste op gezette tijden (1 maal per jaar of zo)
Alleen de nieuwe/veranderde data wordt geindexeerd, wel is onze omega database hier en daar wat rot aan het worden, en we grijpen de merge dus aan om een complete herindexatie te doen.
Ik wil omega/xapian ook thuis gebruiken om mijn documenten te indexeren, maar nu moet ik met omindex elke keer alles herindexeren. Kan er ook alleen nieuwe documenten geindexed worden?
* moto-moi wijst. Als je dus een tijd o.i.d. bijhoudt, wat elk fatsoenlijk os bijhoudt, zou je dat kunnen doen lijkt me.
Omega of xapian
Moet ik gebruik maken van omega en dan xml-spullen uitlezen of kan ik beter gebruik maken van de php-bindings om direct de index aan te spreken (en eventueel ook postings direct te verwerken?)
Ik heb alleen ervaring met omega, dus ehm, geen idee voor wat betreft deze vraag :P

God, root, what is difference? | Talga Vassternich | IBM zuigt


  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

athlonkmf schreef op dinsdag 03 oktober 2006 @ 13:10:
Waarbij de weight op title, dan firstpost dan restpost zit.
Dat heb je verkeerd geinterpreteerd. De termen in de titel krijgen een hogere wegingsfactor mee dan die in de firstpost en die weer dan in de restpost. Maar het is niet dat de weging op zich achteraf nog kijkt naar waar de term zat. :)
die weer verwijst hier naar toe. Aleen begrijp ik niet hoe ik dit in de praktijk moet toepassen. Als het gewoon een queryopbouw is zoals (<QUERY>) AND (XWORLD:yes OR XUSER:bill OR XGROUP:users OR XGROUP:wheel)
dan kan een gebruiker toch gewoon zeggen (<QUERY>) AND (XWORLD:yes XGROUP:wheel) zeggen en dan krijgt ie toch alles voor zijn kiezen?
Nee, je interpreteert ook dat fout :) Wat je daar ziet is een schematische weergave van wat er uiteindelijk ongeveer aan interne query uit zou moeten rollen. Let vooral op het sleutelwoord "boolean term", dat zijn dus geen gewone zoektermen die je als onderdeel van je zoekopdracht intikt, maar er via een of andere omgeving zelf bij genereerd.

Omega's query-parser heeft er wel wat ondersteuning voor, maar dan kan je niet precies Olly's model gebruiken. Omega gaat er namelijk van uit dat alle booleans van dezelfde soort (zelfde hoofdletter-prefix) samengevoegd moeten worden dmv OR en dat alle groepen booleans dan met een AND samen komen.
Als je dus B=XWORLD:yes B=XUSER:bill B=XGROUP:users B=XGROUP:wheel mee zou geven krijg je uiteindelijk effectief intern zoiets:
(XWORLD:yes) AND (XUSER:bill) AND (XGROUP:users OR XGROUP:wheel)

En dan gaat het natuurlijk niet werken in omega. Ik denk niet dat je deze constructie helemaal kan oplossen met de manier waarop Omega werkt. Wel met een eigen zoek-frontend die verder hetzelfde werkt als Omega, met de perl-bindings moet het vrij eenvoudig zijn om het belangrijkste deel ervan na te maken.
Incremental indexing
Hoe kan ik voor incremental indexing zorgen? Als er een nieuw topic/post wordt gemaakt, dat enkel deze worden toegevoegd in de index. Ik zat te denken om bij te houden welke topic zijn aangepast (post toegevoegd) en dan batchgewijs deze nogmaals te indexeren. Maar er moet toch wel een betere oplossing zijn?
Wij houden de laatste tijd bij dat een topic gewijzigd was en de tijd dat we voor het laatst geindexeerd hebben. Als een topic is verandert stoppen we die opnieuw in de index.
Algehele re-indexering
Wordt er op GOT oude topics nog herindexed (en verwijderde dus ook uit de index wordt gehaald)? Of alleen nieuwe dingen? Moet ik dus helemaal geen re-indexering doen, of tenminste op gezette tijden (1 maal per jaar of zo)
Zie hierboven. Wel is het zo dat we het om technische redenen al een paar keer reindexed hebben (overstappen naar Flint, straks de merge, etc).
Ik wil omega/xapian ook thuis gebruiken om mijn documenten te indexeren, maar nu moet ik met omindex elke keer alles herindexeren. Kan er ook alleen nieuwe documenten geindexed worden?
Omindex kan toch naar de file-date kijken?
Omega of xapian
Moet ik gebruik maken van omega en dan xml-spullen uitlezen of kan ik beter gebruik maken van de php-bindings om direct de index aan te spreken (en eventueel ook postings direct te verwerken?)
omega kan natuurlijk ook een hele simpele text-based output genereren, je zit niet vast aan het gebruik van de templates van omega zelf. Zelf was het bij mij trouwens sneller om omega aan te roepen vanuit php dan om de bindings los te gebruiken, maar dat was pre-0.9.7 dus ik weet niet of dat nog klopt.
Als je echter ook lastigere boolean-query-aanvullingen wilt gebruiken (zoals die rechten van je), dan is het sowieso handiger om met een eigen omgeving te werken (en php-bindings doen het op zich prima).