2015-05-29 11 views
5

I Solr 3.3 Version als Data Import Handler (DIH) mit Oracle verwendet haben. Es funktioniert gut für mich.Solr Datumsvariablen Resolver arbeitet nicht mit MySql

Jetzt versuche ich das gleiche mit Mysql. Mit der Änderung in der Datenbank, habe ich die Abfrage geändert in data-config.xml für MySql verwendet.

Die Abfrage hat Variablen, die URL in http übergeben werden. Das gleiche funktioniert gut in Oracle mit variabler Resolver aber nicht in MySql.

Die Abfrage ist:

SELECT DISTINCT doc.document_id , 
    doc.first_version_id, 
    doc.acl_id,      
    fol.folder_id     
FROM ds_document_c doc, 
    ds_folder fol 
WHERE doc.cabinet_id = ${dataimporter.request.cabinetId} 
    AND fol.folder_id = doc.document_folder_id 
    AND doc.index_state_modification_date >= to_date('${dataimporter.request.lastIndexDate}', 'DD/MM/YYYY HH24:MI:SS') 

und die URL ist:

localhost:8983/solr/dataimport?command=full-import&clean=true&commit=true&cabinetId=17083360&lastIndexDate='24/05/2015 00:00:00' 

Solr baut die Abfrage wie folgt:

SELECT DISTINCT doc.document_id , 
    doc.first_version_id, 
    doc.acl_id,      
    fol.folder_id     
FROM ds_document_c doc, 
    ds_folder fol 
WHERE doc.cabinet_id = 24 
AND fol.folder_id = doc.document_folder_id 
AND doc.index_state_modification_date >= to_date('[?, '28/05/2015 11:13:50']', 'DD/MM/YYYY HH24:MI:SS') 

Ich bin nicht in der Lage es uns auf Figur Warum wird die Datumsvariable in diesem Fall nicht richtig aufgelöst?

Wegen to_date('[?, '28/05/2015 11:13:50']' ist nicht in einer richtigen MySql Syntax, ich MySql Syntax Störung erhalten.

Ich erhalte die folgenden Fehler

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[?, '28/05/2015 11:13:50'], 'DD/MM/YYYY HH24:MI:SS')))' at line 1 

Wer weiß, wo das Problem ist? Warum funktioniert der Variable Resolver nicht wie erwartet?

Hinweis: to_date ist eine Funktion, die von uns in MySql geschrieben wurde.

Antwort

2

Ich habe den Quellcode für solr ausgecheckt und versucht, mein Problem zu lösen.

Ich hatte eine Lösung dafür und es funktioniert für mich.

Der variable Vorsatz im Falle Zeitpunkt durchzuführen ist irgendwie ein Array und so hängt es die

'[?, '28/05/2015 11:13:50']'. 

Im TemplateString.java in Methode fillTokens (VariableResolver Resolver) I einen Code hinzugefügt haben, die der entfernt Extra-Teil zum Datum hinzugefügt.

if (i < s.length) { 
    if(s[i].startsWith("[")){ 
     String temp = s[i].replace("[?,", ""); 
     temp = temp.replace("]", ""); 
     sb.append(temp); 
    }else{ 
     sb.append(s[i]); 
    } 
} 

Mit dieser Änderung variable Resolver anhängt das Datum als '28/05/2015 11.13.50' und entfernte meine MySql Syntaxfehler.

(Anmerkung: Ich habe nicht viel Zeit hatte, zu analysieren, warum Datumsvariable als Array aufgelöst ich eine temporäre Lösung getan haben und was mein Problem gelöst..)