2017-10-11 3 views
2

Ich versuche, Volltextsuche in Ecto mit einem Fragment zu implementieren. Es gibt jedoch einen Fehler, der es mir nicht erlaubt, den Parameter für den Suchbegriff zu verwenden.Ecto nicht fragment Parameter für mysql Volltextsuche

Parameter müssen

ZB.Repo.all(
    from contact in ZB.Contact, 
    where: contact.account_id == ^account_id, 
    where: fragment("MATCH (name,email,phone,address_1,city,state,postal_code) AGAINST ('?*' IN BOOLEAN MODE)", ^search_term) 
) 
+1

Hat diese Arbeit: 'Fragment (" MATCH (Name, E-Mail, Telefon, ADDRESS_1, Stadt, Staat, postal_code) AGAINST (IN BOOLEAN? MODE) ",^(search_term <>" * "))'? – Dogbert

+0

ja, vielen Dank! Kannst du das als Antwort hinzufügen? –

Antwort

3

? in fragment ist nicht glatt Zeichenfolge Substitution der Länge 1 für die Abfrage% Mariaex.Query sein. Sie müssen die * außerhalb des Fragments SQL anfügen, und das Fragment SQL sollte nur (? IN BOOLEAN MODE) haben.

Wechsel:

fragment("... AGAINST ('?*' IN BOOLEAN MODE)", ^search_term) 

An:

fragment("... AGAINST (? IN BOOLEAN MODE)", ^(search_term <> "*")) 
Verwandte Themen