FCLT#52780 Gemakkelijker met meerdere woorden naar melding zoeken

svn path=/Website/trunk/; revision=37505
This commit is contained in:
Jos Groot Lipman
2018-03-27 13:09:05 +00:00
parent 410ed191a1
commit c56bf035cd

View File

@@ -1477,21 +1477,32 @@ mld = {setmeldingstatus:
// Hier wordt gezocht in de omschrijving, opmerking, de notities en de eventuele (tekst-)kenmerken // Hier wordt gezocht in de omschrijving, opmerking, de notities en de eventuele (tekst-)kenmerken
// Dit is een potentieel en onvermijdelijk dure zoekactie. // Dit is een potentieel en onvermijdelijk dure zoekactie.
function zoek_woord(woord)
{
return "( UPPER(mld_melding_omschrijving) LIKE " + safe.quoted_sql_wild("%" + woord + "%")
+ " OR UPPER(mld_melding_onderwerp) LIKE " + safe.quoted_sql_wild("%" + woord + "%")
+ " OR UPPER(mld_melding_opmerking) LIKE " + safe.quoted_sql_wild("%" + woord + "%")
+ " OR UPPER(mld_melding_externnr) LIKE " + safe.quoted_sql_wild(woord) // wildcards doe je zelf maar.
+ " OR EXISTS (SELECT mld_melding_key"
+ " FROM mld_kenmerkmelding km"
+ " WHERE km.mld_melding_key = m.mld_melding_key"
+ " AND km.mld_kenmerkmelding_verwijder IS NULL"
+ " AND UPPER(km.mld_kenmerkmelding_waarde) LIKE " + safe.quoted_sql_wild("%" + woord + "%") + ")"
+ " OR EXISTS (SELECT mld_melding_key"
+ " FROM mld_melding_note n"
+ " WHERE n.mld_melding_key = m.mld_melding_key "
+ " AND UPPER(n.mld_melding_note_omschrijving) LIKE " + safe.quoted_sql_wild("%" + woord + "%") + ")"
+ ")"
}
if (searchtekst) if (searchtekst)
{ {
sqln += " AND (UPPER(mld_melding_omschrijving) LIKE " + safe.quoted_sql_wild("%" + searchtekst + "%") var woorden = searchtekst.split(" "); // ook komma en zo?
+ " OR UPPER(mld_melding_onderwerp) LIKE " + safe.quoted_sql_wild("%" + searchtekst + "%") var zoekwoorden = [];
+ " OR UPPER(mld_melding_opmerking) LIKE " + safe.quoted_sql_wild("%" + searchtekst + "%") for (var i = 0; i < woorden.length; i++)
+ " OR UPPER(mld_melding_externnr) LIKE " + safe.quoted_sql_wild(searchtekst) // wildcards doe je zelf maar. {
+ " OR EXISTS (SELECT mld_melding_key" zoekwoorden.push(zoek_woord(woorden[i]));
+ " FROM mld_kenmerkmelding km" }
+ " WHERE km.mld_melding_key = m.mld_melding_key" sqln += "AND " + zoekwoorden.join(" AND ");
+ " AND km.mld_kenmerkmelding_verwijder IS NULL"
+ " AND UPPER(km.mld_kenmerkmelding_waarde) LIKE " + safe.quoted_sql_wild("%" + searchtekst + "%") + ")"
+ " OR EXISTS (SELECT mld_melding_key"
+ " FROM mld_melding_note n"
+ " WHERE n.mld_melding_key = m.mld_melding_key "
+ " AND UPPER(n.mld_melding_note_omschrijving) LIKE " + safe.quoted_sql_wild("%" + searchtekst + "%") + "))";
} }
if (omschr) if (omschr)