2017-10-11 6 views
2

J'essaye d'implémenter la recherche fulltext dans ecto avec un fragment. Cependant, il lance une erreur qu'il ne me permettra pas d'utiliser le paramètre pour le terme de recherche.Ecto ne permettant pas de paramètre de fragment pour la recherche fulltext mysql

paramètres doivent être de longueur 1 pour la requête% Mariaex.Query

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

Est-ce que ce travail: 'fragment (" MATCH (nom, email, téléphone, Adresse_1, ville, état, postal_code) CONTRE (EN booléens? MODE) ",^(search_term <>" * "))'? – Dogbert

+0

oui, merci beaucoup! pouvez-vous ajouter cela comme une réponse –

Répondre

3

? dans fragment n'est pas une substitution de chaîne simple. Vous devez ajouter le * en dehors du fragment SQL, et le fragment SQL doit avoir juste (? IN BOOLEAN MODE).

Change:

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

Pour:

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