@@ -82,38 +82,59 @@ mod tests {
8282 let text_field = schema_builder. add_text_field ( "text" , TEXT ) ;
8383 let schema = schema_builder. build ( ) ;
8484 let index = Index :: create_in_ram ( schema) ;
85+ let mut writer = index. writer ( 16_000_000 ) . unwrap ( ) ;
86+ writer. add_document ( doc ! { } ) . unwrap ( ) ;
87+ writer. commit ( ) . unwrap ( ) ;
8588 let query_parser = QueryParser :: for_index ( & index, vec ! [ text_field] ) ;
8689 let term_a = Term :: from_field_text ( text_field, "a" ) ;
8790 let term_b = Term :: from_field_text ( text_field, "b" ) ;
91+ let searcher = index. reader ( ) . unwrap ( ) . searcher ( ) ;
92+ let segment_reader = & searcher. segment_readers ( ) [ 0 ] ;
8893 {
8994 let query = query_parser. parse_query ( "a" ) . unwrap ( ) ;
9095 let mut terms = Vec :: new ( ) ;
91- query. query_terms ( & mut |term, pos| terms. push ( ( term, pos) ) ) ;
92- assert_eq ! ( vec![ ( & term_a, false ) ] , terms) ;
96+ query. query_terms ( text_field, & segment_reader, & mut |term, pos| {
97+ terms. push ( ( term. clone ( ) , pos) )
98+ } ) ;
99+ assert_eq ! ( vec![ ( term_a. clone( ) , false ) ] , terms) ;
93100 }
94101 {
95102 let query = query_parser. parse_query ( "a b" ) . unwrap ( ) ;
96103 let mut terms = Vec :: new ( ) ;
97- query. query_terms ( & mut |term, pos| terms. push ( ( term, pos) ) ) ;
98- assert_eq ! ( vec![ ( & term_a, false ) , ( & term_b, false ) ] , terms) ;
104+ query. query_terms ( text_field, & segment_reader, & mut |term, pos| {
105+ terms. push ( ( term. clone ( ) , pos) )
106+ } ) ;
107+ assert_eq ! (
108+ vec![ ( term_a. clone( ) , false ) , ( term_b. clone( ) , false ) ] ,
109+ terms
110+ ) ;
99111 }
100112 {
101113 let query = query_parser. parse_query ( "\" a b\" " ) . unwrap ( ) ;
102114 let mut terms = Vec :: new ( ) ;
103- query. query_terms ( & mut |term, pos| terms. push ( ( term, pos) ) ) ;
104- assert_eq ! ( vec![ ( & term_a, true ) , ( & term_b, true ) ] , terms) ;
115+ query. query_terms ( text_field, & segment_reader, & mut |term, pos| {
116+ terms. push ( ( term. clone ( ) , pos) )
117+ } ) ;
118+ assert_eq ! ( vec![ ( term_a. clone( ) , true ) , ( term_b. clone( ) , true ) ] , terms) ;
105119 }
106120 {
107121 let query = query_parser. parse_query ( "a a a a a" ) . unwrap ( ) ;
108122 let mut terms = Vec :: new ( ) ;
109- query. query_terms ( & mut |term, pos| terms. push ( ( term, pos) ) ) ;
110- assert_eq ! ( vec![ ( & term_a, false ) ; 5 ] , terms) ;
123+ query. query_terms ( text_field, & segment_reader, & mut |term, pos| {
124+ terms. push ( ( term. clone ( ) , pos) )
125+ } ) ;
126+ assert_eq ! ( vec![ ( term_a. clone( ) , false ) ; 5 ] , terms) ;
111127 }
112128 {
113129 let query = query_parser. parse_query ( "a -b" ) . unwrap ( ) ;
114130 let mut terms = Vec :: new ( ) ;
115- query. query_terms ( & mut |term, pos| terms. push ( ( term, pos) ) ) ;
116- assert_eq ! ( vec![ ( & term_a, false ) , ( & term_b, false ) ] , terms) ;
131+ query. query_terms ( text_field, & segment_reader, & mut |term, pos| {
132+ terms. push ( ( term. clone ( ) , pos) )
133+ } ) ;
134+ assert_eq ! (
135+ vec![ ( term_a. clone( ) , false ) , ( term_b. clone( ) , false ) ] ,
136+ terms
137+ ) ;
117138 }
118139 }
119140}
0 commit comments