Ich habe eine kleine Datenbank in der Dokumente indiziert werden. Das heißt alle Wörter werden als Index gespeichert. Meine Tabellen:
doc_archiv(doc_id,doc_name,doc_path)
index_in_doc(doc_id,index_id)
word_index (index_id,word)
Ich möchte abfragen, welche Wörter in bestimmten Dokumenten enthalten sind.
Mein Query:
SELECT DISTINCT archiv.doc_name, archiv.doc_path FROM doc_archiv as archiv INNER JOIN index_in_doc as im on archiv.doc_id = im.doc_id WHERE ( im.index_id = ANY(SELECT index_id FROM word_index WHERE word = 'irgendwas') AND im.doc_id = ANY( SELECT doc_id FROM index_in_doc WHERE index_id = ( SELECT index_id FROM word_index WHERE word = 'anderes') ));
Hat vielleicht jmd. eine Idee? Die Schwierigkeit besteht darin dass alle Wörter in den Dokumenten vorkommen müssen. Google bekommt das ja auch hin. Ich hoffe mir kann jmd. helfen...
Karsten
doc_archiv(doc_id,doc_name,doc_path)
index_in_doc(doc_id,index_id)
word_index (index_id,word)
Ich möchte abfragen, welche Wörter in bestimmten Dokumenten enthalten sind.
Mein Query:
SELECT DISTINCT archiv.doc_name, archiv.doc_path FROM doc_archiv as archiv INNER JOIN index_in_doc as im on archiv.doc_id = im.doc_id WHERE ( im.index_id = ANY(SELECT index_id FROM word_index WHERE word = 'irgendwas') AND im.doc_id = ANY( SELECT doc_id FROM index_in_doc WHERE index_id = ( SELECT index_id FROM word_index WHERE word = 'anderes') ));
Hat vielleicht jmd. eine Idee? Die Schwierigkeit besteht darin dass alle Wörter in den Dokumenten vorkommen müssen. Google bekommt das ja auch hin. Ich hoffe mir kann jmd. helfen...
Karsten
Zuletzt bearbeitet: