2014-05-23 5 views
1

예컨대, 내가 검색이 DSL 사용하는 경우 :최대 절전 키워드 검색

Query query = queryBuilder.keyword().onField("person").matching("man").createQuery(); 

을 나는 결과가 단지 필드에서 He is a man 같은 결과가없는 필드 person에 한 단어 man을 포함합니다. 어떻게해야합니까?

누군가 단서가 있습니까 ??? Thx

답변

1

무료 텍스트 검색이 작동하는 방식이 아닙니다. 검색어가 일치하고 단일 용어 만있는 경우에만 일치해야한다고 말할 수 없습니다. 자유 텍스트 검색 엔진의 요점은 주어진 텍스트 코퍼스 내에서 일치하는 것을 찾는 것입니다. 필드 사람이 한 번 "남자"를 포함하고 한 번 "그는 남자"일 경우 두 사람 모두에 대해 일치 항목을 얻습니다 (분석되지 않은 필드를 색인화하지 않는 한). 차이는 점수에 있습니다.

+0

응답을 위해서는 Thx가 너무 많습니다. 그러나 분석되지 않은 필드를 색인화 할 수는 없습니다. U는 그 차이가 점수에 있다고 말했고 점수로 결과를 필터링하는 예제를 줄 수 있습니까? – Stephan

+0

또는 동적 필터를 사용하여 결과 길이를 제어 할 수 있습니까? ("사람"을 검색하면 결과 길이는 3이되어야합니다.) – Stephan

1

표준 Hibernate 쿼리를 사용하는 경우 (예 : HQL에서 from MyClass mc where mc.person = "man"과 유사) HQL에 대한 자세한 정보를 찾을 수 있습니다 here

HQL을 사용할 수없는 경우 JPA criteria API 사용을 고려해보십시오.

@Hardy가 대답에 언급했듯이 사용 사례가 전체 텍스트 검색 방식과 일치하지 않습니다.

+0

그러면 JPA 기준 API를 사용할 수 있습니까? –

+0

일부 제한 사항으로 인해 프로젝트에서 HQL을 사용할 수 없습니다. 최대 절전 모드 검색 쿼리를 실행 한 후 결과에 대한 필터를 작성했습니다. 당신의 응답을위한 Ty. * – Stephan

관련 문제