2014-04-24 3 views
8

특정 필드의 길이가 특정 제한을 초과하는 모든 문서를 내 컬렉션에서 찾아야합니다. 필드의 유형은 string입니다. Solr에서 문자열 필드의 길이를 반환하는 함수 쿼리가 있습니까?Solr의 문자열 길이 함수 쿼리

답변

24

해결책은 Solr의 정규식 기능을 사용하는 것입니다. 그래서 그렇게하기 위해 내 스키마를 변경해야

title:/.{42}.*/ 
+0

"description"필드가 292 개의 문자와 28 단어 (컬렉션의 가장 큰 설명) 인 문서를 가지고 있지만,'description : /. {71}. * /'을 쿼리하면 결과가 0이고 쿼리가' description : /. {70}. * /'내 문서를 반환합니다 ... 무엇을 놓치고 있습니까? –

+0

@joey, 필드 유형은 무엇입니까? – snakile

+0

org.apache.solr.schema.TextField –

2

길이 별 쿼리는 기본적으로 지원되지 않으므로 가장 현명한 방법은 별도의 (숫자) 필드를 만들고이 필드로 쿼리하는 것입니다.

+0

예를 들어, 다음 쿼리는 title 필드가 적어도 42 인 모든 문서를 검색? 이것은 내가해야 할 한 가지 일입니다. 길이 필드를 정의한 다음이를 버리는 것이 가장 좋은 방법입니까? – snakile

+2

일회용 일 경우 모든 문서를 반복 할 수 있습니다 (http://stackoverflow.com/questions/5051460/solr-solrj-how-to-iterate-results-without-creating-a-giant- arraylist) 처리를 수동으로 수행하십시오. – mindas

+0

+1 귀하의 솔루션이 작동하고 완전히 괜찮기 때문에,하지만 난 쉽게 생각 해냈다 생각합니다. 내 게시물보기. – snakile