• Jeder User im Forum verpflichtet sich zur Akzeptanz und zur Einhaltung dieser Regeln:
    1. Umgangston
      Ein angemessener höflicher Umgangston, ohne Beleidigungen, Beschimpfungen und aggressive Postings ist für jedes Mitglied Pflicht.
    2. Beiträge
      Jedes Mitglied sollte sich bemühen nur sinnvolle Beiträge zum Thema zu posten. Dabei ist unbedingt vorher zu prüfen, ob das Thema vorher schon einmal diskutiert wurde und daher fortgesetzt werden kann
      • Suchfunktion benutzen!
      • offizielle Doku lesen!
    3. Haftung
      Jeder Beitragsersteller übernimmt die alleinige Verantwortung seiner Inhalte.
    4. Werbung
      Wir erlauben keine Beiträge, Signaturen, Private Nachrichten oder eMails an Benutzer, die Werbung enthalten. Ausgenommen
      sind Stellengesuche /-angebote, welche ausschließlich im Forum "Stellengesuche" veröffentlicht werden dürfen.
    5. Verstöße
      Regelwidrige Beiträge sollten dem Team gemeldet werden. Nach deren Überprüfung werden wir schnellstmöglich
      entsprechend handeln.
    6. Authorität
      Den Anweisungen der Team-Mitglieder (Administratoren und Moderatoren) sind in diesem Forum Folge zu leisten.
      Bei Fragen oder Beschwerden bitte an diese wenden.
    Wir möchten Euch darauf aufmerksam machen, dass es bei Verstößen gegen einen oder mehreren der oben genannten
    Punkte dem Team frei steht entsprechend zu handeln. Dies kann z.B. das Löschen eines Beitrags, das Ausschliessen bzw.
    Sperren von Mitgliedern oder aber lediglich eine Verwarnung sein.

    In diesem Zusammenhang sollte erwähnt werden, dass das Forum automatisch die IP-Adresse jedes Beitrag-Erstellers
    speichert. Bei schweren Vergehen, behalten wir es uns vor, die IP-Adresse zur Strafverfolgung weiterzugeben.
  • Willkommen im Zend Framework Forum

    ZF1 Zend Framework 1 + ZF2 Zend Framework 2

    Das Zend Framework Forum ist seit 2006 die erste Anlaufstelle für Zend Framework Entwickler in Deutschland. Mit über 70.000 Beiträgen und einer steigenden Nutzerzahl bietet das Forum hilfreiche Themen und ZF-Tutorials für professionelle Entwickler, fortgeschrittene Programmierer sowie Zend Framework Einsteiger.
    Wenn dies Dein erster Besuch in der Zend Framework Community ist, lies bitte zuerst die Hilfe - FAQ durch. Du musst Dich registrieren, bevor Du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um die Registrierung zu starten. Du kannst auch jetzt schon Beiträge lesen. Hier im Forum findest Du die Zend Framework Hilfe, die Du suchst!

    Grüße an alle Zend Framework Entwickler. Das Team vom Zend Framework Forum!

    Drupal Agentur

Lucene einfaches Bespiel

Joshu

New member
Hallo ich habe hier ein recht einfaches Lucene Beispiel welches nicht laufen will:

PHP:
$index = Zend_Search_Lucene::create(APPLICATION_PATH . '/../data/index');

$doc = new Zend_Search_Lucene_Document();
$doc->addField(Zend_Search_Lucene_Field::Text('id', 2));
$doc->addField(Zend_Search_Lucene_Field::Text('title', 'someWord'));
// $doc->addField(Zend_Search_Lucene_Field::Text('variety', $varieties));
$index->addDocument($doc);
$index->optimize();
echo $index->count() . "\n";

$index = Zend_Search_Lucene::open(APPLICATION_PATH . '/../data/index');
$hits = $index->find('someWord');
Zend_Debug::dump($hits);
foreach ($hits as $hit) {
    printf("%d %f %s\n", $hit->id, $hit->score, $hit->title);
}

Das Count gibt richtig 1 aus
aber das $hits array ist leer

Wie kann das sein ist doch alles recht simple

Danke schonmal für eure Hilfe
Joshu
 

DennisBecker

Super-Moderator
"id" ist ein reserviertes Feld in Lucene, welches du überschreibst - das solltest du nicht machen. Zum anderen kann ich nichts sagen, da ich es nicht im Kopf habe und mein Nachschlagewerk auch nicht zur Hand habe.
 

dolce

New member
Hast du mal in den Index geschaut was drin steht. Eigentlich müsste die Suche doch "title:some_word" heissen. Wo hast du definiert, dass title als default durchsucht wird?
 

Mouli

New member
Ich hab das Gleiche Problem. Ich befülle erst meinen Index und versuche diesen danach testweise zu Lesen. Aber komischer weiße bekomme ich immer "null" als wert nach der suche wieder.

PHP:
        $index = Zend_Search_Lucene::create("/var/www/index/test");
        $eingabe = array ("123" => "abc","456" => "Hallo","789" => "test","000" => "Alexander");
        foreach ($eingabe as $key=>$value) {
            $doc = new Zend_Search_Lucene_Document();
            $doc->addField(Zend_Search_Lucene_Field::text("id_text", $key));
            $doc->addField(Zend_Search_Lucene_Field::text("text", $value));

            $index->addDocument($doc);
            $index->commit();
        }

        $index = Zend_Search_Lucene::open("/var/www/index/test");

        echo "count: " . $index->count()  . "\n"; // gibt 4 aus
        echo "docs: " . $index->numDocs() . "\n"; // gibt auch 4 aus

        $hits = $index->find('t'); // Hier bekomme ich Null wieder!
        
        Zend_Debug::dump($hits->text);
Kann einer Helfen?
 

Mouli

New member
Soll doch eine Volltext suche sein. d.h. (soweit ich das jetzt verstanden habe) sollte hier eigentlich als Ergebnis raus kommen das er 't' im text "test" gefunden hat. Aber ich habe es auch schon mit "text:Alexander" ausprobiert und erhalte auch dort keine Ergebnisse.
 

Mouli

New member
Kein Kommentar -.- ich hab es gesehen, ist nur ein Flüchtigkeitsfehler XD. Das was die Funktion "find" wiedergibt ist ein Array mit den Hits, das hat natürlich keine Membervariablen. Und mit dem "t" geht es nicht. why? keine Ahnung ^^. Anscheinend habe ich das doch ein bisschen falsch verstanden. Soll dies keine Volltext suche sein?
 

KingCrunch

New member
Und mit dem "t" geht es nicht. why? keine Ahnung ^^. Anscheinend habe ich das doch ein bisschen falsch verstanden. Soll dies keine Volltext suche sein?
Doch doch, aber woher hast du das, dass Volltextsuche auch immer Substring-Matching beinhaltet? Die Volltextsuche durchsucht komplette Texte, allerdings nur nach vollständigen Wörtern ("Token").
Du hast da jetzt grad ma ne handvoll Wörter verwendet. Kannst dir ja mal überlegen, wie immens aufwändig eine Suche nach Substrings bei "richtigen" Texten wäre, vorallen weil sich da der Index nicht mehr so richtig (mit den üblichen Mitteln) aufbauen lässt.
 

Mouli

New member
Okay Oo. ich habe das Substring-matching einfach mal angenommen, aber wenn ich es mir recht überlege ist es echt Zweit aufwändig, wenn man einen gut gefüllten Index hat.

Angenommen ich habe in meinem Index irgend wo "Typ:Focus RS" stehen, dann kann ich ja anscheinend nicht nach "+Focus +RS" suchen, bzw. dies wird nicht als Treffer angesehen, ich werde dies nachher mal ausprobieren, es ist aber schon mal eine Vermutung ^^. Kann ich dann irgend wie dennoch diesen als Treffer bekommen??


Edit:
Okay es wird doch erkannt ^^ und sogar mit einer Hohen "score"
 
Zuletzt bearbeitet:

Mouli

New member
Ich hab noch eine Frage.

Wenn ich angenommen Zwei Indexe erstelle, die vom Aufbau gleich sind(also die Felder sind gleich), jedoch in speziellen fällen nur in Index A suchen möchte, und wiederum gibt es fälle wo ich nur in B, bzw. in A und B suchen möchte. Kann man dies eventuell über ein zusätzliches Feld realisieren, dass ich zb. einen gemeinsamen Index habe, und durch ein Feld wird dan unterschieden ob dieser Datensatz zu A bzw. B gehört?
 

Mouli

New member
Nachdem ich ein Bischen Rumprobiert habe bin ich zum Ergebniss gekommen, dass es möglich ist. Ich habe einfach ein Feld das "client" heißt dort steht entweder 1 oder 2, je nach dem welcher Client benutzt wird ^^, wenn ich dann nach "hallo" suche würde der Suchstring so aussehen:
+hallo +(client:1) -> Nur Client 1
+hallo +(client:2) -> Nur Client 2
+hallo -> Alle Clients!
 
Oben