2017-10-11 1 views
2

조각으로 ecto에서 전체 텍스트 검색을 구현하려고합니다. 그러나 검색어에 매개 변수를 사용할 수 없다는 오류가 발생합니다.Ecto가 MySQL 전체 텍스트 검색을위한 조각 매개 변수를 허용하지 않습니다.

매개 변수 fragment에서

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

이 작업을 수행합니다

변경 :

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

에 MODE) ",^(search_term <>"* "))'? – Dogbert

+0

네, 정말 고마워요! 대답으로 추가 할 수 있습니까? –

답변

3

? 일반 문자열 대체하지 않습니다 질의 %의 Mariaex.Query에 대한 길이 1이어야합니다. *을 프래그먼트 SQL 외부에 추가해야하며 프래그먼트 SQL은 단지 (? IN BOOLEAN MODE)이어야합니다. `조각 ("MATCH (이름, 이메일, 전화, ADDRESS_1, 도시, 주, 우편 _ 번호) (BOOLEAN IN 반대 :

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