Dies ist Pseudo-Hausaufgaben (es ist zusätzliche Kredite). Ich habe ein BST bekam die ein Index von Wörtern, die zu den Linien Punkt (woanders gespeichert), die die Wörter enthalten. Ich muß einen Weg zur Umsetzung mit s-Ausdrücke zu suchen, so kann ich kombinieren und (&) und oder (|).
Am Befehl einen Benutzer dazu auffordern, könnte so etwas wie ein:
QUERY ((((fire)&(forest))|((ocean)&(boat)))&(water))
das sollte alle Zeilen zurück, die die Worte Feuer, Wald und Wasser sowie alle Linien enthält, Ozean, Boot und Wasser im Wesentlichen enthalten.
Was ich wirklich brauche Hilfe bei der die Logik für das Parsen und Einfügen von Knoten in den Baum richtig den Ausdruck mehr als der eigentliche Code zu repräsentieren. Das einzige, was ich habe, dass gearbeitet macht Sinn für mich ist eine Reihe von Linien für jedes Wort in dem Ausdruck zurück. Dann je nachdem, ob es eine „oder“ oder „und“ Operation ich auf diesen Sätzen eine Vereinigung oder Kreuzungsart Operation durchführen würde einen neuen Satz zu erstellen und auf den Baum weiter.
Ich bin ein bisschen verloren, wie die Linie zu analysieren, die den Ausdruck enthält. Nachdem einige dachten, es scheint, dass die „weiter“ aus einer der Unterausdrücke desto höher ist es in meinem s-Ausdrucksbaum sein sollte? Ich denke, wenn ich nur einen Schub in der richtigen Richtung, so weit wie das Parsen und Einsetzen die Ausdrücke in dem Baum bekommen könnte, dass ich in Ordnung sein.
Mein Beispiel Baum, kam ich mit für die Abfrage oben sieht ungefähr so aus;
&
/ \
| water
/ \
& &
/ \ / \
fire forest ocean boat
Dies macht Sinn, wie Feuer eine Reihe von Linien zurückkehren würde, dass alle Feuer und Wald enthalten würde eine Reihe von Zeilen zurück, die alle Wälder enthalten. Dann auf die „&“ Ebene würde ich diese beiden Sätze nehmen und einen anderen Satz erstellen, die nur die Linien enthalten, die somit in beiden Sätzen waren mir eine Menge geben, die nur Linien hat, die sowohl Feuer und Wald enthalten.
Mein anderer Stolperstein ist, wie alles im Baum darzustellen, nachdem ich die Hürde des Parsing überwinden. Ich habe eine ExpTreeNode Klasse, die als Knoten für meine ExpTree dienen (die BST) und dann habe ich zwei Subklassen, Operator und Operanden, aber ich bin nicht sicher, ob dies ein guter Ansatz ist.













