File: Changes.html

package info (click to toggle)
lucene4.10 4.10.4%2Bdfsg-5
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 81,260 kB
  • sloc: java: 499,919; xml: 17,224; python: 1,956; perl: 1,177; cpp: 330; jsp: 125; makefile: 16; sh: 10
file content (11468 lines) | stat: -rw-r--r-- 803,616 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
4001
4002
4003
4004
4005
4006
4007
4008
4009
4010
4011
4012
4013
4014
4015
4016
4017
4018
4019
4020
4021
4022
4023
4024
4025
4026
4027
4028
4029
4030
4031
4032
4033
4034
4035
4036
4037
4038
4039
4040
4041
4042
4043
4044
4045
4046
4047
4048
4049
4050
4051
4052
4053
4054
4055
4056
4057
4058
4059
4060
4061
4062
4063
4064
4065
4066
4067
4068
4069
4070
4071
4072
4073
4074
4075
4076
4077
4078
4079
4080
4081
4082
4083
4084
4085
4086
4087
4088
4089
4090
4091
4092
4093
4094
4095
4096
4097
4098
4099
4100
4101
4102
4103
4104
4105
4106
4107
4108
4109
4110
4111
4112
4113
4114
4115
4116
4117
4118
4119
4120
4121
4122
4123
4124
4125
4126
4127
4128
4129
4130
4131
4132
4133
4134
4135
4136
4137
4138
4139
4140
4141
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152
4153
4154
4155
4156
4157
4158
4159
4160
4161
4162
4163
4164
4165
4166
4167
4168
4169
4170
4171
4172
4173
4174
4175
4176
4177
4178
4179
4180
4181
4182
4183
4184
4185
4186
4187
4188
4189
4190
4191
4192
4193
4194
4195
4196
4197
4198
4199
4200
4201
4202
4203
4204
4205
4206
4207
4208
4209
4210
4211
4212
4213
4214
4215
4216
4217
4218
4219
4220
4221
4222
4223
4224
4225
4226
4227
4228
4229
4230
4231
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4246
4247
4248
4249
4250
4251
4252
4253
4254
4255
4256
4257
4258
4259
4260
4261
4262
4263
4264
4265
4266
4267
4268
4269
4270
4271
4272
4273
4274
4275
4276
4277
4278
4279
4280
4281
4282
4283
4284
4285
4286
4287
4288
4289
4290
4291
4292
4293
4294
4295
4296
4297
4298
4299
4300
4301
4302
4303
4304
4305
4306
4307
4308
4309
4310
4311
4312
4313
4314
4315
4316
4317
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
4369
4370
4371
4372
4373
4374
4375
4376
4377
4378
4379
4380
4381
4382
4383
4384
4385
4386
4387
4388
4389
4390
4391
4392
4393
4394
4395
4396
4397
4398
4399
4400
4401
4402
4403
4404
4405
4406
4407
4408
4409
4410
4411
4412
4413
4414
4415
4416
4417
4418
4419
4420
4421
4422
4423
4424
4425
4426
4427
4428
4429
4430
4431
4432
4433
4434
4435
4436
4437
4438
4439
4440
4441
4442
4443
4444
4445
4446
4447
4448
4449
4450
4451
4452
4453
4454
4455
4456
4457
4458
4459
4460
4461
4462
4463
4464
4465
4466
4467
4468
4469
4470
4471
4472
4473
4474
4475
4476
4477
4478
4479
4480
4481
4482
4483
4484
4485
4486
4487
4488
4489
4490
4491
4492
4493
4494
4495
4496
4497
4498
4499
4500
4501
4502
4503
4504
4505
4506
4507
4508
4509
4510
4511
4512
4513
4514
4515
4516
4517
4518
4519
4520
4521
4522
4523
4524
4525
4526
4527
4528
4529
4530
4531
4532
4533
4534
4535
4536
4537
4538
4539
4540
4541
4542
4543
4544
4545
4546
4547
4548
4549
4550
4551
4552
4553
4554
4555
4556
4557
4558
4559
4560
4561
4562
4563
4564
4565
4566
4567
4568
4569
4570
4571
4572
4573
4574
4575
4576
4577
4578
4579
4580
4581
4582
4583
4584
4585
4586
4587
4588
4589
4590
4591
4592
4593
4594
4595
4596
4597
4598
4599
4600
4601
4602
4603
4604
4605
4606
4607
4608
4609
4610
4611
4612
4613
4614
4615
4616
4617
4618
4619
4620
4621
4622
4623
4624
4625
4626
4627
4628
4629
4630
4631
4632
4633
4634
4635
4636
4637
4638
4639
4640
4641
4642
4643
4644
4645
4646
4647
4648
4649
4650
4651
4652
4653
4654
4655
4656
4657
4658
4659
4660
4661
4662
4663
4664
4665
4666
4667
4668
4669
4670
4671
4672
4673
4674
4675
4676
4677
4678
4679
4680
4681
4682
4683
4684
4685
4686
4687
4688
4689
4690
4691
4692
4693
4694
4695
4696
4697
4698
4699
4700
4701
4702
4703
4704
4705
4706
4707
4708
4709
4710
4711
4712
4713
4714
4715
4716
4717
4718
4719
4720
4721
4722
4723
4724
4725
4726
4727
4728
4729
4730
4731
4732
4733
4734
4735
4736
4737
4738
4739
4740
4741
4742
4743
4744
4745
4746
4747
4748
4749
4750
4751
4752
4753
4754
4755
4756
4757
4758
4759
4760
4761
4762
4763
4764
4765
4766
4767
4768
4769
4770
4771
4772
4773
4774
4775
4776
4777
4778
4779
4780
4781
4782
4783
4784
4785
4786
4787
4788
4789
4790
4791
4792
4793
4794
4795
4796
4797
4798
4799
4800
4801
4802
4803
4804
4805
4806
4807
4808
4809
4810
4811
4812
4813
4814
4815
4816
4817
4818
4819
4820
4821
4822
4823
4824
4825
4826
4827
4828
4829
4830
4831
4832
4833
4834
4835
4836
4837
4838
4839
4840
4841
4842
4843
4844
4845
4846
4847
4848
4849
4850
4851
4852
4853
4854
4855
4856
4857
4858
4859
4860
4861
4862
4863
4864
4865
4866
4867
4868
4869
4870
4871
4872
4873
4874
4875
4876
4877
4878
4879
4880
4881
4882
4883
4884
4885
4886
4887
4888
4889
4890
4891
4892
4893
4894
4895
4896
4897
4898
4899
4900
4901
4902
4903
4904
4905
4906
4907
4908
4909
4910
4911
4912
4913
4914
4915
4916
4917
4918
4919
4920
4921
4922
4923
4924
4925
4926
4927
4928
4929
4930
4931
4932
4933
4934
4935
4936
4937
4938
4939
4940
4941
4942
4943
4944
4945
4946
4947
4948
4949
4950
4951
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962
4963
4964
4965
4966
4967
4968
4969
4970
4971
4972
4973
4974
4975
4976
4977
4978
4979
4980
4981
4982
4983
4984
4985
4986
4987
4988
4989
4990
4991
4992
4993
4994
4995
4996
4997
4998
4999
5000
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
5119
5120
5121
5122
5123
5124
5125
5126
5127
5128
5129
5130
5131
5132
5133
5134
5135
5136
5137
5138
5139
5140
5141
5142
5143
5144
5145
5146
5147
5148
5149
5150
5151
5152
5153
5154
5155
5156
5157
5158
5159
5160
5161
5162
5163
5164
5165
5166
5167
5168
5169
5170
5171
5172
5173
5174
5175
5176
5177
5178
5179
5180
5181
5182
5183
5184
5185
5186
5187
5188
5189
5190
5191
5192
5193
5194
5195
5196
5197
5198
5199
5200
5201
5202
5203
5204
5205
5206
5207
5208
5209
5210
5211
5212
5213
5214
5215
5216
5217
5218
5219
5220
5221
5222
5223
5224
5225
5226
5227
5228
5229
5230
5231
5232
5233
5234
5235
5236
5237
5238
5239
5240
5241
5242
5243
5244
5245
5246
5247
5248
5249
5250
5251
5252
5253
5254
5255
5256
5257
5258
5259
5260
5261
5262
5263
5264
5265
5266
5267
5268
5269
5270
5271
5272
5273
5274
5275
5276
5277
5278
5279
5280
5281
5282
5283
5284
5285
5286
5287
5288
5289
5290
5291
5292
5293
5294
5295
5296
5297
5298
5299
5300
5301
5302
5303
5304
5305
5306
5307
5308
5309
5310
5311
5312
5313
5314
5315
5316
5317
5318
5319
5320
5321
5322
5323
5324
5325
5326
5327
5328
5329
5330
5331
5332
5333
5334
5335
5336
5337
5338
5339
5340
5341
5342
5343
5344
5345
5346
5347
5348
5349
5350
5351
5352
5353
5354
5355
5356
5357
5358
5359
5360
5361
5362
5363
5364
5365
5366
5367
5368
5369
5370
5371
5372
5373
5374
5375
5376
5377
5378
5379
5380
5381
5382
5383
5384
5385
5386
5387
5388
5389
5390
5391
5392
5393
5394
5395
5396
5397
5398
5399
5400
5401
5402
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413
5414
5415
5416
5417
5418
5419
5420
5421
5422
5423
5424
5425
5426
5427
5428
5429
5430
5431
5432
5433
5434
5435
5436
5437
5438
5439
5440
5441
5442
5443
5444
5445
5446
5447
5448
5449
5450
5451
5452
5453
5454
5455
5456
5457
5458
5459
5460
5461
5462
5463
5464
5465
5466
5467
5468
5469
5470
5471
5472
5473
5474
5475
5476
5477
5478
5479
5480
5481
5482
5483
5484
5485
5486
5487
5488
5489
5490
5491
5492
5493
5494
5495
5496
5497
5498
5499
5500
5501
5502
5503
5504
5505
5506
5507
5508
5509
5510
5511
5512
5513
5514
5515
5516
5517
5518
5519
5520
5521
5522
5523
5524
5525
5526
5527
5528
5529
5530
5531
5532
5533
5534
5535
5536
5537
5538
5539
5540
5541
5542
5543
5544
5545
5546
5547
5548
5549
5550
5551
5552
5553
5554
5555
5556
5557
5558
5559
5560
5561
5562
5563
5564
5565
5566
5567
5568
5569
5570
5571
5572
5573
5574
5575
5576
5577
5578
5579
5580
5581
5582
5583
5584
5585
5586
5587
5588
5589
5590
5591
5592
5593
5594
5595
5596
5597
5598
5599
5600
5601
5602
5603
5604
5605
5606
5607
5608
5609
5610
5611
5612
5613
5614
5615
5616
5617
5618
5619
5620
5621
5622
5623
5624
5625
5626
5627
5628
5629
5630
5631
5632
5633
5634
5635
5636
5637
5638
5639
5640
5641
5642
5643
5644
5645
5646
5647
5648
5649
5650
5651
5652
5653
5654
5655
5656
5657
5658
5659
5660
5661
5662
5663
5664
5665
5666
5667
5668
5669
5670
5671
5672
5673
5674
5675
5676
5677
5678
5679
5680
5681
5682
5683
5684
5685
5686
5687
5688
5689
5690
5691
5692
5693
5694
5695
5696
5697
5698
5699
5700
5701
5702
5703
5704
5705
5706
5707
5708
5709
5710
5711
5712
5713
5714
5715
5716
5717
5718
5719
5720
5721
5722
5723
5724
5725
5726
5727
5728
5729
5730
5731
5732
5733
5734
5735
5736
5737
5738
5739
5740
5741
5742
5743
5744
5745
5746
5747
5748
5749
5750
5751
5752
5753
5754
5755
5756
5757
5758
5759
5760
5761
5762
5763
5764
5765
5766
5767
5768
5769
5770
5771
5772
5773
5774
5775
5776
5777
5778
5779
5780
5781
5782
5783
5784
5785
5786
5787
5788
5789
5790
5791
5792
5793
5794
5795
5796
5797
5798
5799
5800
5801
5802
5803
5804
5805
5806
5807
5808
5809
5810
5811
5812
5813
5814
5815
5816
5817
5818
5819
5820
5821
5822
5823
5824
5825
5826
5827
5828
5829
5830
5831
5832
5833
5834
5835
5836
5837
5838
5839
5840
5841
5842
5843
5844
5845
5846
5847
5848
5849
5850
5851
5852
5853
5854
5855
5856
5857
5858
5859
5860
5861
5862
5863
5864
5865
5866
5867
5868
5869
5870
5871
5872
5873
5874
5875
5876
5877
5878
5879
5880
5881
5882
5883
5884
5885
5886
5887
5888
5889
5890
5891
5892
5893
5894
5895
5896
5897
5898
5899
5900
5901
5902
5903
5904
5905
5906
5907
5908
5909
5910
5911
5912
5913
5914
5915
5916
5917
5918
5919
5920
5921
5922
5923
5924
5925
5926
5927
5928
5929
5930
5931
5932
5933
5934
5935
5936
5937
5938
5939
5940
5941
5942
5943
5944
5945
5946
5947
5948
5949
5950
5951
5952
5953
5954
5955
5956
5957
5958
5959
5960
5961
5962
5963
5964
5965
5966
5967
5968
5969
5970
5971
5972
5973
5974
5975
5976
5977
5978
5979
5980
5981
5982
5983
5984
5985
5986
5987
5988
5989
5990
5991
5992
5993
5994
5995
5996
5997
5998
5999
6000
6001
6002
6003
6004
6005
6006
6007
6008
6009
6010
6011
6012
6013
6014
6015
6016
6017
6018
6019
6020
6021
6022
6023
6024
6025
6026
6027
6028
6029
6030
6031
6032
6033
6034
6035
6036
6037
6038
6039
6040
6041
6042
6043
6044
6045
6046
6047
6048
6049
6050
6051
6052
6053
6054
6055
6056
6057
6058
6059
6060
6061
6062
6063
6064
6065
6066
6067
6068
6069
6070
6071
6072
6073
6074
6075
6076
6077
6078
6079
6080
6081
6082
6083
6084
6085
6086
6087
6088
6089
6090
6091
6092
6093
6094
6095
6096
6097
6098
6099
6100
6101
6102
6103
6104
6105
6106
6107
6108
6109
6110
6111
6112
6113
6114
6115
6116
6117
6118
6119
6120
6121
6122
6123
6124
6125
6126
6127
6128
6129
6130
6131
6132
6133
6134
6135
6136
6137
6138
6139
6140
6141
6142
6143
6144
6145
6146
6147
6148
6149
6150
6151
6152
6153
6154
6155
6156
6157
6158
6159
6160
6161
6162
6163
6164
6165
6166
6167
6168
6169
6170
6171
6172
6173
6174
6175
6176
6177
6178
6179
6180
6181
6182
6183
6184
6185
6186
6187
6188
6189
6190
6191
6192
6193
6194
6195
6196
6197
6198
6199
6200
6201
6202
6203
6204
6205
6206
6207
6208
6209
6210
6211
6212
6213
6214
6215
6216
6217
6218
6219
6220
6221
6222
6223
6224
6225
6226
6227
6228
6229
6230
6231
6232
6233
6234
6235
6236
6237
6238
6239
6240
6241
6242
6243
6244
6245
6246
6247
6248
6249
6250
6251
6252
6253
6254
6255
6256
6257
6258
6259
6260
6261
6262
6263
6264
6265
6266
6267
6268
6269
6270
6271
6272
6273
6274
6275
6276
6277
6278
6279
6280
6281
6282
6283
6284
6285
6286
6287
6288
6289
6290
6291
6292
6293
6294
6295
6296
6297
6298
6299
6300
6301
6302
6303
6304
6305
6306
6307
6308
6309
6310
6311
6312
6313
6314
6315
6316
6317
6318
6319
6320
6321
6322
6323
6324
6325
6326
6327
6328
6329
6330
6331
6332
6333
6334
6335
6336
6337
6338
6339
6340
6341
6342
6343
6344
6345
6346
6347
6348
6349
6350
6351
6352
6353
6354
6355
6356
6357
6358
6359
6360
6361
6362
6363
6364
6365
6366
6367
6368
6369
6370
6371
6372
6373
6374
6375
6376
6377
6378
6379
6380
6381
6382
6383
6384
6385
6386
6387
6388
6389
6390
6391
6392
6393
6394
6395
6396
6397
6398
6399
6400
6401
6402
6403
6404
6405
6406
6407
6408
6409
6410
6411
6412
6413
6414
6415
6416
6417
6418
6419
6420
6421
6422
6423
6424
6425
6426
6427
6428
6429
6430
6431
6432
6433
6434
6435
6436
6437
6438
6439
6440
6441
6442
6443
6444
6445
6446
6447
6448
6449
6450
6451
6452
6453
6454
6455
6456
6457
6458
6459
6460
6461
6462
6463
6464
6465
6466
6467
6468
6469
6470
6471
6472
6473
6474
6475
6476
6477
6478
6479
6480
6481
6482
6483
6484
6485
6486
6487
6488
6489
6490
6491
6492
6493
6494
6495
6496
6497
6498
6499
6500
6501
6502
6503
6504
6505
6506
6507
6508
6509
6510
6511
6512
6513
6514
6515
6516
6517
6518
6519
6520
6521
6522
6523
6524
6525
6526
6527
6528
6529
6530
6531
6532
6533
6534
6535
6536
6537
6538
6539
6540
6541
6542
6543
6544
6545
6546
6547
6548
6549
6550
6551
6552
6553
6554
6555
6556
6557
6558
6559
6560
6561
6562
6563
6564
6565
6566
6567
6568
6569
6570
6571
6572
6573
6574
6575
6576
6577
6578
6579
6580
6581
6582
6583
6584
6585
6586
6587
6588
6589
6590
6591
6592
6593
6594
6595
6596
6597
6598
6599
6600
6601
6602
6603
6604
6605
6606
6607
6608
6609
6610
6611
6612
6613
6614
6615
6616
6617
6618
6619
6620
6621
6622
6623
6624
6625
6626
6627
6628
6629
6630
6631
6632
6633
6634
6635
6636
6637
6638
6639
6640
6641
6642
6643
6644
6645
6646
6647
6648
6649
6650
6651
6652
6653
6654
6655
6656
6657
6658
6659
6660
6661
6662
6663
6664
6665
6666
6667
6668
6669
6670
6671
6672
6673
6674
6675
6676
6677
6678
6679
6680
6681
6682
6683
6684
6685
6686
6687
6688
6689
6690
6691
6692
6693
6694
6695
6696
6697
6698
6699
6700
6701
6702
6703
6704
6705
6706
6707
6708
6709
6710
6711
6712
6713
6714
6715
6716
6717
6718
6719
6720
6721
6722
6723
6724
6725
6726
6727
6728
6729
6730
6731
6732
6733
6734
6735
6736
6737
6738
6739
6740
6741
6742
6743
6744
6745
6746
6747
6748
6749
6750
6751
6752
6753
6754
6755
6756
6757
6758
6759
6760
6761
6762
6763
6764
6765
6766
6767
6768
6769
6770
6771
6772
6773
6774
6775
6776
6777
6778
6779
6780
6781
6782
6783
6784
6785
6786
6787
6788
6789
6790
6791
6792
6793
6794
6795
6796
6797
6798
6799
6800
6801
6802
6803
6804
6805
6806
6807
6808
6809
6810
6811
6812
6813
6814
6815
6816
6817
6818
6819
6820
6821
6822
6823
6824
6825
6826
6827
6828
6829
6830
6831
6832
6833
6834
6835
6836
6837
6838
6839
6840
6841
6842
6843
6844
6845
6846
6847
6848
6849
6850
6851
6852
6853
6854
6855
6856
6857
6858
6859
6860
6861
6862
6863
6864
6865
6866
6867
6868
6869
6870
6871
6872
6873
6874
6875
6876
6877
6878
6879
6880
6881
6882
6883
6884
6885
6886
6887
6888
6889
6890
6891
6892
6893
6894
6895
6896
6897
6898
6899
6900
6901
6902
6903
6904
6905
6906
6907
6908
6909
6910
6911
6912
6913
6914
6915
6916
6917
6918
6919
6920
6921
6922
6923
6924
6925
6926
6927
6928
6929
6930
6931
6932
6933
6934
6935
6936
6937
6938
6939
6940
6941
6942
6943
6944
6945
6946
6947
6948
6949
6950
6951
6952
6953
6954
6955
6956
6957
6958
6959
6960
6961
6962
6963
6964
6965
6966
6967
6968
6969
6970
6971
6972
6973
6974
6975
6976
6977
6978
6979
6980
6981
6982
6983
6984
6985
6986
6987
6988
6989
6990
6991
6992
6993
6994
6995
6996
6997
6998
6999
7000
7001
7002
7003
7004
7005
7006
7007
7008
7009
7010
7011
7012
7013
7014
7015
7016
7017
7018
7019
7020
7021
7022
7023
7024
7025
7026
7027
7028
7029
7030
7031
7032
7033
7034
7035
7036
7037
7038
7039
7040
7041
7042
7043
7044
7045
7046
7047
7048
7049
7050
7051
7052
7053
7054
7055
7056
7057
7058
7059
7060
7061
7062
7063
7064
7065
7066
7067
7068
7069
7070
7071
7072
7073
7074
7075
7076
7077
7078
7079
7080
7081
7082
7083
7084
7085
7086
7087
7088
7089
7090
7091
7092
7093
7094
7095
7096
7097
7098
7099
7100
7101
7102
7103
7104
7105
7106
7107
7108
7109
7110
7111
7112
7113
7114
7115
7116
7117
7118
7119
7120
7121
7122
7123
7124
7125
7126
7127
7128
7129
7130
7131
7132
7133
7134
7135
7136
7137
7138
7139
7140
7141
7142
7143
7144
7145
7146
7147
7148
7149
7150
7151
7152
7153
7154
7155
7156
7157
7158
7159
7160
7161
7162
7163
7164
7165
7166
7167
7168
7169
7170
7171
7172
7173
7174
7175
7176
7177
7178
7179
7180
7181
7182
7183
7184
7185
7186
7187
7188
7189
7190
7191
7192
7193
7194
7195
7196
7197
7198
7199
7200
7201
7202
7203
7204
7205
7206
7207
7208
7209
7210
7211
7212
7213
7214
7215
7216
7217
7218
7219
7220
7221
7222
7223
7224
7225
7226
7227
7228
7229
7230
7231
7232
7233
7234
7235
7236
7237
7238
7239
7240
7241
7242
7243
7244
7245
7246
7247
7248
7249
7250
7251
7252
7253
7254
7255
7256
7257
7258
7259
7260
7261
7262
7263
7264
7265
7266
7267
7268
7269
7270
7271
7272
7273
7274
7275
7276
7277
7278
7279
7280
7281
7282
7283
7284
7285
7286
7287
7288
7289
7290
7291
7292
7293
7294
7295
7296
7297
7298
7299
7300
7301
7302
7303
7304
7305
7306
7307
7308
7309
7310
7311
7312
7313
7314
7315
7316
7317
7318
7319
7320
7321
7322
7323
7324
7325
7326
7327
7328
7329
7330
7331
7332
7333
7334
7335
7336
7337
7338
7339
7340
7341
7342
7343
7344
7345
7346
7347
7348
7349
7350
7351
7352
7353
7354
7355
7356
7357
7358
7359
7360
7361
7362
7363
7364
7365
7366
7367
7368
7369
7370
7371
7372
7373
7374
7375
7376
7377
7378
7379
7380
7381
7382
7383
7384
7385
7386
7387
7388
7389
7390
7391
7392
7393
7394
7395
7396
7397
7398
7399
7400
7401
7402
7403
7404
7405
7406
7407
7408
7409
7410
7411
7412
7413
7414
7415
7416
7417
7418
7419
7420
7421
7422
7423
7424
7425
7426
7427
7428
7429
7430
7431
7432
7433
7434
7435
7436
7437
7438
7439
7440
7441
7442
7443
7444
7445
7446
7447
7448
7449
7450
7451
7452
7453
7454
7455
7456
7457
7458
7459
7460
7461
7462
7463
7464
7465
7466
7467
7468
7469
7470
7471
7472
7473
7474
7475
7476
7477
7478
7479
7480
7481
7482
7483
7484
7485
7486
7487
7488
7489
7490
7491
7492
7493
7494
7495
7496
7497
7498
7499
7500
7501
7502
7503
7504
7505
7506
7507
7508
7509
7510
7511
7512
7513
7514
7515
7516
7517
7518
7519
7520
7521
7522
7523
7524
7525
7526
7527
7528
7529
7530
7531
7532
7533
7534
7535
7536
7537
7538
7539
7540
7541
7542
7543
7544
7545
7546
7547
7548
7549
7550
7551
7552
7553
7554
7555
7556
7557
7558
7559
7560
7561
7562
7563
7564
7565
7566
7567
7568
7569
7570
7571
7572
7573
7574
7575
7576
7577
7578
7579
7580
7581
7582
7583
7584
7585
7586
7587
7588
7589
7590
7591
7592
7593
7594
7595
7596
7597
7598
7599
7600
7601
7602
7603
7604
7605
7606
7607
7608
7609
7610
7611
7612
7613
7614
7615
7616
7617
7618
7619
7620
7621
7622
7623
7624
7625
7626
7627
7628
7629
7630
7631
7632
7633
7634
7635
7636
7637
7638
7639
7640
7641
7642
7643
7644
7645
7646
7647
7648
7649
7650
7651
7652
7653
7654
7655
7656
7657
7658
7659
7660
7661
7662
7663
7664
7665
7666
7667
7668
7669
7670
7671
7672
7673
7674
7675
7676
7677
7678
7679
7680
7681
7682
7683
7684
7685
7686
7687
7688
7689
7690
7691
7692
7693
7694
7695
7696
7697
7698
7699
7700
7701
7702
7703
7704
7705
7706
7707
7708
7709
7710
7711
7712
7713
7714
7715
7716
7717
7718
7719
7720
7721
7722
7723
7724
7725
7726
7727
7728
7729
7730
7731
7732
7733
7734
7735
7736
7737
7738
7739
7740
7741
7742
7743
7744
7745
7746
7747
7748
7749
7750
7751
7752
7753
7754
7755
7756
7757
7758
7759
7760
7761
7762
7763
7764
7765
7766
7767
7768
7769
7770
7771
7772
7773
7774
7775
7776
7777
7778
7779
7780
7781
7782
7783
7784
7785
7786
7787
7788
7789
7790
7791
7792
7793
7794
7795
7796
7797
7798
7799
7800
7801
7802
7803
7804
7805
7806
7807
7808
7809
7810
7811
7812
7813
7814
7815
7816
7817
7818
7819
7820
7821
7822
7823
7824
7825
7826
7827
7828
7829
7830
7831
7832
7833
7834
7835
7836
7837
7838
7839
7840
7841
7842
7843
7844
7845
7846
7847
7848
7849
7850
7851
7852
7853
7854
7855
7856
7857
7858
7859
7860
7861
7862
7863
7864
7865
7866
7867
7868
7869
7870
7871
7872
7873
7874
7875
7876
7877
7878
7879
7880
7881
7882
7883
7884
7885
7886
7887
7888
7889
7890
7891
7892
7893
7894
7895
7896
7897
7898
7899
7900
7901
7902
7903
7904
7905
7906
7907
7908
7909
7910
7911
7912
7913
7914
7915
7916
7917
7918
7919
7920
7921
7922
7923
7924
7925
7926
7927
7928
7929
7930
7931
7932
7933
7934
7935
7936
7937
7938
7939
7940
7941
7942
7943
7944
7945
7946
7947
7948
7949
7950
7951
7952
7953
7954
7955
7956
7957
7958
7959
7960
7961
7962
7963
7964
7965
7966
7967
7968
7969
7970
7971
7972
7973
7974
7975
7976
7977
7978
7979
7980
7981
7982
7983
7984
7985
7986
7987
7988
7989
7990
7991
7992
7993
7994
7995
7996
7997
7998
7999
8000
8001
8002
8003
8004
8005
8006
8007
8008
8009
8010
8011
8012
8013
8014
8015
8016
8017
8018
8019
8020
8021
8022
8023
8024
8025
8026
8027
8028
8029
8030
8031
8032
8033
8034
8035
8036
8037
8038
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049
8050
8051
8052
8053
8054
8055
8056
8057
8058
8059
8060
8061
8062
8063
8064
8065
8066
8067
8068
8069
8070
8071
8072
8073
8074
8075
8076
8077
8078
8079
8080
8081
8082
8083
8084
8085
8086
8087
8088
8089
8090
8091
8092
8093
8094
8095
8096
8097
8098
8099
8100
8101
8102
8103
8104
8105
8106
8107
8108
8109
8110
8111
8112
8113
8114
8115
8116
8117
8118
8119
8120
8121
8122
8123
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134
8135
8136
8137
8138
8139
8140
8141
8142
8143
8144
8145
8146
8147
8148
8149
8150
8151
8152
8153
8154
8155
8156
8157
8158
8159
8160
8161
8162
8163
8164
8165
8166
8167
8168
8169
8170
8171
8172
8173
8174
8175
8176
8177
8178
8179
8180
8181
8182
8183
8184
8185
8186
8187
8188
8189
8190
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
8205
8206
8207
8208
8209
8210
8211
8212
8213
8214
8215
8216
8217
8218
8219
8220
8221
8222
8223
8224
8225
8226
8227
8228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
8239
8240
8241
8242
8243
8244
8245
8246
8247
8248
8249
8250
8251
8252
8253
8254
8255
8256
8257
8258
8259
8260
8261
8262
8263
8264
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275
8276
8277
8278
8279
8280
8281
8282
8283
8284
8285
8286
8287
8288
8289
8290
8291
8292
8293
8294
8295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
8306
8307
8308
8309
8310
8311
8312
8313
8314
8315
8316
8317
8318
8319
8320
8321
8322
8323
8324
8325
8326
8327
8328
8329
8330
8331
8332
8333
8334
8335
8336
8337
8338
8339
8340
8341
8342
8343
8344
8345
8346
8347
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358
8359
8360
8361
8362
8363
8364
8365
8366
8367
8368
8369
8370
8371
8372
8373
8374
8375
8376
8377
8378
8379
8380
8381
8382
8383
8384
8385
8386
8387
8388
8389
8390
8391
8392
8393
8394
8395
8396
8397
8398
8399
8400
8401
8402
8403
8404
8405
8406
8407
8408
8409
8410
8411
8412
8413
8414
8415
8416
8417
8418
8419
8420
8421
8422
8423
8424
8425
8426
8427
8428
8429
8430
8431
8432
8433
8434
8435
8436
8437
8438
8439
8440
8441
8442
8443
8444
8445
8446
8447
8448
8449
8450
8451
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462
8463
8464
8465
8466
8467
8468
8469
8470
8471
8472
8473
8474
8475
8476
8477
8478
8479
8480
8481
8482
8483
8484
8485
8486
8487
8488
8489
8490
8491
8492
8493
8494
8495
8496
8497
8498
8499
8500
8501
8502
8503
8504
8505
8506
8507
8508
8509
8510
8511
8512
8513
8514
8515
8516
8517
8518
8519
8520
8521
8522
8523
8524
8525
8526
8527
8528
8529
8530
8531
8532
8533
8534
8535
8536
8537
8538
8539
8540
8541
8542
8543
8544
8545
8546
8547
8548
8549
8550
8551
8552
8553
8554
8555
8556
8557
8558
8559
8560
8561
8562
8563
8564
8565
8566
8567
8568
8569
8570
8571
8572
8573
8574
8575
8576
8577
8578
8579
8580
8581
8582
8583
8584
8585
8586
8587
8588
8589
8590
8591
8592
8593
8594
8595
8596
8597
8598
8599
8600
8601
8602
8603
8604
8605
8606
8607
8608
8609
8610
8611
8612
8613
8614
8615
8616
8617
8618
8619
8620
8621
8622
8623
8624
8625
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636
8637
8638
8639
8640
8641
8642
8643
8644
8645
8646
8647
8648
8649
8650
8651
8652
8653
8654
8655
8656
8657
8658
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671
8672
8673
8674
8675
8676
8677
8678
8679
8680
8681
8682
8683
8684
8685
8686
8687
8688
8689
8690
8691
8692
8693
8694
8695
8696
8697
8698
8699
8700
8701
8702
8703
8704
8705
8706
8707
8708
8709
8710
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721
8722
8723
8724
8725
8726
8727
8728
8729
8730
8731
8732
8733
8734
8735
8736
8737
8738
8739
8740
8741
8742
8743
8744
8745
8746
8747
8748
8749
8750
8751
8752
8753
8754
8755
8756
8757
8758
8759
8760
8761
8762
8763
8764
8765
8766
8767
8768
8769
8770
8771
8772
8773
8774
8775
8776
8777
8778
8779
8780
8781
8782
8783
8784
8785
8786
8787
8788
8789
8790
8791
8792
8793
8794
8795
8796
8797
8798
8799
8800
8801
8802
8803
8804
8805
8806
8807
8808
8809
8810
8811
8812
8813
8814
8815
8816
8817
8818
8819
8820
8821
8822
8823
8824
8825
8826
8827
8828
8829
8830
8831
8832
8833
8834
8835
8836
8837
8838
8839
8840
8841
8842
8843
8844
8845
8846
8847
8848
8849
8850
8851
8852
8853
8854
8855
8856
8857
8858
8859
8860
8861
8862
8863
8864
8865
8866
8867
8868
8869
8870
8871
8872
8873
8874
8875
8876
8877
8878
8879
8880
8881
8882
8883
8884
8885
8886
8887
8888
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899
8900
8901
8902
8903
8904
8905
8906
8907
8908
8909
8910
8911
8912
8913
8914
8915
8916
8917
8918
8919
8920
8921
8922
8923
8924
8925
8926
8927
8928
8929
8930
8931
8932
8933
8934
8935
8936
8937
8938
8939
8940
8941
8942
8943
8944
8945
8946
8947
8948
8949
8950
8951
8952
8953
8954
8955
8956
8957
8958
8959
8960
8961
8962
8963
8964
8965
8966
8967
8968
8969
8970
8971
8972
8973
8974
8975
8976
8977
8978
8979
8980
8981
8982
8983
8984
8985
8986
8987
8988
8989
8990
8991
8992
8993
8994
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005
9006
9007
9008
9009
9010
9011
9012
9013
9014
9015
9016
9017
9018
9019
9020
9021
9022
9023
9024
9025
9026
9027
9028
9029
9030
9031
9032
9033
9034
9035
9036
9037
9038
9039
9040
9041
9042
9043
9044
9045
9046
9047
9048
9049
9050
9051
9052
9053
9054
9055
9056
9057
9058
9059
9060
9061
9062
9063
9064
9065
9066
9067
9068
9069
9070
9071
9072
9073
9074
9075
9076
9077
9078
9079
9080
9081
9082
9083
9084
9085
9086
9087
9088
9089
9090
9091
9092
9093
9094
9095
9096
9097
9098
9099
9100
9101
9102
9103
9104
9105
9106
9107
9108
9109
9110
9111
9112
9113
9114
9115
9116
9117
9118
9119
9120
9121
9122
9123
9124
9125
9126
9127
9128
9129
9130
9131
9132
9133
9134
9135
9136
9137
9138
9139
9140
9141
9142
9143
9144
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155
9156
9157
9158
9159
9160
9161
9162
9163
9164
9165
9166
9167
9168
9169
9170
9171
9172
9173
9174
9175
9176
9177
9178
9179
9180
9181
9182
9183
9184
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195
9196
9197
9198
9199
9200
9201
9202
9203
9204
9205
9206
9207
9208
9209
9210
9211
9212
9213
9214
9215
9216
9217
9218
9219
9220
9221
9222
9223
9224
9225
9226
9227
9228
9229
9230
9231
9232
9233
9234
9235
9236
9237
9238
9239
9240
9241
9242
9243
9244
9245
9246
9247
9248
9249
9250
9251
9252
9253
9254
9255
9256
9257
9258
9259
9260
9261
9262
9263
9264
9265
9266
9267
9268
9269
9270
9271
9272
9273
9274
9275
9276
9277
9278
9279
9280
9281
9282
9283
9284
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295
9296
9297
9298
9299
9300
9301
9302
9303
9304
9305
9306
9307
9308
9309
9310
9311
9312
9313
9314
9315
9316
9317
9318
9319
9320
9321
9322
9323
9324
9325
9326
9327
9328
9329
9330
9331
9332
9333
9334
9335
9336
9337
9338
9339
9340
9341
9342
9343
9344
9345
9346
9347
9348
9349
9350
9351
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364
9365
9366
9367
9368
9369
9370
9371
9372
9373
9374
9375
9376
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387
9388
9389
9390
9391
9392
9393
9394
9395
9396
9397
9398
9399
9400
9401
9402
9403
9404
9405
9406
9407
9408
9409
9410
9411
9412
9413
9414
9415
9416
9417
9418
9419
9420
9421
9422
9423
9424
9425
9426
9427
9428
9429
9430
9431
9432
9433
9434
9435
9436
9437
9438
9439
9440
9441
9442
9443
9444
9445
9446
9447
9448
9449
9450
9451
9452
9453
9454
9455
9456
9457
9458
9459
9460
9461
9462
9463
9464
9465
9466
9467
9468
9469
9470
9471
9472
9473
9474
9475
9476
9477
9478
9479
9480
9481
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492
9493
9494
9495
9496
9497
9498
9499
9500
9501
9502
9503
9504
9505
9506
9507
9508
9509
9510
9511
9512
9513
9514
9515
9516
9517
9518
9519
9520
9521
9522
9523
9524
9525
9526
9527
9528
9529
9530
9531
9532
9533
9534
9535
9536
9537
9538
9539
9540
9541
9542
9543
9544
9545
9546
9547
9548
9549
9550
9551
9552
9553
9554
9555
9556
9557
9558
9559
9560
9561
9562
9563
9564
9565
9566
9567
9568
9569
9570
9571
9572
9573
9574
9575
9576
9577
9578
9579
9580
9581
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592
9593
9594
9595
9596
9597
9598
9599
9600
9601
9602
9603
9604
9605
9606
9607
9608
9609
9610
9611
9612
9613
9614
9615
9616
9617
9618
9619
9620
9621
9622
9623
9624
9625
9626
9627
9628
9629
9630
9631
9632
9633
9634
9635
9636
9637
9638
9639
9640
9641
9642
9643
9644
9645
9646
9647
9648
9649
9650
9651
9652
9653
9654
9655
9656
9657
9658
9659
9660
9661
9662
9663
9664
9665
9666
9667
9668
9669
9670
9671
9672
9673
9674
9675
9676
9677
9678
9679
9680
9681
9682
9683
9684
9685
9686
9687
9688
9689
9690
9691
9692
9693
9694
9695
9696
9697
9698
9699
9700
9701
9702
9703
9704
9705
9706
9707
9708
9709
9710
9711
9712
9713
9714
9715
9716
9717
9718
9719
9720
9721
9722
9723
9724
9725
9726
9727
9728
9729
9730
9731
9732
9733
9734
9735
9736
9737
9738
9739
9740
9741
9742
9743
9744
9745
9746
9747
9748
9749
9750
9751
9752
9753
9754
9755
9756
9757
9758
9759
9760
9761
9762
9763
9764
9765
9766
9767
9768
9769
9770
9771
9772
9773
9774
9775
9776
9777
9778
9779
9780
9781
9782
9783
9784
9785
9786
9787
9788
9789
9790
9791
9792
9793
9794
9795
9796
9797
9798
9799
9800
9801
9802
9803
9804
9805
9806
9807
9808
9809
9810
9811
9812
9813
9814
9815
9816
9817
9818
9819
9820
9821
9822
9823
9824
9825
9826
9827
9828
9829
9830
9831
9832
9833
9834
9835
9836
9837
9838
9839
9840
9841
9842
9843
9844
9845
9846
9847
9848
9849
9850
9851
9852
9853
9854
9855
9856
9857
9858
9859
9860
9861
9862
9863
9864
9865
9866
9867
9868
9869
9870
9871
9872
9873
9874
9875
9876
9877
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888
9889
9890
9891
9892
9893
9894
9895
9896
9897
9898
9899
9900
9901
9902
9903
9904
9905
9906
9907
9908
9909
9910
9911
9912
9913
9914
9915
9916
9917
9918
9919
9920
9921
9922
9923
9924
9925
9926
9927
9928
9929
9930
9931
9932
9933
9934
9935
9936
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947
9948
9949
9950
9951
9952
9953
9954
9955
9956
9957
9958
9959
9960
9961
9962
9963
9964
9965
9966
9967
9968
9969
9970
9971
9972
9973
9974
9975
9976
9977
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988
9989
9990
9991
9992
9993
9994
9995
9996
9997
9998
9999
10000
10001
10002
10003
10004
10005
10006
10007
10008
10009
10010
10011
10012
10013
10014
10015
10016
10017
10018
10019
10020
10021
10022
10023
10024
10025
10026
10027
10028
10029
10030
10031
10032
10033
10034
10035
10036
10037
10038
10039
10040
10041
10042
10043
10044
10045
10046
10047
10048
10049
10050
10051
10052
10053
10054
10055
10056
10057
10058
10059
10060
10061
10062
10063
10064
10065
10066
10067
10068
10069
10070
10071
10072
10073
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091
10092
10093
10094
10095
10096
10097
10098
10099
10100
10101
10102
10103
10104
10105
10106
10107
10108
10109
10110
10111
10112
10113
10114
10115
10116
10117
10118
10119
10120
10121
10122
10123
10124
10125
10126
10127
10128
10129
10130
10131
10132
10133
10134
10135
10136
10137
10138
10139
10140
10141
10142
10143
10144
10145
10146
10147
10148
10149
10150
10151
10152
10153
10154
10155
10156
10157
10158
10159
10160
10161
10162
10163
10164
10165
10166
10167
10168
10169
10170
10171
10172
10173
10174
10175
10176
10177
10178
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189
10190
10191
10192
10193
10194
10195
10196
10197
10198
10199
10200
10201
10202
10203
10204
10205
10206
10207
10208
10209
10210
10211
10212
10213
10214
10215
10216
10217
10218
10219
10220
10221
10222
10223
10224
10225
10226
10227
10228
10229
10230
10231
10232
10233
10234
10235
10236
10237
10238
10239
10240
10241
10242
10243
10244
10245
10246
10247
10248
10249
10250
10251
10252
10253
10254
10255
10256
10257
10258
10259
10260
10261
10262
10263
10264
10265
10266
10267
10268
10269
10270
10271
10272
10273
10274
10275
10276
10277
10278
10279
10280
10281
10282
10283
10284
10285
10286
10287
10288
10289
10290
10291
10292
10293
10294
10295
10296
10297
10298
10299
10300
10301
10302
10303
10304
10305
10306
10307
10308
10309
10310
10311
10312
10313
10314
10315
10316
10317
10318
10319
10320
10321
10322
10323
10324
10325
10326
10327
10328
10329
10330
10331
10332
10333
10334
10335
10336
10337
10338
10339
10340
10341
10342
10343
10344
10345
10346
10347
10348
10349
10350
10351
10352
10353
10354
10355
10356
10357
10358
10359
10360
10361
10362
10363
10364
10365
10366
10367
10368
10369
10370
10371
10372
10373
10374
10375
10376
10377
10378
10379
10380
10381
10382
10383
10384
10385
10386
10387
10388
10389
10390
10391
10392
10393
10394
10395
10396
10397
10398
10399
10400
10401
10402
10403
10404
10405
10406
10407
10408
10409
10410
10411
10412
10413
10414
10415
10416
10417
10418
10419
10420
10421
10422
10423
10424
10425
10426
10427
10428
10429
10430
10431
10432
10433
10434
10435
10436
10437
10438
10439
10440
10441
10442
10443
10444
10445
10446
10447
10448
10449
10450
10451
10452
10453
10454
10455
10456
10457
10458
10459
10460
10461
10462
10463
10464
10465
10466
10467
10468
10469
10470
10471
10472
10473
10474
10475
10476
10477
10478
10479
10480
10481
10482
10483
10484
10485
10486
10487
10488
10489
10490
10491
10492
10493
10494
10495
10496
10497
10498
10499
10500
10501
10502
10503
10504
10505
10506
10507
10508
10509
10510
10511
10512
10513
10514
10515
10516
10517
10518
10519
10520
10521
10522
10523
10524
10525
10526
10527
10528
10529
10530
10531
10532
10533
10534
10535
10536
10537
10538
10539
10540
10541
10542
10543
10544
10545
10546
10547
10548
10549
10550
10551
10552
10553
10554
10555
10556
10557
10558
10559
10560
10561
10562
10563
10564
10565
10566
10567
10568
10569
10570
10571
10572
10573
10574
10575
10576
10577
10578
10579
10580
10581
10582
10583
10584
10585
10586
10587
10588
10589
10590
10591
10592
10593
10594
10595
10596
10597
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608
10609
10610
10611
10612
10613
10614
10615
10616
10617
10618
10619
10620
10621
10622
10623
10624
10625
10626
10627
10628
10629
10630
10631
10632
10633
10634
10635
10636
10637
10638
10639
10640
10641
10642
10643
10644
10645
10646
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657
10658
10659
10660
10661
10662
10663
10664
10665
10666
10667
10668
10669
10670
10671
10672
10673
10674
10675
10676
10677
10678
10679
10680
10681
10682
10683
10684
10685
10686
10687
10688
10689
10690
10691
10692
10693
10694
10695
10696
10697
10698
10699
10700
10701
10702
10703
10704
10705
10706
10707
10708
10709
10710
10711
10712
10713
10714
10715
10716
10717
10718
10719
10720
10721
10722
10723
10724
10725
10726
10727
10728
10729
10730
10731
10732
10733
10734
10735
10736
10737
10738
10739
10740
10741
10742
10743
10744
10745
10746
10747
10748
10749
10750
10751
10752
10753
10754
10755
10756
10757
10758
10759
10760
10761
10762
10763
10764
10765
10766
10767
10768
10769
10770
10771
10772
10773
10774
10775
10776
10777
10778
10779
10780
10781
10782
10783
10784
10785
10786
10787
10788
10789
10790
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801
10802
10803
10804
10805
10806
10807
10808
10809
10810
10811
10812
10813
10814
10815
10816
10817
10818
10819
10820
10821
10822
10823
10824
10825
10826
10827
10828
10829
10830
10831
10832
10833
10834
10835
10836
10837
10838
10839
10840
10841
10842
10843
10844
10845
10846
10847
10848
10849
10850
10851
10852
10853
10854
10855
10856
10857
10858
10859
10860
10861
10862
10863
10864
10865
10866
10867
10868
10869
10870
10871
10872
10873
10874
10875
10876
10877
10878
10879
10880
10881
10882
10883
10884
10885
10886
10887
10888
10889
10890
10891
10892
10893
10894
10895
10896
10897
10898
10899
10900
10901
10902
10903
10904
10905
10906
10907
10908
10909
10910
10911
10912
10913
10914
10915
10916
10917
10918
10919
10920
10921
10922
10923
10924
10925
10926
10927
10928
10929
10930
10931
10932
10933
10934
10935
10936
10937
10938
10939
10940
10941
10942
10943
10944
10945
10946
10947
10948
10949
10950
10951
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964
10965
10966
10967
10968
10969
10970
10971
10972
10973
10974
10975
10976
10977
10978
10979
10980
10981
10982
10983
10984
10985
10986
10987
10988
10989
10990
10991
10992
10993
10994
10995
10996
10997
10998
10999
11000
11001
11002
11003
11004
11005
11006
11007
11008
11009
11010
11011
11012
11013
11014
11015
11016
11017
11018
11019
11020
11021
11022
11023
11024
11025
11026
11027
11028
11029
11030
11031
11032
11033
11034
11035
11036
11037
11038
11039
11040
11041
11042
11043
11044
11045
11046
11047
11048
11049
11050
11051
11052
11053
11054
11055
11056
11057
11058
11059
11060
11061
11062
11063
11064
11065
11066
11067
11068
11069
11070
11071
11072
11073
11074
11075
11076
11077
11078
11079
11080
11081
11082
11083
11084
11085
11086
11087
11088
11089
11090
11091
11092
11093
11094
11095
11096
11097
11098
11099
11100
11101
11102
11103
11104
11105
11106
11107
11108
11109
11110
11111
11112
11113
11114
11115
11116
11117
11118
11119
11120
11121
11122
11123
11124
11125
11126
11127
11128
11129
11130
11131
11132
11133
11134
11135
11136
11137
11138
11139
11140
11141
11142
11143
11144
11145
11146
11147
11148
11149
11150
11151
11152
11153
11154
11155
11156
11157
11158
11159
11160
11161
11162
11163
11164
11165
11166
11167
11168
11169
11170
11171
11172
11173
11174
11175
11176
11177
11178
11179
11180
11181
11182
11183
11184
11185
11186
11187
11188
11189
11190
11191
11192
11193
11194
11195
11196
11197
11198
11199
11200
11201
11202
11203
11204
11205
11206
11207
11208
11209
11210
11211
11212
11213
11214
11215
11216
11217
11218
11219
11220
11221
11222
11223
11224
11225
11226
11227
11228
11229
11230
11231
11232
11233
11234
11235
11236
11237
11238
11239
11240
11241
11242
11243
11244
11245
11246
11247
11248
11249
11250
11251
11252
11253
11254
11255
11256
11257
11258
11259
11260
11261
11262
11263
11264
11265
11266
11267
11268
11269
11270
11271
11272
11273
11274
11275
11276
11277
11278
11279
11280
11281
11282
11283
11284
11285
11286
11287
11288
11289
11290
11291
11292
11293
11294
11295
11296
11297
11298
11299
11300
11301
11302
11303
11304
11305
11306
11307
11308
11309
11310
11311
11312
11313
11314
11315
11316
11317
11318
11319
11320
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331
11332
11333
11334
11335
11336
11337
11338
11339
11340
11341
11342
11343
11344
11345
11346
11347
11348
11349
11350
11351
11352
11353
11354
11355
11356
11357
11358
11359
11360
11361
11362
11363
11364
11365
11366
11367
11368
11369
11370
11371
11372
11373
11374
11375
11376
11377
11378
11379
11380
11381
11382
11383
11384
11385
11386
11387
11388
11389
11390
11391
11392
11393
11394
11395
11396
11397
11398
11399
11400
11401
11402
11403
11404
11405
11406
11407
11408
11409
11410
11411
11412
11413
11414
11415
11416
11417
11418
11419
11420
11421
11422
11423
11424
11425
11426
11427
11428
11429
11430
11431
11432
11433
11434
11435
11436
11437
11438
11439
11440
11441
11442
11443
11444
11445
11446
11447
11448
11449
11450
11451
11452
11453
11454
11455
11456
11457
11458
11459
11460
11461
11462
11463
11464
11465
11466
11467
11468
<!--
**********************************************************
** WARNING: This file is generated from CHANGES.txt by the 
**          Perl script 'changes2html.pl'.
**          Do *not* edit this file!
**********************************************************
          
****************************************************************************
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License.  You may obtain a copy of the License at
*
*     http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
****************************************************************************
-->
<html>
<head>
  <title>Lucene Change Log</title>
  <link rel="stylesheet" href="ChangesFancyStyle.css" title="Fancy">
  <link rel="alternate stylesheet" href="ChangesSimpleStyle.css" title="Simple">
  <link rel="alternate stylesheet" href="ChangesFixedWidthStyle.css" title="Fixed Width">
  <META http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
  <SCRIPT>
    function toggleList(id) {
      listStyle = document.getElementById(id + '.list').style;
      anchor = document.getElementById(id);
      if (listStyle.display == 'none') {
        listStyle.display = 'block';
        anchor.title = 'Click to collapse';
        location.href = '#' + id;
      } else {
        listStyle.display = 'none';
        anchor.title = 'Click to expand';
      }
      var expandButton = document.getElementById('expand.button');
      expandButton.disabled = false;
      var collapseButton = document.getElementById('collapse.button');
      collapseButton.disabled = false;
    }

    function collapseAll() {
      var unorderedLists = document.getElementsByTagName("ul");
      for (var i = 0; i < unorderedLists.length; i++) {
        if (unorderedLists[i].className != 'bulleted-list')
          unorderedLists[i].style.display = "none";
        else
          unorderedLists[i].style.display = "block";
      }
      var orderedLists = document.getElementsByTagName("ol");
      for (var i = 0; i < orderedLists.length; i++)
        orderedLists[i].style.display = "none"; 
      var anchors = document.getElementsByTagName("a");
      for (var i = 0 ; i < anchors.length; i++) {
        if (anchors[i].id != '')
          anchors[i].title = 'Click to expand';
      }
      var collapseButton = document.getElementById('collapse.button');
      collapseButton.disabled = true;
      var expandButton = document.getElementById('expand.button');
      expandButton.disabled = false;
    }

    function expandAll() {
      var unorderedLists = document.getElementsByTagName("ul");
      for (var i = 0; i < unorderedLists.length; i++)
        unorderedLists[i].style.display = "block";
      var orderedLists = document.getElementsByTagName("ol");
      for (var i = 0; i < orderedLists.length; i++)
        orderedLists[i].style.display = "block"; 
      var anchors = document.getElementsByTagName("a");
      for (var i = 0 ; i < anchors.length; i++) {
        if (anchors[i].id != '')
          anchors[i].title = 'Click to collapse';
      }
      var expandButton = document.getElementById('expand.button');
      expandButton.disabled = true;
      var collapseButton = document.getElementById('collapse.button');
      collapseButton.disabled = false;

    }

    var newerRegex = new RegExp("^(?:v4\\\\.10\\\\.4|v4\\\\.10\\\\.3)");
    function isOlder(listId) {
      return ! newerRegex.test(listId);
    }

    function escapeMeta(s) {
      return s.replace(/(?=[.*+?^${}()|[\]\/\\])/g, '\\');
    }

    function shouldExpand(currentList, currentAnchor, listId) {
      var listName = listId.substring(0, listId.length - 5);
      var parentRegex = new RegExp("^" + escapeMeta(listName) + "\\.");
      return currentList == listId
             || (isOlder(currentAnchor) && listId == 'older.list')
             || parentRegex.test(currentAnchor);
    }

    function collapse() {
      /* Collapse all but the first and second releases. */
      var unorderedLists = document.getElementsByTagName("ul");
      var currentAnchor = location.hash.substring(1);
      var currentList = currentAnchor + ".list";

      for (var i = 0; i < unorderedLists.length; i++) {
        var list = unorderedLists[i];
        /* Collapse the current item, unless either the current item is one of
         * the first two releases, or the current URL has a fragment and the
         * fragment refers to the current item or one of its ancestors.
         */
        if (list.id != 'v4.10.4.list' 
            && list.id != 'v4.10.3.list'
            && list.className != 'bulleted-list'
            && (currentAnchor == ''
                || ! shouldExpand(currentList, currentAnchor, list.id))) {
          list.style.display = "none";
        }
      }
      var orderedLists = document.getElementsByTagName("ol");
      for (var i = 0; i < orderedLists.length; i++) {
        var list = orderedLists[i];
        /* Collapse the current item, unless the current URL has a fragment
         * and the fragment refers to the current item or one of its ancestors.
         */
        if (currentAnchor == ''
            || ! shouldExpand(currentList, currentAnchor, list.id)) {
          list.style.display = "none";
        }
      }
      /* Add "Click to collapse/expand" tooltips to the release/section headings */
      var anchors = document.getElementsByTagName("a");
      for (var i = 0 ; i < anchors.length; i++) {
        var anchor = anchors[i];
        if (anchor.id != '') {
          if (anchor.id == 'v4.10.4' || anchor.id == 'v4.10.3') {
            anchor.title = 'Click to collapse';
          } else {
            anchor.title = 'Click to expand';
          }
        }
      }

      /* Insert "Expand All" and "Collapse All" buttons */
      var buttonsParent = document.getElementById('buttons.parent');
      var expandButton = document.createElement('button');
      expandButton.appendChild(document.createTextNode('Expand All'));
      expandButton.onclick = function() { expandAll(); }
      expandButton.id = 'expand.button';
      buttonsParent.appendChild(expandButton);
      var collapseButton = document.createElement('button');
      collapseButton.appendChild(document.createTextNode('Collapse All'));
      collapseButton.onclick = function() { collapseAll(); }
      collapseButton.id = 'collapse.button';
      buttonsParent.appendChild(collapseButton);
    }

    window.onload = collapse;
  </SCRIPT>
</head>
<body>

<h1>Lucene Change Log</h1>

<div id="buttons.parent"></div>

      <p>For more information on past and future Lucene versions, please see:
<a href="http://s.apache.org/luceneversions">http://s.apache.org/luceneversions</a>
</p>
<h2><a id="v4.10.4" href="javascript:toggleList('v4.10.4')">Release 4.10.4 </a></h2>
<ul id="v4.10.4.list">
  <li><a id="v4.10.4.bug_fixes" href="javascript:toggleList('v4.10.4.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v4.10.4.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6019">LUCENE-6019</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-6117">LUCENE-6117</a>: Remove -Dtests.assert to make IndexWriter
infoStream sane.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6161">LUCENE-6161</a>: Resolving deletes was failing to reuse DocsEnum likely
causing substantial performance cost for use cases that frequently
delete old documents
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6192">LUCENE-6192</a>: Fix int overflow corruption case in skip data for
high frequency terms in extremely large indices
<br /><span class="attrib">(Robert Muir, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6207">LUCENE-6207</a>: Fixed consumption of several terms enums on the same
sorted (set) doc values instance at the same time.
<br /><span class="attrib">(Tom Shally, Robert Muir, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6093">LUCENE-6093</a>: Don't throw NullPointerException from
BlendedInfixSuggester for lookups that do not end in a prefix
token.
<br /><span class="attrib">(jane chang via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6279">LUCENE-6279</a>: Don't let an abusive leftover _N_upgraded.si in the
index directory cause index corruption on upgrade
<br /><span class="attrib">(Robert Muir, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6287">LUCENE-6287</a>: Fix concurrency bug in IndexWriter that could cause
index corruption (missing _N.si files) the first time 4.x kisses a
3.x index if merges are also running.
<br /><span class="attrib">(Simon Willnauer, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6205">LUCENE-6205</a>: Fixed intermittent concurrency issue that could cause
FileNotFoundException when writing doc values updates at the same
time that a merge kicks off.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6214">LUCENE-6214</a>: Fixed IndexWriter deadlock when one thread is
committing while another opens a near-real-time reader and an
unrecoverable (tragic) exception is hit.
<br /><span class="attrib">(Simon Willnauer, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6105">LUCENE-6105</a>: Don't cache FST root arcs if the number of root arcs is
small, or if the cache would be &gt; 20% of the size of the FST.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6001">LUCENE-6001</a>: DrillSideways hits NullPointerException for certain
BooleanQuery searches.
<br /><span class="attrib">(Dragan Jotannovic, jane chang via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6306">LUCENE-6306</a>: Merging of doc values and norms now checks whether the
merge was aborted so IndexWriter.rollback can more promptly abort a
running merge.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.10.4.api_changes" href="javascript:toggleList('v4.10.4.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.10.4.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6212">LUCENE-6212</a>: Deprecate IndexWriter APIs that accept per-document Analyzer.
These methods were trappy as they made it easy to accidentally index
tokens that were not easily searchable and will be removed in 5.0.0.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
</ul>
<h2><a id="v4.10.3" href="javascript:toggleList('v4.10.3')">Release 4.10.3  [2014-12-29]</a></h2>
<ul id="v4.10.3.list">
  <li><a id="v4.10.3.bug_fixes" href="javascript:toggleList('v4.10.3.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v4.10.3.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6046">LUCENE-6046</a>: Add maxDeterminizedStates safety to determinize (which has
an exponential worst case) so that if it would create too many states, it
now throws an exception instead of exhausting CPU/RAM.
<br /><span class="attrib">(Nik
Everett via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6054">LUCENE-6054</a>: Allow repeating the empty automaton
<br /><span class="attrib">(Nik Everett via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6049">LUCENE-6049</a>: Don't throw cryptic exception writing a segment when
the only docs in it had fields that hit non-aborting exceptions
during indexing but also had doc values.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6060">LUCENE-6060</a>: Deprecate IndexWriter.unlock
<br /><span class="attrib">(Simon Willnauer, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3229">LUCENE-3229</a>: Overlapping ordered SpanNearQuery spans should not match.
<br /><span class="attrib">(Ludovic Boutros, Paul Elschot, Greg Dearing, ehatcher)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6004">LUCENE-6004</a>: Don't highlight the LookupResult.key returned from
AnalyzingInfixSuggester
<br /><span class="attrib">(Christian Reuschling, jane chang via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6075">LUCENE-6075</a>: Don't overflow int in SimpleRateLimiter
<br /><span class="attrib">(Boaz Leskes
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5980">LUCENE-5980</a>: Don't let document length overflow.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6042">LUCENE-6042</a>: CustomScoreQuery explain was incorrect in some cases,
such as when nested inside a boolean query.
<br /><span class="attrib">(Denis Lantsman via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5948">LUCENE-5948</a>: RateLimiter now fully inits itself on init.
<br /><span class="attrib">(Varun
Thacker via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6055">LUCENE-6055</a>: PayloadAttribute.clone() now does a deep clone of the underlying
bytes.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6094">LUCENE-6094</a>: Allow IW.rollback to stop ConcurrentMergeScheduler even
when it's stalling because there are too many merges.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.10.3.documentation" href="javascript:toggleList('v4.10.3.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.10.3.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6057">LUCENE-6057</a>: Improve Sort(SortField) docs
<br /><span class="attrib">(Martin Braun via Mike McCandless)</span></li>
    </ol>
  </li>
</ul>
<h2><a id="older" href="javascript:toggleList('older')">Older Releases</a></h2>
<ul id="older.list">
<h3><a id="v4.10.2" href="javascript:toggleList('v4.10.2')">Release 4.10.2  [2014-10-29]</a></h3>
<ul id="v4.10.2.list">
  <li><a id="v4.10.2.bug_fixes" href="javascript:toggleList('v4.10.2.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.10.2.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5977">LUCENE-5977</a>: Fix tokenstream safety checks in IndexWriter to properly
work across multi-valued fields. Previously some cases across multi-valued
fields would happily create a corrupt index.
<br /><span class="attrib">(Dawid Weiss, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6019">LUCENE-6019</a>: Detect when DocValuesType illegally changes for the
same field name.  Also added -Dtests.asserts=true|false so we can
run tests with and without assertions.
<br /><span class="attrib">(Simon Willnauer, Robert
Muir, Mike McCandless)</span>.
<p/>
</li>
    </ol>
  </li>
</ul>
<h3><a id="v4.10.1" href="javascript:toggleList('v4.10.1')">Release 4.10.1  [2014-09-28]</a></h3>
<ul id="v4.10.1.list">
  <li><a id="v4.10.1.bug_fixes" href="javascript:toggleList('v4.10.1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v4.10.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5934">LUCENE-5934</a>: Fix backwards compatibility for 4.0 indexes.
<br /><span class="attrib">(Ian Lea, Uwe Schindler, Robert Muir, Ryan Ernst)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5939">LUCENE-5939</a>: Regenerate old backcompat indexes to ensure they were built with
the exact release
<br /><span class="attrib">(Ryan Ernst, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5952">LUCENE-5952</a>: Improve error messages when version cannot be parsed;
don't check for too old or too new major version (it's too low level
to enforce here); use simple string tokenizer.
<br /><span class="attrib">(Ryan Ernst, Uwe Schindler,
Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5958">LUCENE-5958</a>: Don't let exceptions during checkpoint corrupt the index.
Refactor existing OOM handling too, so you don't need to handle OOM special
for every IndexWriter method: instead such disasters will cause IW to close itself
defensively.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5904">LUCENE-5904</a>: Fixed a corruption case that can happen when 1)
IndexWriter is uncleanly shut-down (OS crash, power loss, etc.), 2)
on startup, when a new IndexWriter is created, a virus checker is
holding some of the previously written but unused files open and
preventing deletion, 3) IndexWriter writes these files again during
the course of indexing, then the files can later be deleted, causing
corruption.  This case was detected by adding evilness to
MockDirectoryWrapper to have it simulate a virus checker holding a
file open and preventing deletion
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5916">LUCENE-5916</a>: Static scope test components should be consistent between
tests (and test iterations). Fix for FaultyIndexInput in particular.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5975">LUCENE-5975</a>: Fix reading of 3.0-3.3 indexes, where bugs in these old
index formats would result in CorruptIndexException "did not read all
bytes from file" when reading the deleted docs file.
<br /><span class="attrib">(Patrick Mi, Robert MUir)</span></li>
    </ol>
  </li>
  <li><a id="v4.10.1.tests" href="javascript:toggleList('v4.10.1.tests')">Tests</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.10.1.tests.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5936">LUCENE-5936</a>: Add backcompat checks to verify what is tested matches known versions
<br /><span class="attrib">(Ryan Ernst)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.10.0" href="javascript:toggleList('v4.10.0')">Release 4.10.0  [2014-09-04]</a></h3>
<ul id="v4.10.0.list">
  <li><a id="v4.10.0.new_features" href="javascript:toggleList('v4.10.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v4.10.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5778">LUCENE-5778</a>: Support hunspell morphological description fields/aliases.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5801">LUCENE-5801</a>: Added (back) OrdinalMappingAtomicReader for merging search
indexes that contain category ordinals from separate taxonomy indexes.
<br /><span class="attrib">(Nicola Buso via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4175">LUCENE-4175</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5714">LUCENE-5714</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5779">LUCENE-5779</a>: Index and search rectangles with spatial
BBoxSpatialStrategy using most predicates.  Sort documents by relative overlap
of query areas or just by indexed shape area.
<br /><span class="attrib">(Ryan McKinley, David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5806">LUCENE-5806</a>: Extend expressions grammar to support array access in variables.
Added helper class VariableContext to parse complex variable into pieces.
<br /><span class="attrib">(Ryan Ernst)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5826">LUCENE-5826</a>: Support proper hunspell case handling, LANG, KEEPCASE, NEEDAFFIX,
and ONLYINCOMPOUND flags.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5815">LUCENE-5815</a>: Add TermAutomatonQuery, a proximity query allowing you
to create an arbitrary automaton, using terms on the transitions,
expressing which sequence of sequential terms (including a special
"any" term) are allowed.  This is a generalization of
MultiPhraseQuery and span queries, and enables "correct" (including
position) length search-time graph synonyms.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5819">LUCENE-5819</a>: Add OrdsLucene41 block tree terms dict and postings
format, to include term ordinals in the index so the optional
TermsEnum.ord() and TermsEnum.seekExact(long ord) APIs work.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5835">LUCENE-5835</a>: TermValComparator can sort missing values last.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5825">LUCENE-5825</a>: Benchmark module can use custom postings format, e.g.:
 codec.postingsFormat=Memory
<br /><span class="attrib">(Varun Shenoy, David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5842">LUCENE-5842</a>: When opening large files (where its to expensive to compare
checksum against all the bytes), retrieve checksum to validate structure
of footer, this can detect some forms of corruption such as truncation.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5739">LUCENE-5739</a>: Added DataInput.readZ(Int|Long) and DataOutput.writeZ(Int|Long)
to read and write small signed integers.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.10.0.api_changes" href="javascript:toggleList('v4.10.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v4.10.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5752">LUCENE-5752</a>: Simplified Automaton API to be immutable.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5793">LUCENE-5793</a>: Add equals/hashCode to FieldType.
<br /><span class="attrib">(Shay Banon, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5692">LUCENE-5692</a>: DisjointSpatialFilter is deprecated (used by RecursivePrefixTreeStrategy)
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5771">LUCENE-5771</a>: SpatialOperation's predicate names are now aliased to OGC standard names.
Thus you can use: Disjoint, Equals, Intersects, Overlaps, Within, Contains, Covers,
CoveredBy. The area requirement on the predicates was removed, and Overlaps' definition
was fixed.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5850">LUCENE-5850</a>: Made Version handling more robust and extensible. Deprecated
Constants.LUCENE_MAIN_VERSION, Constants.LUCENE_VERSION and current Version
constants of the form LUCENE_X_Y. Added version constants that include bugfix
number of form LUCENE_X_Y_Z.  Changed Version.LUCENE_CURRENT to Version.LATEST.
CheckIndex now prints the Lucene version used to write each segment.
<br /><span class="attrib">(Ryan Ernst, Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5836">LUCENE-5836</a>: BytesRef has been splitted into BytesRef, whose intended usage is
to be just a reference to a section of a larger byte[] and BytesRefBuilder
which is a StringBuilder-like class for BytesRef instances.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5883">LUCENE-5883</a>: You can now change the MergePolicy instance on a live IndexWriter,
without first closing and reopening the writer. This allows to e.g. run a special
merge with UpgradeIndexMergePolicy without reopening the writer. Also, MergePolicy
no longer implements Closeable; if you need to release your custom MegePolicy's
resources, you need to implement close() and call it explicitly.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5859">LUCENE-5859</a>: Deprecate Analyzer constructors taking Version.  Use Analyzer.setVersion()
to set the version an analyzer to replicate behavior from a specific release.
<br /><span class="attrib">(Ryan Ernst, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.10.0.optimizations" href="javascript:toggleList('v4.10.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v4.10.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5780">LUCENE-5780</a>: Make OrdinalMap more memory-efficient, especially in case the
first segment has all values.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5782">LUCENE-5782</a>: OrdinalMap now sorts enums before being built in order to
improve compression.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5798">LUCENE-5798</a>: Optimize MultiDocsEnum reuse.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5799">LUCENE-5799</a>: Optimize numeric docvalues merging.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5797">LUCENE-5797</a>: Optimize norms merging
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5803">LUCENE-5803</a>: Add DelegatingAnalyzerWrapper, an optimized variant
of AnalyzerWrapper that doesn't allow to wrap components or readers.
This wrapper class is the base class of all analyzers that just delegate
to another analyzer, e.g. per field name: PerFieldAnalyzerWrapper and
Solr's schema support.
<br /><span class="attrib">(Shay Banon, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5795">LUCENE-5795</a>: MoreLikeThisQuery now only collects the top N terms instead
of collecting all terms from the like text when building the query.
<br /><span class="attrib">(Alex Ksikes, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5681">LUCENE-5681</a>: Fix RAMDirectory's IndexInput to not do double buffering
on slices (causes useless data copying, especially on random access slices).
This also improves slices of NRTCachingDirectory, because the cache
is based on RAMDirectory. BufferedIndexInput.wrap() was marked with a
warning in javadocs. It is almost always a better idea to implement
slicing on your own!
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5834">LUCENE-5834</a>: Empty sorted set and numeric doc values are now singletons.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5841">LUCENE-5841</a>: Improve performance of block tree terms dictionary when
assigning terms to blocks.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5856">LUCENE-5856</a>: Optimize Fixed/Open/LongBitSet to remove unnecessary AND.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5884">LUCENE-5884</a>: Optimize FST.ramBytesUsed.
<br /><span class="attrib">(Adrien Grand, Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5882">LUCENE-5882</a>: Add Lucene410DocValuesFormat, with faster term lookups
for SORTED/SORTED_SET fields.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5887">LUCENE-5887</a>: Remove WeakIdentityMap caching in AttributeFactory,
AttributeSource, and VirtualMethod in favour of Java 7's ClassValue.
Always use MethodHandles to create AttributeImpl classes.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.10.0.bug_fixes" href="javascript:toggleList('v4.10.0.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(9)
    <ol id="v4.10.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5796">LUCENE-5796</a>: Fixes the Scorer.getChildren() method for two combinations
of BooleanQuery.
<br /><span class="attrib">(Terry Smith via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5790">LUCENE-5790</a>: Fix compareTo in MutableValueDouble and MutableValueBool, this caused
incorrect results when grouping on fields with missing values.
<br /><span class="attrib">(海老澤 志信, hossman)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5817">LUCENE-5817</a>: Fix hunspell zero-affix handling: previously only zero-strips worked
correctly.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5818">LUCENE-5818</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5823">LUCENE-5823</a>: Fix hunspell overgeneration for short strings that also
match affixes, words are only stripped to a zero-length string if FULLSTRIP option
is specifed in the dictionary.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5824">LUCENE-5824</a>: Fix hunspell 'long' flag handling.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5838">LUCENE-5838</a>: Fix hunspell when the .aff file has over 64k affixes.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5869">LUCENE-5869</a>: Added restriction to positive values for maxExpansions in
FuzzyQuery.
<br /><span class="attrib">(Ryan Ernst)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5672">LUCENE-5672</a>: IndexWriter.addIndexes() calls maybeMerge(), to ensure the index stays
healthy. If you don't want merging use NoMergePolicy instead.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5908">LUCENE-5908</a>: Fix Lucene43NGramTokenizer to be final
<p/>
</li>
    </ol>
  </li>
  <li><a id="v4.10.0.test_framework" href="javascript:toggleList('v4.10.0.test_framework')">Test Framework</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.10.0.test_framework.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5786">LUCENE-5786</a>: Unflushed/ truncated events file (hung testing subprocess).
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5881">LUCENE-5881</a>: Add "beasting" of tests: repeats the whole "test" Ant target
N times with "ant beast -Dbeast.iters=N".
<br /><span class="attrib">(Uwe Schindler, Robert Muir,
Ryan Ernst, Dawid Weiss)</span></li>
    </ol>
  </li>
  <li><a id="v4.10.0.build" href="javascript:toggleList('v4.10.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.10.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5770">LUCENE-5770</a>: Upgrade to JFlex 1.6, which has direct support for
supplementary code points - as a result, ICU4J is no longer used
to generate surrogate pairs to augment JFlex scanner specifications.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-6358">SOLR-6358</a>: Remove VcsDirectoryMappings from idea configuration
vcs.xml
<br /><span class="attrib">(Ramkumar Aiyengar via Steve Rowe)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.9.1" href="javascript:toggleList('v4.9.1')">Release 4.9.1  [2014-09-21]</a></h3>
<ul id="v4.9.1.list">
  <li><a id="v4.9.1.bug_fixes" href="javascript:toggleList('v4.9.1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v4.9.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5907">LUCENE-5907</a>: Fix corruption case when opening a pre-4.x index with
IndexWriter, then opening an NRT reader from that writer, then
calling commit from the writer, then closing the NRT reader.  This
case would remove the wrong files from the index leading to a
corrupt index.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5919">LUCENE-5919</a>: Fix exception handling inside IndexWriter when
deleteFile throws an exception, to not over-decRef index files,
possibly deleting a file that's still in use in the index, leading
to corruption.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5922">LUCENE-5922</a>: DocValuesDocIdSet on 5.x and FieldCacheDocIdSet on 4.x
are not cacheable.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5843">LUCENE-5843</a>: Added IndexWriter.MAX_DOCS which is the maximum number
of documents allowed in a single index, and any operations that add
documents will now throw IllegalStateException if the max count
would be exceeded, instead of silently creating an unusable
index.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5844">LUCENE-5844</a>: ArrayUtil.grow/oversize now returns a maximum of
Integer.MAX_VALUE - 8 for the maximum array size.
<br /><span class="attrib">(Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5827">LUCENE-5827</a>: Make all Directory implementations correctly fail with
IllegalArgumentException if slices are out of bounds.
<br /><span class="attrib">(Uwe SChindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5897">LUCENE-5897</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5400">LUCENE-5400</a>: JFlex-based tokenizers StandardTokenizer and
UAX29URLEmailTokenizer tokenize extremely slowly over long sequences of
text partially matching certain grammar rules.  The scanner default
buffer size was reduced, and scanner buffer growth was disabled, resulting
in much, much faster tokenization for these text sequences.
<br /><span class="attrib">(Chris Geeringh, Robert Muir, Steve Rowe)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.9.0" href="javascript:toggleList('v4.9.0')">Release 4.9.0  [2014-06-25]</a></h3>
<ul id="v4.9.0.list">
  <li><a id="v4.9.0.changes_in_runtime_behavior" href="javascript:toggleList('v4.9.0.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.9.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5611">LUCENE-5611</a>: Changing the term vector options for multiple field
instances by the same name in one document is not longer accepted;
IndexWriter will now throw IllegalArgumentException.
<br /><span class="attrib">(Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5646">LUCENE-5646</a>: Remove rare/undertested bulk merge algorithm in
CompressingStoredFieldsWriter.
<br /><span class="attrib">(Robert Muir, Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.9.0.new_features" href="javascript:toggleList('v4.9.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v4.9.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5610">LUCENE-5610</a>: Add Terms.getMin and Terms.getMax to get the lowest and
highest terms, and NumericUtils.get{Min/Max}{Int/Long} to get the
minimum numeric values from the provided Terms.
<br /><span class="attrib">(Robert Muir, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5675">LUCENE-5675</a>: Add IDVersionPostingsFormat, a postings format
optimized for primary-key (ID) fields that also record a version
(long) for each ID.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5680">LUCENE-5680</a>: Add ability to atomically update a set of DocValues
fields.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5717">LUCENE-5717</a>: Add support for multiterm queries nested inside
filtered and constant-score queries to postings highlighter.
<br /><span class="attrib">(Luca Cavanna via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5731">LUCENE-5731</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5760">LUCENE-5760</a>: Add RandomAccessInput, a random access API for directory.
Add DirectReader/Writer, optimized for reading packed integers directly
from Directory. Add Lucene49Codec and Lucene49DocValuesFormat that make
use of these.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5743">LUCENE-5743</a>: Add Lucene49NormsFormat, which can compress in some cases
such as very short fields.
<br /><span class="attrib">(Ryan Ernst, Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5748">LUCENE-5748</a>: Add SORTED_NUMERIC docvalues type, which is efficient
for processing numeric fields with multiple values.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5754">LUCENE-5754</a>: Allow "$" as part of variable and function names in
expressions module.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.9.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.9.0.changes_in_backwards_compatibility_policy')">Changes in Backwards Compatibility Policy</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.9.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5634">LUCENE-5634</a>: Add reuse argument to IndexableField.tokenStream. This
can be used by custom fieldtypes, which don't use the Analyzer, but
implement their own TokenStream.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5640">LUCENE-5640</a>: AttributeSource.AttributeFactory was moved to a
top-level class: org.apache.lucene.util.AttributeFactory
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4371">LUCENE-4371</a>: Removed IndexInputSlicer and Directory.createSlicer() and replaced
with IndexInput.slice().
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5727">LUCENE-5727</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5678">LUCENE-5678</a>: Remove IndexOutput.seek, IndexOutput.setLength().
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.9.0.api_changes" href="javascript:toggleList('v4.9.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(20)
    <ol id="v4.9.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5756">LUCENE-5756</a>: IndexWriter now implements Accountable and IW#ramSizeInBytes()
has been deprecated infavor of IW#ramBytesUsed()
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5725">LUCENE-5725</a>: MoreLikeThis#like now accepts multiple values per field.
The pre-existing method has been deprecated in favor of a variable arguments
for the like text.
<br /><span class="attrib">(Alex Ksikes via Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5711">LUCENE-5711</a>: MergePolicy accepts an IndexWriter instance
on each method rather than holding state against a single
IndexWriter instance.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5582">LUCENE-5582</a>: Deprecate IndexOutput.length (just use
IndexOutput.getFilePointer instead) and IndexOutput.setLength.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5621">LUCENE-5621</a>: Deprecate IndexOutput.flush: this is not used by Lucene.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5611">LUCENE-5611</a>: Simplified Lucene's default indexing chain / APIs.
AttributeSource/TokenStream.getAttribute now returns null if the
attribute is not present (previously it threw
IllegalArgumentException).  StoredFieldsWriter.startDocument no
longer receives the number of fields that will be added
<br /><span class="attrib">(Robert
Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5632">LUCENE-5632</a>: In preparation for coming Lucene versions, the Version
enum constants were renamed to make them better readable. The constant
for Lucene 4.9 is now "LUCENE_4_9". Version.parseLeniently() is still
able to parse the old strings ("LUCENE_49"). The old identifiers got
deprecated and will be removed in Lucene 5.0.
<br /><span class="attrib">(Uwe Schindler,
Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5633">LUCENE-5633</a>: Change NoMergePolicy to a singleton with no distinction between
compound and non-compound types.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5640">LUCENE-5640</a>: The Token class was deprecated. Since Lucene 2.9, TokenStreams
are using Attributes, Token is no longer used.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5679">LUCENE-5679</a>: Consolidated IndexWriter.deleteDocuments(Term) and
IndexWriter.deleteDocuments(Query) with their varargs counterparts.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5706">LUCENE-5706</a>: Removed the option to unset a DocValues field through DocValues
updates.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5700">LUCENE-5700</a>: Added oal.util.Accountable that is now implemented by all
classes whose memory usage can be estimated.
<br /><span class="attrib">(Robert Muir, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5708">LUCENE-5708</a>: Remove IndexWriterConfig.clone, so now IndexWriter
simply uses the IndexWriterConfig you pass it, and you must create a
new IndexWriterConfig for each IndexWriter.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5701">LUCENE-5701</a>: Core closed listeners are now available in the AtomicReader API,
they used to sit only in SegmentReader.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5678">LUCENE-5678</a>: IndexOutput no longer allows seeking, so it is no longer required
to use RandomAccessFile to write Indexes. Lucene now uses standard FileOutputStream
wrapped with OutputStreamIndexOutput to write index data. BufferedIndexOutput was
removed, because buffering and checksumming is provided by FilterOutputStreams,
provided by the JDK.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5703">LUCENE-5703</a>: BinaryDocValues API changed to work like TermsEnum and not allocate/
copy bytes on each access, you are responsible for cloning if you want to keep
data around.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5695">LUCENE-5695</a>: DocIdSet implements Accountable.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5757">LUCENE-5757</a>: Moved RamUsageEstimator's reflection-based processing to RamUsageTester
in the test-framework module.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5761">LUCENE-5761</a>: Removed DiskDocValuesFormat, it was very inefficient and saved very little
RAM over the default codec.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5775">LUCENE-5775</a>: Deprecate JaspellLookup.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.9.0.optimizations" href="javascript:toggleList('v4.9.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(18)
    <ol id="v4.9.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5603">LUCENE-5603</a>: hunspell stemmer more efficiently strips prefixes
and suffixes.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5599">LUCENE-5599</a>: HttpReplicator did not properly delegate bulk read() to wrapped
InputStream.
<br /><span class="attrib">(Christoph Kaser via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5591">LUCENE-5591</a>: pass an IOContext with estimated flush size when applying DV
updates.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5634">LUCENE-5634</a>: IndexWriter reuses TokenStream instances for String and Numeric
fields by default.
<br /><span class="attrib">(Uwe Schindler, Shay Banon, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5638">LUCENE-5638</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5640">LUCENE-5640</a>: TokenStream uses a more performant AttributeFactory
by default, that packs the core attributes into one implementation
(PackedTokenAttributeImpl), for faster clearAttributes(), saveState(), and
restoreState(). In addition, AttributeFactory uses Java 7 MethodHandles for
instantiating Attribute implementations.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5609">LUCENE-5609</a>: Changed the default NumericField precisionStep from 4
to 8 (for int/float) and 16 (for long/double), for faster indexing
time and smaller indices.
<br /><span class="attrib">(Robert Muir, Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5670">LUCENE-5670</a>: Add skip/FinalOutput to FST Outputs.
<br /><span class="attrib">(Christian
Ziech via Mike McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4236">LUCENE-4236</a>: Optimize BooleanQuery's in-order scoring. This speeds up
some types of boolean queries.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5694">LUCENE-5694</a>: Don't score() subscorers in DisjunctionSumScorer or
DisjunctionMaxScorer unless score() is called.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5720">LUCENE-5720</a>: Optimize DirectPackedReader's decompression.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5722">LUCENE-5722</a>: Optimize ByteBufferIndexInput#seek() by specializing
implementations. This improves random access as used by docvalues codecs
if used with MMapDirectory.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5730">LUCENE-5730</a>: FSDirectory.open returns MMapDirectory for 64-bit operating
systems, not just Linux and Windows.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5703">LUCENE-5703</a>: BinaryDocValues producers don't allocate or copy bytes on
each access anymore.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5721">LUCENE-5721</a>: Monotonic compression doesn't use zig-zag encoding anymore.
<br /><span class="attrib">(Robert Muir, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5750">LUCENE-5750</a>: Speed up monotonic addressing for BINARY and SORTED_SET
docvalues.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5751">LUCENE-5751</a>: Speed up MemoryDocValues.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5767">LUCENE-5767</a>: OrdinalMap optimizations, that mostly help on low cardinalities.
<br /><span class="attrib">(Martijn van Groningen, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5769">LUCENE-5769</a>: SingletonSortedSetDocValues now supports random access ordinals.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.9.0.bug_fixes" href="javascript:toggleList('v4.9.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v4.9.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5738">LUCENE-5738</a>: Ensure NativeFSLock prevents opening the file channel for the
lock if the lock is already obtained by the JVM. Trying to obtain an already
obtained lock in the same JVM can unlock the file might allow other processes
to lock the file even without explicitly unlocking the FileLock. This behavior
is operating system dependent.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5673">LUCENE-5673</a>: MMapDirectory: Work around a "bug" in the JDK that throws
a confusing OutOfMemoryError wrapped inside IOException if the FileChannel
mapping failed because of lack of virtual address space. The IOException is
rethrown with more useful information about the problem, omitting the
incorrect OutOfMemoryError.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5682">LUCENE-5682</a>: NPE in QueryRescorer when Scorer is null
<br /><span class="attrib">(Joel Bernstein, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5691">LUCENE-5691</a>: DocTermOrds lookupTerm(BytesRef) would return incorrect results
if the underlying TermsEnum supports ord() and the insertion point would
be at the end.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5618">LUCENE-5618</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5636">LUCENE-5636</a>: SegmentReader referenced unneeded files following
doc-values updates. Now doc-values field updates are written in separate file
per field.
<br /><span class="attrib">(Shai Erera, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5684">LUCENE-5684</a>: Make best effort to detect invalid usage of Lucene,
when IndexReader is reopened after all files in its index were
removed and recreated by the application (the proper way to do
this is IndexWriter.deleteAll, or opening an IndexWriter with
OpenMode.CREATE)
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5704">LUCENE-5704</a>: Fix compilation error with Java 8u20.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5710">LUCENE-5710</a>: Include the inner exception as the cause and in the
exception message when an immense term is hit during indexing
<br /><span class="attrib">(Lee
Hinman via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5724">LUCENE-5724</a>: CompoundFileWriter was failing to pass through the
IOContext in some cases, causing NRTCachingDirectory to cache
compound files when it shouldn't, then causing OOMEs.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5747">LUCENE-5747</a>: Project-specific settings for the eclipse development
environment will prevent automatic code reformatting.
<br /><span class="attrib">(Shawn Heisey)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5768">LUCENE-5768</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5777">LUCENE-5777</a>: Hunspell condition checks containing character classes
were buggy.
<br /><span class="attrib">(Clinton Gormley, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.9.0.test_framework" href="javascript:toggleList('v4.9.0.test_framework')">Test Framework</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.9.0.test_framework.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5622">LUCENE-5622</a>: Fail tests if they print over the given limit of bytes to
System.out or System.err.
<br /><span class="attrib">(Robert Muir, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5619">LUCENE-5619</a>: Added backwards compatibility tests to ensure we can update existing
indexes with doc-values updates.
<br /><span class="attrib">(Shai Erera, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.9.0.build" href="javascript:toggleList('v4.9.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.9.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5442">LUCENE-5442</a>: The Ant check-lib-versions target now runs Ivy resolution
transitively, then fails the build when it finds a version conflict: when a
transitive dependency's version is more recent than the direct dependency's
version specified in lucene/ivy-versions.properties.  Exceptions are
specifiable in lucene/ivy-ignore-conflicts.properties.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5715">LUCENE-5715</a>: Upgrade direct dependencies known to be older than transitive
dependencies: com.sun.jersey.version:1.8-&gt;1.9; com.sun.xml.bind:jaxb-impl:2.2.2-&gt;2.2.3-1;
commons-beanutils:commons-beanutils:1.7.0-&gt;1.8.3; commons-digester:commons-digester:2.0-&gt;2.1;
commons-io:commons-io:2.1-&gt;2.3; commons-logging:commons-logging:1.1.1-&gt;1.1.3;
io.netty:netty:3.6.2.Final-&gt;3.7.0.Final; javax.activation:activation:1.1-&gt;1.1.1;
javax.mail:mail:1.4.1-&gt;1.4.3; log4j:log4j:1.2.16-&gt;1.2.17; org.apache.avro:avro:1.7.4-&gt;1.7.5;
org.tukaani:xz:1.2-&gt;1.4; org.xerial.snappy:snappy-java:1.0.4.1-&gt;1.0.5
<br /><span class="attrib">(Steve Rowe)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.8.1" href="javascript:toggleList('v4.8.1')">Release 4.8.1  [2014-05-20]</a></h3>
<ul id="v4.8.1.list">
  <li><a id="v4.8.1.bug_fixes" href="javascript:toggleList('v4.8.1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(15)
    <ol id="v4.8.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5639">LUCENE-5639</a>: Fix PositionLengthAttribute implementation in Token class.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5635">LUCENE-5635</a>: IndexWriter didn't properly handle IOException on TokenStream.reset(),
which could leave the analyzer in an inconsistent state.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5599">LUCENE-5599</a>: HttpReplicator did not properly delegate bulk read() to wrapped
InputStream.
<br /><span class="attrib">(Christoph Kaser via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5600">LUCENE-5600</a>: HttpClientBase did not properly consume a connection if a server
error occurred.
<br /><span class="attrib">(Christoph Kaser via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5628">LUCENE-5628</a>: Change getFiniteStrings to iterative not recursive
implementation, so that building suggesters on a long suggestion
doesn't risk overflowing the stack; previously it consumed one Java
stack frame per character in the expanded suggestion.  If you are building
a suggester this is a nasty trap.
<br /><span class="attrib">(Robert Muir, Simon Willnauer,
Mike McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5559">LUCENE-5559</a>: Add additional argument validation for CapitalizationFilter
and CodepointCountFilter.
<br /><span class="attrib">(Ahmet Arslan via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5641">LUCENE-5641</a>: SimpleRateLimiter would silently rate limit at 8 MB/sec
even if you asked for higher rates.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5644">LUCENE-5644</a>: IndexWriter clears which threads use which internal
thread states on flush, so that if an application reduces how many
threads it uses for indexing, that results in a reduction of how
many segments are flushed on a full-flush (e.g. to obtain a
near-real-time reader).
<br /><span class="attrib">(Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5653">LUCENE-5653</a>: JoinUtil with ScoreMode.Avg on a multi-valued field
with more than 256 values would throw exception.
<br /><span class="attrib">(Mikhail Khludnev via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5654">LUCENE-5654</a>: Fix various close() methods that could suppress
throwables such as OutOfMemoryError, instead returning scary messages
that look like index corruption.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5656">LUCENE-5656</a>: Fix rare fd leak in SegmentReader when multiple docvalues
fields have been updated with IndexWriter.updateXXXDocValue and one
hits exception.
<br /><span class="attrib">(Shai Erera, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5660">LUCENE-5660</a>: AnalyzingSuggester.build will now throw IllegalArgumentException if
you give it a longer suggestion than it can handle
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5662">LUCENE-5662</a>: Add missing checks to Field to prevent IndexWriter.abort
if a stored value is null.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5668">LUCENE-5668</a>: Fix off-by-one in TieredMergePolicy
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5671">LUCENE-5671</a>: Upgrade ICU version to fix an ICU concurrency problem that
could cause exceptions when indexing.
<br /><span class="attrib">(feedly team, Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.8.0" href="javascript:toggleList('v4.8.0')">Release 4.8.0  [2014-04-28]</a></h3>
<ul id="v4.8.0.list">
  <li><a id="v4.8.0.system_requirements" href="javascript:toggleList('v4.8.0.system_requirements')">System Requirements</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.8.0.system_requirements.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4747">LUCENE-4747</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5514">LUCENE-5514</a>: Move to Java 7 as minimum Java version.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.changes_in_runtime_behavior" href="javascript:toggleList('v4.8.0.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.8.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5472">LUCENE-5472</a>: IndexWriter.addDocument will now throw an IllegalArgumentException
if a Term to be indexed exceeds IndexWriter.MAX_TERM_LENGTH.  To recreate previous
behavior of silently ignoring these terms, use LengthFilter in your Analyzer.
<br /><span class="attrib">(hossman, Mike McCandless, Varun Thacker)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.new_features" href="javascript:toggleList('v4.8.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(25)
    <ol id="v4.8.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5356">LUCENE-5356</a>: Morfologik filter can accept custom dictionary resources.
<br /><span class="attrib">(Michal Hlavac, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5454">LUCENE-5454</a>: Add SortedSetSortField to lucene/sandbox, to allow sorting
on multi-valued field.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5478">LUCENE-5478</a>: CommonTermsQuery now allows to create custom term queries
similar to the query parser by overriding a newTermQuery method.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5477">LUCENE-5477</a>: AnalyzingInfixSuggester now supports near-real-time
additions and updates (to change weight or payload of an existing
suggestion).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5482">LUCENE-5482</a>: Improve default TurkishAnalyzer by adding apostrophe
handling suitable for Turkish.
<br /><span class="attrib">(Ahmet Arslan via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5479">LUCENE-5479</a>: FacetsConfig subclass can now customize the default
per-dim facets configuration.
<br /><span class="attrib">(Rob Audenaerde via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5485">LUCENE-5485</a>: Add circumfix support to HunspellStemFilter.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5224">LUCENE-5224</a>: Add iconv, oconv, and ignore support to HunspellStemFilter.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5493">LUCENE-5493</a>: SortingMergePolicy, and EarlyTerminatingSortingCollector
support arbitrary Sort specifications.
<br /><span class="attrib">(Robert Muir, Mike McCandless, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3758">LUCENE-3758</a>: Allow the ComplexPhraseQueryParser to search order or
un-order proximity queries.
<br /><span class="attrib">(Ahmet Arslan via Erick Erickson)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5530">LUCENE-5530</a>: ComplexPhraseQueryParser throws ParseException for fielded queries.
<br /><span class="attrib">(Erick Erickson via Tomas Fernandez Lobbe and Ahmet Arslan)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5513">LUCENE-5513</a>: Add IndexWriter.updateBinaryDocValue which lets
you update the value of a BinaryDocValuesField without reindexing the
document(s).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4072">LUCENE-4072</a>: Add ICUNormalizer2CharFilter, which lets you do unicode normalization
with offset correction before the tokenizer.
<br /><span class="attrib">(David Goldfarb, Ippei UKAI via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5476">LUCENE-5476</a>: Add RandomSamplingFacetsCollector for computing facets on a sampled
set of matching hits, in cases where there are millions of hits.
<br /><span class="attrib">(Rob Audenaerde, Gilad Barkai, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4984">LUCENE-4984</a>: Add SegmentingTokenizerBase, abstract class for tokenizers
that want to do two-pass tokenization such as by sentence and then by word.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5489">LUCENE-5489</a>: Add Rescorer/QueryRescorer, to resort the hits from a
first pass search using scores from a more costly second pass
search.
<br /><span class="attrib">(Simon Willnauer, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5528">LUCENE-5528</a>: Add context to suggesters (InputIterator and Lookup
classes), and fix AnalyzingInfixSuggester to handle contexts.
Suggester contexts allow you to filter suggestions.
<br /><span class="attrib">(Areek Zillur,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5545">LUCENE-5545</a>: Add SortRescorer and Expression.getRescorer, to
resort the hits from a first pass search using a Sort or an
Expression.
<br /><span class="attrib">(Simon Willnauer, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5558">LUCENE-5558</a>: Add TruncateTokenFilter which truncates terms to
the specified length.
<br /><span class="attrib">(Ahmet Arslan via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2446">LUCENE-2446</a>: Added checksums to lucene index files. As of 4.8, the last 8
bytes of each file contain a zlib-crc32 checksum. Small metadata files are
verified on load. Larger files can be checked on demand via
AtomicReader.checkIntegrity. You can configure this to happen automatically
before merges by enabling IndexWriterConfig.setCheckIntegrityAtMerge.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5580">LUCENE-5580</a>: Checksums are automatically verified on the default stored
fields format when performing a bulk merge.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5602">LUCENE-5602</a>: Checksums are automatically verified on the default term
vectors format when performing a bulk merge.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5583">LUCENE-5583</a>: Added DataInput.skipBytes. ChecksumIndexInput can now seek, but
only forward.
<br /><span class="attrib">(Adrien Grand, Mike McCandless, Simon Willnauer, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5588">LUCENE-5588</a>: Lucene now calls fsync() on the index directory, ensuring
that all file metadata is persisted on disk in case of power failure.
This does not work on all file systems and operating systems, but Linux
and MacOSX are known to work. On Windows, fsyncing a directory is not
possible with Java APIs.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-6299">LUCENE-6299</a>: IndexWriter was failing to enforce the 2.1 billion doc
limit.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.api_changes" href="javascript:toggleList('v4.8.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(10)
    <ol id="v4.8.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5454">LUCENE-5454</a>: Add RandomAccessOrds, an optional extension of SortedSetDocValues
that supports random access to the ordinals in a document.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5468">LUCENE-5468</a>: Move offline Sort (from suggest module) to OfflineSort.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5493">LUCENE-5493</a>: SortingMergePolicy and EarlyTerminatingSortingCollector take
Sort instead of Sorter. BlockJoinSorter is removed, replaced with
BlockJoinComparatorSource, which can take a Sort for ordering of parents
and a separate Sort for ordering of children within a block.
<br /><span class="attrib">(Robert Muir, Mike McCandless, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5516">LUCENE-5516</a>: MergeScheduler#merge() now accepts a MergeTrigger as well as
a boolean that indicates if a new merge was found in the caller thread before
the scheduler was called.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5487">LUCENE-5487</a>: Separated bulk scorer (new Weight.bulkScorer method) from
normal scoring (Weight.scorer) for those queries that can do bulk
scoring more efficiently, e.g. BooleanQuery in some cases.  This
also simplified the Weight.scorer API by removing the two confusing
booleans.
<br /><span class="attrib">(Robert Muir, Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5519">LUCENE-5519</a>: TopNSearcher now allows to retrieve incomplete results if the max
size of the candidate queue is unknown. The queue can still be bound in order
to apply pruning while retrieving the top N but will not throw an exception if
too many results are rejected to guarantee an absolutely correct top N result.
The TopNSearcher now returns a struct like class that indicates if the result
is complete in the sense of the top N or not. Consumers of this API should assert
on the completeness if the bounded queue size is know ahead of time.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4984">LUCENE-4984</a>: Deprecate ThaiWordFilter and smartcn SentenceTokenizer and WordTokenFilter.
These filters would not work correctly with CharFilters and could not be safely placed
at an arbitrary position in the analysis chain. Use ThaiTokenizer and HMMChineseTokenizer
instead.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5543">LUCENE-5543</a>: Remove/deprecate Directory.fileExists
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5573">LUCENE-5573</a>: Move docvalues constants and helper methods to o.a.l.index.DocValues.
<br /><span class="attrib">(Dawid Weiss, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5604">LUCENE-5604</a>: Switched BytesRef.hashCode to MurmurHash3 (32 bit).
TermToBytesRefAttribute.fillBytesRef no longer returns the hash
code.  BytesRefHash now uses MurmurHash3 for its hashing.
<br /><span class="attrib">(Robert
Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.optimizations" href="javascript:toggleList('v4.8.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.8.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5468">LUCENE-5468</a>: HunspellStemFilter uses 10 to 100x less RAM. It also loads
all known openoffice dictionaries without error, and supports an additional
longestOnly option for a less aggressive approach.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4848">LUCENE-4848</a>: Use Java 7 NIO2-FileChannel instead of RandomAccessFile
for NIOFSDirectory and MMapDirectory. This allows to delete open files
on Windows if NIOFSDirectory is used, mmapped files are still locked.
<br /><span class="attrib">(Michael Poindexter, Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5515">LUCENE-5515</a>: Improved TopDocs#merge to create a merged ScoreDoc
array with length of at most equal to the specified size instead of length
equal to at most from + size as was before.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5529">LUCENE-5529</a>: Spatial search of non-point indexed shapes should be a little
faster due to skipping intersection tests on redundant cells.
<br /><span class="attrib">(David Smiley)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.bug_fixes" href="javascript:toggleList('v4.8.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v4.8.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5483">LUCENE-5483</a>: Fix inaccuracies in HunspellStemFilter. Multi-stage affix-stripping,
prefix-suffix dependencies, and COMPLEXPREFIXES now work correctly according
to the hunspell algorithm. Removed recursionCap parameter, as its no longer needed, rules for
recursive affix application are driven correctly by continuation classes in the affix file.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5497">LUCENE-5497</a>: HunspellStemFilter properly handles escaped terms and affixes without conditions.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5505">LUCENE-5505</a>: HunspellStemFilter ignores BOM markers in dictionaries and handles varying
types of whitespace in SET/FLAG commands.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5507">LUCENE-5507</a>: Fix HunspellStemFilter loading of dictionaries with large amounts of aliases
etc before the encoding declaration.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5111">LUCENE-5111</a>: Fix WordDelimiterFilter to return offsets in correct order.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5555">LUCENE-5555</a>: Fix SortedInputIterator to correctly encode/decode contexts in presence of payload
<br /><span class="attrib">(Areek Zillur)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5559">LUCENE-5559</a>: Add missing argument checks to tokenfilters taking
numeric arguments.
<br /><span class="attrib">(Ahmet Arslan via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5568">LUCENE-5568</a>: Benchmark module's "default.codec" option didn't work.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-5983">SOLR-5983</a>: HTMLStripCharFilter is treating CDATA sections incorrectly.
<br /><span class="attrib">(Dan Funk, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5615">LUCENE-5615</a>: Validate per-segment delete counts at write time, to
help catch bugs that might otherwise cause corruption
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5612">LUCENE-5612</a>: NativeFSLockFactory no longer deletes its lock file. This cannot be done
safely without the risk of deleting someone else's lock file. If you use NativeFSLockFactory,
you may see write.lock hanging around from time to time: its harmless.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5624">LUCENE-5624</a>: Ensure NativeFSLockFactory does not leak file handles if it is unable
to obtain the lock.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5626">LUCENE-5626</a>: Fix bug in SimpleFSLockFactory's obtain() that sometimes throwed
IOException (ERROR_ACESS_DENIED) on Windows if the lock file was created
concurrently. This error is now handled the same way like in NativeFSLockFactory
by returning false.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5630">LUCENE-5630</a>: Add missing META-INF entry for UpperCaseFilterFactory.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.tests" href="javascript:toggleList('v4.8.0.tests')">Tests</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.8.0.tests.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5630">LUCENE-5630</a>: Fix TestAllAnalyzersHaveFactories to correctly check for existence
of class and corresponding Map&lt;String,String&gt; ctor.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.test_framework" href="javascript:toggleList('v4.8.0.test_framework')">Test Framework</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v4.8.0.test_framework.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5592">LUCENE-5592</a>: Incorrectly reported uncloseable files.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5577">LUCENE-5577</a>: Temporary folder and file management (and cleanup facilities)
<br /><span class="attrib">(Mark Miller, Uwe Schindler, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5567">LUCENE-5567</a>: When a suite fails with zombie threads failure marker and count
is not propagated properly.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5449">LUCENE-5449</a>: Rename _TestUtil and _TestHelper to remove the leading _.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5501">LUCENE-5501</a>: Added random out-of-order collection testing (when the collector
supports it) to AssertingIndexSearcher.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.build" href="javascript:toggleList('v4.8.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.8.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5463">LUCENE-5463</a>: RamUsageEstimator.(human)sizeOf(Object) is now a forbidden API.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5512">LUCENE-5512</a>: Remove redundant typing (use diamond operator) throughout
the codebase.
<br /><span class="attrib">(Furkan KAMACI via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5614">LUCENE-5614</a>: Enable building on Java 8 using Apache Ant 1.8.3 or 1.8.4
by adding a workaround for the Ant bug.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5612">LUCENE-5612</a>: Add a new Ant target in lucene/core to test LockFactory
implementations: "ant test-lock-factory".
<br /><span class="attrib">(Uwe Schindler, Mike McCandless,
Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.8.0.documentation" href="javascript:toggleList('v4.8.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.8.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5534">LUCENE-5534</a>: Add javadocs to GreekStemmer methods.
<br /><span class="attrib">(Stamatis Pitsios via Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.7.2" href="javascript:toggleList('v4.7.2')">Release 4.7.2  [2014-04-15]</a></h3>
<ul id="v4.7.2.list">
  <li><a id="v4.7.2.bug_fixes" href="javascript:toggleList('v4.7.2.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.7.2.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5574">LUCENE-5574</a>: Closing a near-real-time reader no longer attempts to
delete unreferenced files if the original writer has been closed;
this could cause index corruption in certain cases where index files
were directly changed (deleted, overwritten, etc.) in the index
directory outside of Lucene.
<br /><span class="attrib">(Simon Willnauer, Shai Erera, Robert
Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5570">LUCENE-5570</a>: Don't let FSDirectory.sync() create new zero-byte files, instead throw
exception if a file is missing.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless, Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.7.1" href="javascript:toggleList('v4.7.1')">Release 4.7.1  [2014-04-02]</a></h3>
<ul id="v4.7.1.list">
  <li><a id="v4.7.1.changes_in_runtime_behavior" href="javascript:toggleList('v4.7.1.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.7.1.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5532">LUCENE-5532</a>: AutomatonQuery.equals is no longer implemented as "accepts same language".
This was inconsistent with hashCode, and unnecessary for any subclasses in Lucene.
If you desire this in a custom subclass, minimize the automaton.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.7.1.bug_fixes" href="javascript:toggleList('v4.7.1.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v4.7.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5450">LUCENE-5450</a>: Fix getField() NPE issues with SpanOr/SpanNear when they have an
empty list of clauses. This can happen for example,  when a wildcard matches
no terms.
<br /><span class="attrib">(Tim Allison via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5473">LUCENE-5473</a>: Throw IllegalArgumentException, not
NullPointerException, if the synonym map is empty when creating
SynonymFilter
<br /><span class="attrib">(帅广应 via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5432">LUCENE-5432</a>: EliasFanoDocIdSet: Fix number of index entry bits when the maximum
entry is a power of 2.
<br /><span class="attrib">(Paul Elschot via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5466">LUCENE-5466</a>: query is always null in countDocsWithClass() of SimpleNaiveBayesClassifier.
<br /><span class="attrib">(Koji Sekiguchi)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5502">LUCENE-5502</a>: Fixed TermsFilter.equals that could return true for different
filters.
<br /><span class="attrib">(Igor Motov via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5522">LUCENE-5522</a>: FacetsConfig didn't add drill-down terms for association facet
fields labels.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5520">LUCENE-5520</a>: ToChildBlockJoinQuery would hit
ArrayIndexOutOfBoundsException if a parent document had no children
<br /><span class="attrib">(Sally Ang via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5532">LUCENE-5532</a>: AutomatonQuery.hashCode was not thread-safe.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5525">LUCENE-5525</a>: Implement MultiFacets.getAllDims, so you can do sparse
facets through DrillSideways, for example.
<br /><span class="attrib">(Jose Peleteiro, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5481">LUCENE-5481</a>: IndexWriter.forceMerge used to run a merge even if there was a
single segment in the index.
<br /><span class="attrib">(Adrien Grand, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5538">LUCENE-5538</a>: Fix FastVectorHighlighter bug with index-time synonyms when the
query is more complex than a single phrase.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5544">LUCENE-5544</a>: Exceptions during IndexWriter.rollback could leak file handles
and the write lock.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4978">LUCENE-4978</a>: Spatial RecursivePrefixTree queries could result in false-negatives for
indexed shapes within 1/2 maxDistErr from the edge of the query shape.  This meant
searching for a point by the same point as a query rarely worked.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5553">LUCENE-5553</a>: IndexReader#ReaderClosedListener is not always invoked when
IndexReader#close() is called or if refCount is 0. If an exception is
thrown during interal close or on any of the close listerns some or all
listerners might be missed. This can cause memory leaks if the core listeners
are used to clear caches.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
  <li><a id="v4.7.1.build" href="javascript:toggleList('v4.7.1.build')">Build</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.7.1.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5511">LUCENE-5511</a>: "ant precommit" / "ant check-svn-working-copy" now work again
with any working copy format (thanks to svnkit 1.8.4).
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.7.0" href="javascript:toggleList('v4.7.0')">Release 4.7.0  [2014-02-26]</a></h3>
<ul id="v4.7.0.list">
  <li><a id="v4.7.0.new_features" href="javascript:toggleList('v4.7.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(24)
    <ol id="v4.7.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5336">LUCENE-5336</a>: Add SimpleQueryParser: parser for human-entered queries.
<br /><span class="attrib">(Jack Conradson via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5337">LUCENE-5337</a>: Add Payload support to FileDictionary (Suggest) and make it more
configurable
<br /><span class="attrib">(Areek Zilluer via Erick Erickson)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5329">LUCENE-5329</a>: suggest: DocumentDictionary and
DocumentExpressionDictionary are now lenient for dirty documents
(missing the term, weight or payload).
<br /><span class="attrib">(Areek Zillur via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5404">LUCENE-5404</a>: Add .getCount method to all suggesters (Lookup); persist count
metadata on .store(); Dictionary returns InputIterator; Dictionary.getWordIterator
renamed to .getEntryIterator.
<br /><span class="attrib">(Areek Zillur)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-1871">SOLR-1871</a>: The RangeMapFloatFunction accepts an arbitrary ValueSource
as target and default values.
<br /><span class="attrib">(Chris Harris, shalin)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5371">LUCENE-5371</a>: Speed up Lucene range faceting from O(N) per hit to
O(log(N)) per hit using segment trees; this only really starts to
matter in practice if the number of ranges is over 10 or so.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5379">LUCENE-5379</a>: Add Analyzer for Kurdish.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5369">LUCENE-5369</a>: Added an UpperCaseFilter to make UPPERCASE tokens.
<br /><span class="attrib">(ryan)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5345">LUCENE-5345</a>: Add a new BlendedInfixSuggester, which is like
AnalyzingInfixSuggester but boosts suggestions that matched tokens
with lower positions.
<br /><span class="attrib">(Remi Melisson via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5399">LUCENE-5399</a>: When sorting by String (SortField.STRING), you can now
specify whether missing values should be sorted first (the default),
using SortField.setMissingValue(SortField.STRING_FIRST), or last,
using SortField.setMissingValue(SortField.STRING_LAST).
<br /><span class="attrib">(Rob Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5099">LUCENE-5099</a>: QueryNode should have the ability to detach from its node
parent. Added QueryNode.removeFromParent() that allows nodes to be
detached from its parent node.
<br /><span class="attrib">(Adriano Crestani)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5395">LUCENE-5395</a> <a href="http://issues.apache.org/jira/browse/LUCENE-5451">LUCENE-5451</a>: Upgrade to Spatial4j 0.4.1: Parses WKT (including
ENVELOPE) with extension "BUFFER"; buffering a point results in a Circle.
JTS isn't needed for WKT any more but remains required for Polygons. New
Shapes: ShapeCollection and BufferedLineString. Various other improvements and
bug fixes too. More info:
<a href="https://github.com/spatial4j/spatial4j/blob/master/CHANGES.md">https://github.com/spatial4j/spatial4j/blob/master/CHANGES.md</a>
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5415">LUCENE-5415</a>: Add multitermquery (wildcards,prefix,etc) to PostingsHighlighter.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3069">LUCENE-3069</a>: Add two memory resident dictionaries (FST terms dictionary and
FSTOrd terms dictionary) to improve primary key lookups. The PostingsBaseFormat
API is also changed so that term dictionaries get the ability to block
encode term metadata, and all dictionary implementations can now plug in any
PostingsBaseFormat.
<br /><span class="attrib">(Han Jiang, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5353">LUCENE-5353</a>: ShingleFilter's filler token should be configurable.
<br /><span class="attrib">(Ahmet Arslan, Simon Willnauer, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5320">LUCENE-5320</a>: Add SearcherTaxonomyManager over search and taxonomy index
directories (i.e. not only NRT).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5410">LUCENE-5410</a>: Add fuzzy and near support via '~' operator to SimpleQueryParser.
<br /><span class="attrib">(Lee Hinman via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5426">LUCENE-5426</a>: Make SortedSetDocValuesReaderState abstract to allow
custom implementations for Lucene doc values faceting
<br /><span class="attrib">(John Wang via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5434">LUCENE-5434</a>: NRT support for file systems that do no have delete on last
close or cannot delete while referenced semantics.
<br /><span class="attrib">(Mark Miller, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5418">LUCENE-5418</a>: Drilling down or sideways on a Lucene facet range
(using Range.getFilter()) is now faster for costly filters (uses
random access, not iteration); range facet counts now accept a
fast-match filter to avoid computing the value for documents that
are out of bounds, e.g. using a bounding box filter with distance
range faceting.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5440">LUCENE-5440</a>: Add LongBitSet for managing more than 2.1B bits (otherwise use
FixedBitSet).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5437">LUCENE-5437</a>: ASCIIFoldingFilter now has an option to preserve the original token
and emit it on the same position as the folded token only if the actual token was
folded.
<br /><span class="attrib">(Simon Willnauer, Nik Everett)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5408">LUCENE-5408</a>: Add spatial SerializedDVStrategy that serializes a binary
representations of a shape into BinaryDocValues. It supports exact geometry
relationship calculations.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5457">LUCENE-5457</a>: Add SloppyMath.earthDiameter(double latitude) that returns an
approximate value of the diameter of the earth at the given latitude.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.7.0.build" href="javascript:toggleList('v4.7.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v4.7.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5217">LUCENE-5217</a>,<a href="http://issues.apache.org/jira/browse/LUCENE-5420">LUCENE-5420</a>: Maven config: get dependencies from Ant+Ivy config;
disable transitive dependency resolution for all depended-on artifacts by
putting an exclusion for each transitive dependency in the
&lt;dependencyManagement&gt; section of the grandparent POM.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5322">LUCENE-5322</a>: Clean up / simplify Maven-related Ant targets.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5347">LUCENE-5347</a>: Upgrade forbidden-apis checker to version 1.4.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4381">LUCENE-4381</a>: Upgrade analysis/icu to 52.1.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5357">LUCENE-5357</a>: Upgrade StandardTokenizer and UAX29URLEmailTokenizer to
Unicode 6.3; update UAX29URLEmailTokenizer's recognized top level
domains in URLs and Emails from the IANA Root Zone Database.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5360">LUCENE-5360</a>: Add support for developing in Netbeans IDE.
<br /><span class="attrib">(Michal Hlavac, Uwe Schindler, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-5590">SOLR-5590</a>: Upgrade HttpClient/HttpComponents to 4.3.x.
<br /><span class="attrib">(Karl Wright via Shawn Heisey)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5385">LUCENE-5385</a>: "ant precommit" / "ant check-svn-working-copy" now work
for SVN 1.8 or GIT checkouts. The ANT target prints a warning instead
of failing. It also instructs the user, how to run on SVN 1.8 working
copies.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5383">LUCENE-5383</a>: fix changes2html to link pull requests
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5411">LUCENE-5411</a>: Upgrade to released JFlex 1.5.0; stop requiring
a locally built JFlex snapshot jar.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5465">LUCENE-5465</a>: Solr Contrib "map-reduce" breaks Manifest of all other
JAR files by adding a broken Main-Class attribute.
<br /><span class="attrib">(Uwe Schindler, Steve Rowe)</span></li>
    </ol>
  </li>
  <li><a id="v4.7.0.bug_fixes" href="javascript:toggleList('v4.7.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v4.7.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5285">LUCENE-5285</a>: Improved highlighting of multi-valued fields with
FastVectorHighlighter.
<br /><span class="attrib">(Nik Everett via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5391">LUCENE-5391</a>: UAX29URLEmailTokenizer should not tokenize no-scheme
domain-only URLs that are followed by an alphanumeric character.
<br /><span class="attrib">(Chris Geeringh, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5405">LUCENE-5405</a>: If an analysis component throws an exception, Lucene
logs the field name to the info stream to assist in
diagnosis.
<br /><span class="attrib">(Benson Margulies)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-5661">SOLR-5661</a>: PriorityQueue now refuses to allocate itself if the
incoming maxSize is too large
<br /><span class="attrib">(Raintung Li via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5228">LUCENE-5228</a>: IndexWriter.addIndexes(Directory[]) now acquires a
write lock in each Directory, to ensure that no open IndexWriter is
changing the incoming indices.  This also means that you cannot pass
the same Directory to multiple concurrent addIndexes calls (which is
anyways unusual).
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5415">LUCENE-5415</a>: SpanMultiTermQueryWrapper didn't handle its boost in
hashcode/equals/tostring/rewrite.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5409">LUCENE-5409</a>: ToParentBlockJoinCollector.getTopGroups would fail to
return any groups when the joined query required more than one
rewrite step
<br /><span class="attrib">(Peng Cheng via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5398">LUCENE-5398</a>: NormValueSource was incorrectly casting the long value
to byte, before calling Similarity.decodeNormValue.
<br /><span class="attrib">(Peng Cheng via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5436">LUCENE-5436</a>: RefrenceManager#accquire can result in infinite loop if
managed resource is abused outside of the RefrenceManager. Decrementing
the reference without a corresponding incRef() call can cause an infinite
loop. ReferenceManager now throws IllegalStateException if currently managed
resources ref count is 0.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5443">LUCENE-5443</a>: Lucene45DocValuesProducer.ramBytesUsed() may throw
ConcurrentModificationException.
<br /><span class="attrib">(Shai Erera, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5444">LUCENE-5444</a>: MemoryIndex did't respect the analyzers offset gap and
offsets were corrupted if multiple fields with the same name were
added to the memory index.
<br /><span class="attrib">(Britta Weber, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5447">LUCENE-5447</a>: StandardTokenizer should break at consecutive chars matching
Word_Break = MidLetter, MidNum and/or MidNumLet
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5462">LUCENE-5462</a>: RamUsageEstimator.sizeOf(Object) is not used anymore to
estimate memory usage of segments. This used to make
SegmentReader.ramBytesUsed very CPU-intensive.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5461">LUCENE-5461</a>: ControlledRealTimeReopenThread would sometimes wait too
long (up to targetMaxStaleSec) when a searcher is waiting for a
specific generation, when it should have waited for at most
targetMinStaleSec.
<br /><span class="attrib">(Hans Lund via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.7.0.api_changes" href="javascript:toggleList('v4.7.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v4.7.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5339">LUCENE-5339</a>: The facet module was simplified/reworked to make the
APIs more approachable to new users. Note: when migrating to the new
API, you must pass the Document that is returned from FacetConfig.build()
to IndexWriter.addDocument().
<br /><span class="attrib">(Shai Erera, Gilad Barkai, Rob
Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5405">LUCENE-5405</a>: Make ShingleAnalzyerWrapper.getWrappedAnalyzer() public final
<br /><span class="attrib">(gsingers)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5395">LUCENE-5395</a>: The SpatialArgsParser now only reads WKT, no more "lat, lon"
etc. but it's easy to override the parseShape method if you wish.
<br /><span class="attrib">(David
Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5414">LUCENE-5414</a>: DocumentExpressionDictionary was renamed to
DocumentValueSourceDictionary and all dependencies to the lucene-expression
module were removed from lucene-suggest. DocumentValueSourceDictionary now
only accepts a ValueSource instead of a convenience ctor for an expression
string.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3069">LUCENE-3069</a>: PostingsWriterBase and PostingsReaderBase are no longer
responsible for encoding/decoding a block of terms.  Instead, they
should encode/decode each term to/from a long[] and byte[].
<br /><span class="attrib">(Han
Jiang, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5425">LUCENE-5425</a>: FacetsCollector and MatchingDocs use a general DocIdSet,
allowing for custom implementations to be used when faceting.
<br /><span class="attrib">(John Wang, Lei Wang, Shai Erera)</span></li>
    </ol>
  </li>
  <li><a id="v4.7.0.optimizations" href="javascript:toggleList('v4.7.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v4.7.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5372">LUCENE-5372</a>: Replace StringBuffer by StringBuilder, where possible.
<br /><span class="attrib">(Joshua Hartman via Uwe Schindler, Dawid Weiss, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5271">LUCENE-5271</a>: A slightly more accurate SloppyMath distance.
<br /><span class="attrib">(Gilad Barkai via Ryan Ernst)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5399">LUCENE-5399</a>: Deep paging using IndexSearcher.searchAfter when
sorting by fields is faster
<br /><span class="attrib">(Rob Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.7.0.changes_in_runtime_behavior" href="javascript:toggleList('v4.7.0.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.7.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5362">LUCENE-5362</a>: IndexReader and SegmentCoreReaders now throw
AlreadyClosedException if the refCount in incremented but
is less that 1.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
  <li><a id="v4.7.0.documentation" href="javascript:toggleList('v4.7.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.7.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5384">LUCENE-5384</a>: Add some tips for making tokenfilters and tokenizers
to the analysis package overview.
<br /><span class="attrib">(Benson Margulies via Robert Muir - <a href="https://github.com/apache/lucene-solr/pull/12">pull request #12</a>)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5389">LUCENE-5389</a>: Add more guidance in the analyis documentation
package overview.
<br /><span class="attrib">(Benson Margulies via Robert Muir - <a href="https://github.com/apache/lucene-solr/pull/14">pull request #14</a>)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.6.1" href="javascript:toggleList('v4.6.1')">Release 4.6.1  [2014-01-28]</a></h3>
<ul id="v4.6.1.list">
  <li><a id="v4.6.1.bug_fixes" href="javascript:toggleList('v4.6.1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v4.6.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5373">LUCENE-5373</a>: Memory usage of
[Lucene40/Lucene42/Memory/Direct]DocValuesFormat was over-estimated.
<br /><span class="attrib">(Shay Banon, Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5361">LUCENE-5361</a>: Fixed handling of query boosts in FastVectorHighlighter.
<br /><span class="attrib">(Nik Everett via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5374">LUCENE-5374</a>: IndexWriter processes internal events after the it
closed itself internally. This rare condition can happen if an
IndexWriter has internal changes that were not fully applied yet
like when index / flush requests happen concurrently to the close or
rollback call.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5394">LUCENE-5394</a>: Fix TokenSources.getTokenStream to return payloads if
they were indexed with the term vectors.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5344">LUCENE-5344</a>: Flexible StandardQueryParser behaves differently than
ClassicQueryParser.
<br /><span class="attrib">(Adriano Crestani)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5375">LUCENE-5375</a>: ToChildBlockJoinQuery works harder to detect mis-use,
when the parent query incorrectly returns child documents, and throw
a clear exception saying so.
<br /><span class="attrib">(Dr. Oleg Savrasov via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5401">LUCENE-5401</a>: Field.StringTokenStream#end() calls super.end() now,
preventing wrong term positions for fields that use
StringTokenStream.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5377">LUCENE-5377</a>: IndexWriter.addIndexes(Directory[]) would cause corruption
on Lucene 4.6 if any index segments were Lucene 4.0-4.5.
<br /><span class="attrib">(Littlestar, Mike McCandless, Shai Erera, Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.6.0" href="javascript:toggleList('v4.6.0')">Release 4.6.0  [2013-11-24]</a></h3>
<ul id="v4.6.0.list">
  <li><a id="v4.6.0.new_features" href="javascript:toggleList('v4.6.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(23)
    <ol id="v4.6.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4906">LUCENE-4906</a>: PostingsHighlighter can now render to custom Object,
for advanced use cases where String is too restrictive
<br /><span class="attrib">(Luca
Cavanna, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5133">LUCENE-5133</a>: Changed AnalyzingInfixSuggester.highlight to return
Object instead of String, to allow for advanced use cases where
String is too restrictive
<br /><span class="attrib">(Robert Muir, Shai Erera, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5207">LUCENE-5207</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5334">LUCENE-5334</a>: Added expressions module for customizing ranking
with script-like syntax.
<br /><span class="attrib">(Jack Conradson, Ryan Ernst, Uwe Schindler via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5180">LUCENE-5180</a>: ShingleFilter now creates shingles with trailing holes,
for example if a StopFilter had removed the last token.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5219">LUCENE-5219</a>: Add support to SynonymFilterFactory for custom
parsers.
<br /><span class="attrib">(Ryan Ernst via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5235">LUCENE-5235</a>: Tokenizers now throw an IllegalStateException if the
consumer does not call reset() before consuming the stream. Previous
versions throwed NullPointerException or ArrayIndexOutOfBoundsException
on best effort which was not user-friendly.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5240">LUCENE-5240</a>: Tokenizers now throw an IllegalStateException if the
consumer neglects to call close() on the previous stream before consuming
the next one.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5214">LUCENE-5214</a>: Add new FreeTextSuggester, to predict the next word
using a simple ngram language model.  This is useful for the "long
tail" suggestions, when a primary suggester fails to find a
suggestion.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5251">LUCENE-5251</a>: New DocumentDictionary allows building suggesters via
contents of existing field, weight and optionally payload stored
fields in an index
<br /><span class="attrib">(Areek Zillur via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5261">LUCENE-5261</a>: Add QueryBuilder, a simple API to build queries from
the analysis chain directly, or to make it easier to implement
query parsers.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5270">LUCENE-5270</a>: Add Terms.hasFreqs, to determine whether a given field
indexed per-doc term frequencies.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5269">LUCENE-5269</a>: Add CodepointCountFilter.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5294">LUCENE-5294</a>: Suggest module: add DocumentExpressionDictionary to
compute each suggestion's weight using a javascript expression.
<br /><span class="attrib">(Areek Zillur via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5274">LUCENE-5274</a>: FastVectorHighlighter now supports highlighting against several
indexed fields.
<br /><span class="attrib">(Nik Everett via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5304">LUCENE-5304</a>: SingletonSortedSetDocValues can now return the wrapped
SortedDocValues
<br /><span class="attrib">(Robert Muir, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2844">LUCENE-2844</a>: The benchmark module can now test the spatial module. See
spatial.alg
<br /><span class="attrib">(David Smiley, Liviy Ambrose)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5302">LUCENE-5302</a>: Make StemmerOverrideMap's methods public
<br /><span class="attrib">(Alan Woodward)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5296">LUCENE-5296</a>: Add DirectDocValuesFormat, which holds all doc values
in heap as uncompressed java native arrays.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5189">LUCENE-5189</a>: Add IndexWriter.updateNumericDocValues, to update
numeric DocValues fields of documents, without re-indexing them.
<br /><span class="attrib">(Shai Erera, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5298">LUCENE-5298</a>: Add SumValueSourceFacetRequest for aggregating facets by
a ValueSource, such as a NumericDocValuesField or an expression.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5323">LUCENE-5323</a>: Add .sizeInBytes method to all suggesters (Lookup).
<br /><span class="attrib">(Areek Zillur via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5312">LUCENE-5312</a>: Add BlockJoinSorter, a new Sorter implementation that makes sure
to never split up blocks of documents indexed with IndexWriter.addDocuments.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5297">LUCENE-5297</a>: Allow to range-facet on any ValueSource, not just
NumericDocValues fields.
<br /><span class="attrib">(Shai Erera)</span></li>
    </ol>
  </li>
  <li><a id="v4.6.0.bug_fixes" href="javascript:toggleList('v4.6.0.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v4.6.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5272">LUCENE-5272</a>: OpenBitSet.ensureCapacity did not modify numBits, causing
false assertion errors in fastSet.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5303">LUCENE-5303</a>: OrdinalsCache did not use coreCacheKey, resulting in
over caching across multiple threads.
<br /><span class="attrib">(Mike McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5307">LUCENE-5307</a>: Fix topScorer inconsistency in handling QueryWrapperFilter
inside ConstantScoreQuery, which now rewrites to a query removing the
obsolete QueryWrapperFilter.
<br /><span class="attrib">(Adrien Grand, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5330">LUCENE-5330</a>: IndexWriter didn't process all internal events on
#getReader(), #close() and #rollback() which causes files to be
deleted at a later point in time. This could cause short-term disk
pollution or OOM if in-memory directories are used.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5342">LUCENE-5342</a>: Fixed bulk-merge issue in CompressingStoredFieldsFormat which
created corrupted segments when mixing chunk sizes.
Lucene41StoredFieldsFormat is not impacted.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.6.0.api_changes" href="javascript:toggleList('v4.6.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(9)
    <ol id="v4.6.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5222">LUCENE-5222</a>: Add SortField.needsScores(). Previously it was not possible
for a custom Sort that makes use of the relevance score to work correctly
with IndexSearcher when an ExecutorService is specified.
<br /><span class="attrib">(Ryan Ernst, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5275">LUCENE-5275</a>: Change AttributeSource.toString() to display the current
state of attributes.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5277">LUCENE-5277</a>: Modify FixedBitSet copy constructor to take an additional
numBits parameter to allow growing/shrinking the copied bitset. You can
use FixedBitSet.clone() if you only need to clone the bitset.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5260">LUCENE-5260</a>: Use TermFreqPayloadIterator for all suggesters; those
suggesters that can't support payloads will throw an exception if
hasPayloads() is true.
<br /><span class="attrib">(Areek Zillur via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5280">LUCENE-5280</a>: Rename TermFreqPayloadIterator -&gt; InputIterator, along
with associated suggest/spell classes.
<br /><span class="attrib">(Areek Zillur via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5157">LUCENE-5157</a>: Rename OrdinalMap methods to clarify API and internal structure.
<br /><span class="attrib">(Boaz Leskes via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5313">LUCENE-5313</a>: Move preservePositionIncrements from setter to ctor in
Analyzing/FuzzySuggester.
<br /><span class="attrib">(Areek Zillur via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5321">LUCENE-5321</a>: Remove Facet42DocValuesFormat. Use DirectDocValuesFormat if you
want to load the category list into memory.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5324">LUCENE-5324</a>: AnalyzerWrapper.getPositionIncrementGap and getOffsetGap can now
be overridden.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.6.0.optimizations" href="javascript:toggleList('v4.6.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.6.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5225">LUCENE-5225</a>: The ToParentBlockJoinQuery only keeps tracks of the the child
doc ids and child scores if the ToParentBlockJoinCollector is used.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5236">LUCENE-5236</a>: EliasFanoDocIdSet now has an index and uses broadword bit
selection to speed-up advance().
<br /><span class="attrib">(Paul Elschot via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5266">LUCENE-5266</a>: Improved number of read calls and branches in DirectPackedReader.
<br /><span class="attrib">(Ryan Ernst)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5300">LUCENE-5300</a>: Optimized SORTED_SET storage for fields which are single-valued.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.6.0.documentation" href="javascript:toggleList('v4.6.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.6.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5211">LUCENE-5211</a>: Better javadocs and error checking of 'format' option in
StopFilterFactory, as well as comments in all snowball formated files
about specifying format option.
<br /><span class="attrib">(hossman)</span></li>
    </ol>
  </li>
  <li><a id="v4.6.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.6.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.6.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5235">LUCENE-5235</a>: Sub classes of Tokenizer have to call super.reset()
when implementing reset(). Otherwise the consumer will get an
IllegalStateException because the Reader is not correctly assigned.
It is important to never change the "input" field on Tokenizer
without using setReader(). The "input" field must not be used
outside reset(), incrementToken(), or end() - especially not in
the constructor.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5204">LUCENE-5204</a>: Directory doesn't have default implementations for
LockFactory-related methods, which have been moved to BaseDirectory. If you
had a custom Directory implementation that extended Directory, you need to
extend BaseDirectory instead.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.6.0.build" href="javascript:toggleList('v4.6.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.6.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5283">LUCENE-5283</a>: Fail the build if ant test didn't execute any tests
(everything filtered out).
<br /><span class="attrib">(Dawid Weiss, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5249">LUCENE-5249</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5257">LUCENE-5257</a>: All Lucene/Solr modules should use the same
dependency versions.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5273">LUCENE-5273</a>: Binary artifacts in Lucene and Solr convenience binary
distributions accompanying a release, including on Maven Central,
should be identical across all distributions.
<br /><span class="attrib">(Steve Rowe, Uwe Schindler,
Shalin Shekhar Mangar)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4753">LUCENE-4753</a>: Run forbidden-apis Ant task per module. This allows more
improvements and prevents OOMs after the number of class files
raised recently.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.6.0.tests" href="javascript:toggleList('v4.6.0.tests')">Tests</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.6.0.tests.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5278">LUCENE-5278</a>: Fix MockTokenizer to work better with more regular expression
patterns. Previously it could only behave like CharTokenizer (where a character
is either a "word" character or not), but now it gives a general longest-match
behavior.
<br /><span class="attrib">(Nik Everett via Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.5.1" href="javascript:toggleList('v4.5.1')">Release 4.5.1  [2013-10-24]</a></h3>
<ul id="v4.5.1.list">
  <li><a id="v4.5.1.bug_fixes" href="javascript:toggleList('v4.5.1.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v4.5.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4998">LUCENE-4998</a>: Fixed a few places to pass IOContext.READONCE instead
of IOContext.READ
<br /><span class="attrib">(Shikhar Bhushan via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5242">LUCENE-5242</a>: DirectoryTaxonomyWriter.replaceTaxonomy did not fully reset
its state, which could result in exceptions being thrown, as well as
incorrect ordinals returned from getParent.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5254">LUCENE-5254</a>: Fixed bounded memory leak, where objects like live
docs bitset were not freed from an starting reader after reopening
to a new reader and closing the original one.
<br /><span class="attrib">(Shai Erera, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5262">LUCENE-5262</a>: Fixed file handle leaks when multiple attempts to open an
NRT reader hit exceptions.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5263">LUCENE-5263</a>: Transient IOExceptions, e.g. due to disk full or file
descriptor exhaustion, hit at unlucky times inside IndexWriter could
lead to silently losing deletions.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5264">LUCENE-5264</a>: CommonTermsQuery ignored minMustMatch if only high-frequent
terms were present in the query and the high-frequent operator was set
to SHOULD.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5269">LUCENE-5269</a>: Fix bug in NGramTokenFilter where it would sometimes count
unicode characters incorrectly.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5289">LUCENE-5289</a>: IndexWriter.hasUncommittedChanges was returning false
when there were buffered delete-by-Term.
<br /><span class="attrib">(Shalin Shekhar Mangar,
Mike McCandless)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.5.0" href="javascript:toggleList('v4.5.0')">Release 4.5.0  [2013-10-05]</a></h3>
<ul id="v4.5.0.list">
  <li><a id="v4.5.0.new_features" href="javascript:toggleList('v4.5.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(15)
    <ol id="v4.5.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5084">LUCENE-5084</a>: Added new Elias-Fano encoder, decoder and DocIdSet
implementations.
<br /><span class="attrib">(Paul Elschot via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5081">LUCENE-5081</a>: Added WAH8DocIdSet, an in-memory doc id set implementation based
on word-aligned hybrid encoding.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5098">LUCENE-5098</a>: New broadword utility methods in oal.util.BroadWord.
<br /><span class="attrib">(Paul Elschot via Adrien Grand, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5030">LUCENE-5030</a>: FuzzySuggester now supports optional unicodeAware
(default is false).  If true then edits are measured in Unicode code
points instead of UTF8 bytes.
<br /><span class="attrib">(Artem Lukanin via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5118">LUCENE-5118</a>: SpatialStrategy.makeDistanceValueSource() now has an optional
multiplier for scaling degrees to another unit.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5091">LUCENE-5091</a>: SpanNotQuery can now be configured with pre and post slop to act
as a hypothetical SpanNotNearQuery.
<br /><span class="attrib">(Tim Allison via David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4985">LUCENE-4985</a>: FacetsAccumulator.create() is now able to create a
MultiFacetsAccumulator over a mixed set of facet requests. MultiFacetsAccumulator
allows wrapping multiple FacetsAccumulators, allowing to easily mix
existing and custom ones. TaxonomyFacetsAccumulator supports any
FacetRequest which implements createFacetsAggregator and was indexed
using the taxonomy index.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5153">LUCENE-5153</a>: AnalyzerWrapper.wrapReader allows wrapping the Reader given to
inputReader.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5155">LUCENE-5155</a>: FacetRequest.getValueOf and .getFacetArraysSource replaced by
FacetsAggregator.createOrdinalValueResolver. This gives better options for
resolving an ordinal's value by FacetAggregators.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5165">LUCENE-5165</a>: Add SuggestStopFilter, to be used with analyzing
suggesters, so that a stop word at the very end of the lookup query,
and without any trailing token characters, will be preserved.  This
enables query "a" to suggest apple; see
<a href="http://blog.mikemccandless.com/2013/08/suggeststopfilter-carefully-removes.html">http://blog.mikemccandless.com/2013/08/suggeststopfilter-carefully-removes.html</a>
for details.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5178">LUCENE-5178</a>: Added support for missing values to DocValues fields.
AtomicReader.getDocsWithField returns a Bits of documents with a value,
and FieldCache.getDocsWithField forwards to that for DocValues fields. Things like
SortField.setMissingValue, FunctionValues.exists, and FieldValueFilter now
work with DocValues fields.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5124">LUCENE-5124</a>: Lucene 4.5 has a new Lucene45Codec with Lucene45DocValues,
supporting missing values and with most datastructures residing off-heap.
Added "Memory" docvalues format that works entirely in heap, and "Disk"
loads no datastructures into RAM. Both of these also support missing values.
Added DiskNormsFormat (in case you want norms entirely on disk).
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2750">LUCENE-2750</a>: Added PForDeltaDocIdSet, an in-memory doc id set implementation
based on the PFOR encoding.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5186">LUCENE-5186</a>: Added CachingWrapperFilter.getFilter in order to be able to get
the wrapped filter.
<br /><span class="attrib">(Trejkaz via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5197">LUCENE-5197</a>: Added SegmentReader.ramBytesUsed to return approximate heap RAM
used by index datastructures.
<br /><span class="attrib">(Areek Zillur via Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.5.0.bug_fixes" href="javascript:toggleList('v4.5.0.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(16)
    <ol id="v4.5.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5116">LUCENE-5116</a>: IndexWriter.addIndexes(IndexReader...) should drop empty (or all
deleted) segments.
<br /><span class="attrib">(Robert Muir, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5132">LUCENE-5132</a>: Spatial RecursivePrefixTree Contains predicate will throw an NPE
when there's no indexed data and maybe in other circumstances too.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5146">LUCENE-5146</a>: AnalyzingSuggester sort comparator read part of the input key as the
weight that caused the sorter to never sort by weight first since the weight is only
considered if the input is equal causing the malformed weight to be identical as well.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5151">LUCENE-5151</a>: Associations FacetsAggregators could enter an infinite loop when
some result documents were missing category associations.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5152">LUCENE-5152</a>: Fix MemoryPostingsFormat to not modify borrowed BytesRef from FSTEnum
seek/lookup which can cause sideeffects if done on a cached FST root arc.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5160">LUCENE-5160</a>: Handle the case where reading from a file or FileChannel returns -1,
which could happen in rare cases where something happens to the file between the
time we start the read loop (where we check the length) and when we actually do
the read.
<br /><span class="attrib">(gsingers, yonik, Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5166">LUCENE-5166</a>: PostingsHighlighter would throw IOOBE if a term spanned the maxLength
boundary, made it into the top-N and went to the formatter.
<br /><span class="attrib">(Manuel Amoabeng, Michael McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4583">LUCENE-4583</a>: Indexing core no longer enforces a limit on maximum
length binary doc values fields, but individual codecs (including
the default one) have their own limits
<br /><span class="attrib">(David Smiley, Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3849">LUCENE-3849</a>: TokenStreams now set the position increment in end(),
so we can handle trailing holes.  If you have a custom TokenStream
implementing end() then be sure it calls super.end().
<br /><span class="attrib">(Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5192">LUCENE-5192</a>: IndexWriter could allow adding same field name with different
DocValueTypes under some circumstances.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5191">LUCENE-5191</a>: SimpleHTMLEncoder in Highlighter module broke Unicode
outside BMP because it encoded UTF-16 chars instead of codepoints.
The escaping of codepoints &gt; 127 was removed (not needed for valid HTML)
and missing escaping for ' and / was added.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5201">LUCENE-5201</a>: Fixed compression bug in LZ4.compressHC when the input is highly
compressible and the start offset of the array to compress is &gt; 0.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5221">LUCENE-5221</a>: SimilarityBase did not write norms the same way as DefaultSimilarity
if discountOverlaps == false and index-time boosts are present for the field.
<br /><span class="attrib">(Yubin Kim via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5223">LUCENE-5223</a>: Fixed IndexUpgrader command line parsing: -verbose is not required
and -dir-impl option now works correctly.
<br /><span class="attrib">(hossman)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5245">LUCENE-5245</a>: Fix MultiTermQuery's constant score rewrites to always
return a ConstantScoreQuery to make scoring consistent. Previously it
returned an empty unwrapped BooleanQuery, if no terms were available,
which has a different query norm.
<br /><span class="attrib">(Nik Everett, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5218">LUCENE-5218</a>: In some cases, trying to retrieve or merge a 0-length
binary doc value would hit an ArrayIndexOutOfBoundsException.
<br /><span class="attrib">(Littlestar via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.5.0.api_changes" href="javascript:toggleList('v4.5.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(13)
    <ol id="v4.5.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5094">LUCENE-5094</a>: Add ramBytesUsed() to MultiDocValues.OrdinalMap.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5114">LUCENE-5114</a>: Remove unused boolean useCache parameter from
TermsEnum.seekCeil and .seekExact
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5128">LUCENE-5128</a>: IndexSearcher.searchAfter throws IllegalArgumentException if
searchAfter exceeds the number of documents in the reader.
<br /><span class="attrib">(Crocket via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5129">LUCENE-5129</a>: CategoryAssociationsContainer no longer supports null
association values for categories. If you want to index categories without
associations, you should add them using FacetFields.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4876">LUCENE-4876</a>: IndexWriter no longer clones the given IndexWriterConfig. If you
need to use the same config more than once, e.g. when sharing between multiple
writers, make sure to clone it before passing to each writer.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5144">LUCENE-5144</a>: StandardFacetsAccumulator renamed to OldFacetsAccumulator, and all
associated classes were moved under o.a.l.facet.old. The intention to remove it
one day, when the features it covers (complements, partitiona, sampling) will be
migrated to the new FacetsAggregator and FacetsAccumulator API. Also,
FacetRequest.createAggregator was replaced by OldFacetsAccumulator.createAggregator.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5149">LUCENE-5149</a>: CommonTermsQuery now allows to set the minimum number of terms that
should match for its high and low frequent sub-queries. Previously this was only
supported on the low frequent terms query.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5156">LUCENE-5156</a>: CompressingTermVectors TermsEnum no longer supports ord().
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5161">LUCENE-5161</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-5164">LUCENE-5164</a>: Fix default chunk sizes in FSDirectory to not be
unnecessarily large (now 8192 bytes); also use chunking when writing to index
files. FSDirectory#setReadChunkSize() is now deprecated and will be removed
in Lucene 5.0.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, gsingers)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5170">LUCENE-5170</a>: Analyzer.ReuseStrategy instances are now stateless and can
be reused in other Analyzer instances, which was not possible before.
Lucene ships now with stateless singletons for per field and global reuse.
Legacy code can still instantiate the deprecated implementation classes,
but new code should use the constants. Implementors of custom strategies
have to take care of new method signatures. AnalyzerWrapper can now be
configured to use a custom strategy, too, ideally the one from the wrapped
Analyzer. Analyzer adds a getter to retrieve the strategy for this use-case.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Shay Banon)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5173">LUCENE-5173</a>: Lucene never writes segments with 0 documents anymore.
<br /><span class="attrib">(Shai Erera, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5178">LUCENE-5178</a>: SortedDocValues always returns -1 ord when a document is missing
a value for the field. Previously it only did this if the SortedDocValues
was produced by uninversion on the FieldCache.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5183">LUCENE-5183</a>: remove BinaryDocValues.MISSING. In order to determine a document
is missing a field, use getDocsWithField instead.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.5.0.changes_in_runtime_behavior" href="javascript:toggleList('v4.5.0.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.5.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5178">LUCENE-5178</a>: DocValues codec consumer APIs (iterables) return null values
when the document has no value for the field.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5200">LUCENE-5200</a>: The HighFreqTerms command-line tool returns the true top-N
by totalTermFreq when using the -t option, it uses the term statistics (faster)
and now always shows totalTermFreq in the output.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.5.0.optimizations" href="javascript:toggleList('v4.5.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v4.5.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5088">LUCENE-5088</a>: Added TermFilter to filter docs by a specific term.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5119">LUCENE-5119</a>: DiskDV keeps the document-to-ordinal mapping on disk for
SortedDocValues.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5145">LUCENE-5145</a>: New AppendingPackedLongBuffer, a new variant of the former
AppendingLongBuffer which assumes values are 0-based.
<br /><span class="attrib">(Boaz Leskes via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5145">LUCENE-5145</a>: All Appending*Buffer now support bulk get.
<br /><span class="attrib">(Boaz Leskes via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5140">LUCENE-5140</a>: Fixed a performance regression of span queries caused by
<a href="http://issues.apache.org/jira/browse/LUCENE-4946">LUCENE-4946</a>.
<br /><span class="attrib">(Alan Woodward, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5150">LUCENE-5150</a>: Make WAH8DocIdSet able to inverse its encoding in order to
compress dense sets efficiently as well.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5159">LUCENE-5159</a>: Prefix-code the sorted/sortedset value dictionaries in DiskDV.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5170">LUCENE-5170</a>: Fixed several wrapper analyzers to inherit the reuse strategy
of the wrapped Analyzer.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Shay Banon)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5006">LUCENE-5006</a>: Simplified DocumentsWriter and DocumentsWriterPerThread
synchronization and concurrent interaction with IndexWriter. DWPT is now
only setup once and has no reset logic. All segment publishing and state
transition from DWPT into IndexWriter is now done via an Event-Queue
processed from within the IndexWriter in order to prevent suituations
where DWPT or DW calling int IW causing deadlocks.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5182">LUCENE-5182</a>: Terminate phrase searches early if max phrase window is
exceeded in FastVectorHighlighter to prevent very long running phrase
extraction if phrase terms are high frequent.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5188">LUCENE-5188</a>: CompressingStoredFieldsFormat now slices chunks containing big
documents into fixed-size blocks so that requesting a single field does not
necessarily force to decompress the whole chunk.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5101">LUCENE-5101</a>: CachingWrapper makes it easier to plug-in a custom cacheable
DocIdSet implementation and uses WAH8DocIdSet by default, which should be
more memory efficient than FixedBitSet on average as well as faster on small
sets.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.5.0.documentation" href="javascript:toggleList('v4.5.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.5.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4894">LUCENE-4894</a>: remove facet userguide as it was outdated. Partially absorbed into
package's documentation and classes javadocs.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5206">LUCENE-5206</a>: Clarify FuzzyQuery's unexpected behavior on short
terms.
<br /><span class="attrib">(Tim Allison via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.5.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.5.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v4.5.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5141">LUCENE-5141</a>: CheckIndex.fixIndex(Status,Codec) is now
CheckIndex.fixIndex(Status). If you used to pass a codec to this method, just
remove it from the arguments.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5089">LUCENE-5089</a>, <a href="http://issues.apache.org/jira/browse/SOLR-5126">SOLR-5126</a>: Update to Morfologik 1.7.1. MorfologikAnalyzer and MorfologikFilter
no longer support multiple "dictionaries" as there is only one dictionary available.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5170">LUCENE-5170</a>: Changed method signatures of Analyzer.ReuseStrategy to take
Analyzer. Closeable interface was removed because the class was changed to
be stateless.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Shay Banon)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5187">LUCENE-5187</a>: SlowCompositeReaderWrapper constructor is now private,
SlowCompositeReaderWrapper.wrap should be used instead.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5101">LUCENE-5101</a>: CachingWrapperFilter doesn't always return FixedBitSet instances
anymore. Users of the join module can use
oal.search.join.FixedBitSetCachingWrapperFilter instead.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.5.0.build" href="javascript:toggleList('v4.5.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.5.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/SOLR-5159">SOLR-5159</a>: Manifest includes non-parsed maven variables.
<br /><span class="attrib">(Artem Karpenko via Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5193">LUCENE-5193</a>: Add jar-src as top-level target to generate all Lucene and Solr
*-src.jar.
<br /><span class="attrib">(Steve Rowe, Shai Erera)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.4.0" href="javascript:toggleList('v4.4.0')">Release 4.4.0  [2013-07-23]</a></h3>
<ul id="v4.4.0.list">
  <li><a id="v4.4.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.4.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(18)
    <ol id="v4.4.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5085">LUCENE-5085</a>: MorfologikFilter will no longer stem words marked as keywords
<br /><span class="attrib">(Dawid Weiss, Grzegorz Sobczyk)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4955">LUCENE-4955</a>: NGramTokenFilter now emits all n-grams for the same token at the
same position and preserves the position length and the offsets of the
original token.
<br /><span class="attrib">(Simon Willnauer, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4955">LUCENE-4955</a>: NGramTokenizer now emits n-grams in a different order
(a, ab, b, bc, c) instead of (a, b, c, ab, bc) and doesn't trim trailing
whitespaces.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5042">LUCENE-5042</a>: The n-gram and edge n-gram tokenizers and filters now correctly
handle supplementary characters, and the tokenizers have the ability to
pre-tokenize the input stream similarly to CharTokenizer.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4967">LUCENE-4967</a>: NRTManager is replaced by
ControlledRealTimeReopenThread, for controlling which requests must
see which indexing changes, so that it can work with any
ReferenceManager
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4973">LUCENE-4973</a>: SnapshotDeletionPolicy no longer requires a unique
String id
<br /><span class="attrib">(Mike McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4946">LUCENE-4946</a>: The internal sorting API (SorterTemplate, now Sorter) has been
completely refactored to allow for a better implementation of TimSort.
<br /><span class="attrib">(Adrien Grand, Uwe Schindler, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4963">LUCENE-4963</a>: Some TokenFilter options that generate broken TokenStreams have
been deprecated: updateOffsets=true on TrimFilter and
enablePositionIncrements=false on all classes that inherit from
FilteringTokenFilter: JapanesePartOfSpeechStopFilter, KeepWordFilter,
LengthFilter, StopFilter and TypeTokenFilter.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4963">LUCENE-4963</a>: In order not to take position increments into account in
suggesters, you now need to call setPreservePositionIncrements(false) instead
of configuring the token filters to not increment positions.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3907">LUCENE-3907</a>: EdgeNGramTokenizer now supports maxGramSize &gt; 1024, doesn't trim
the input, sets position increment = 1 for all tokens and doesn't support
backward grams anymore.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3907">LUCENE-3907</a>: EdgeNGramTokenFilter does not support backward grams and does
not update offsets anymore.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4981">LUCENE-4981</a>: PositionFilter is now deprecated as it can corrupt token stream
graphs. Since it main use-case was to make query parsers generate boolean
queries instead of phrase queries, it is now advised to use
QueryParser.setAutoGeneratePhraseQueries(false) (for simple cases) or to
override QueryParser.newFieldQuery.
<br /><span class="attrib">(Adrien Grand, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5018">LUCENE-5018</a>: CompoundWordTokenFilterBase and its children
DictionaryCompoundWordTokenFilter and HyphenationCompoundWordTokenFilter don't
update offsets anymore.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5015">LUCENE-5015</a>: SamplingAccumulator no longer corrects the counts of the sampled
categories. You should set TakmiSampleFixer on SamplingParams if required (but
notice that this means slower search).
<br /><span class="attrib">(Rob Audenaerde, Gilad Barkai, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4933">LUCENE-4933</a>: Replace ExactSimScorer/SloppySimScorer with just SimScorer. Previously
there were 2 implementations as a performance hack to support tableization of
sqrt(), but this caching is removed, as sqrt is implemented in hardware with modern
jvms and its faster not to cache.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5038">LUCENE-5038</a>: MergePolicy now has a default implementation for useCompoundFile based
on segment size and noCFSRatio. The default implemantion was pulled up from
TieredMergePolicy.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5063">LUCENE-5063</a>: FieldCache.get(Bytes|Shorts), SortField.Type.(BYTE|SHORT) and
FieldCache.DEFAULT_(BYTE|SHORT|INT|LONG|FLOAT|DOUBLE)_PARSER are now
deprecated. These methods/types assume that data is stored as strings although
Lucene has much better support for numeric data through (Int|Long)Field,
NumericRangeQuery and FieldCache.get(Int|Long)s.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5078">LUCENE-5078</a>: TfIDFSimilarity lets you encode the norm value as any arbitrary long.
As a result, encode/decodeNormValue were made abstract with their signatures changed.
The default implementation was moved to DefaultSimilarity, which encodes the norm as
a single-byte value.
<br /><span class="attrib">(Shai Erera)</span></li>
    </ol>
  </li>
  <li><a id="v4.4.0.bug_fixes" href="javascript:toggleList('v4.4.0.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(23)
    <ol id="v4.4.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4890">LUCENE-4890</a>: QueryTreeBuilder.getBuilder() only finds interfaces on the
most derived class.
<br /><span class="attrib">(Adriano Crestani)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4997">LUCENE-4997</a>: Internal test framework's tests are sensitive to previous
test failures and tests.failfast.
<br /><span class="attrib">(Dawid Weiss, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4955">LUCENE-4955</a>: NGramTokenizer now supports inputs larger than 1024 chars.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4959">LUCENE-4959</a>: Fix incorrect return value in
SimpleNaiveBayesClassifier.assignClass.
<br /><span class="attrib">(Alexey Kutin via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4972">LUCENE-4972</a>: DirectoryTaxonomyWriter created empty commits even if no changes
were made.
<br /><span class="attrib">(Shai Erera, Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-949">LUCENE-949</a>: AnalyzingQueryParser can't work with leading wildcards.
<br /><span class="attrib">(Tim Allison, Robert Muir, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4980">LUCENE-4980</a>: Fix issues preventing mixing of RangeFacetRequest and
non-RangeFacetRequest when using DrillSideways.
<br /><span class="attrib">(Mike McCandless,
Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4996">LUCENE-4996</a>: Ensure DocInverterPerField always includes field name
in exception messages.
<br /><span class="attrib">(Markus Jelsma via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4992">LUCENE-4992</a>: Fix constructor of CustomScoreQuery to take FunctionQuery
for scoringQueries. Instead use QueryValueSource to safely wrap arbitrary
queries and use them with CustomScoreQuery.
<br /><span class="attrib">(John Wang, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5016">LUCENE-5016</a>: SamplingAccumulator returned inconsistent label if asked to
aggregate a non-existing category. Also fixed a bug in RangeAccumulator if
some readers did not have the requested numeric DV field.
<br /><span class="attrib">(Rob Audenaerde, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5028">LUCENE-5028</a>: Remove pointless and confusing doShare option in FST's
PositiveIntOutputs
<br /><span class="attrib">(Han Jiang via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5032">LUCENE-5032</a>: Fix IndexOutOfBoundsExc in PostingsHighlighter when
multi-valued fields exceed maxLength
<br /><span class="attrib">(Tomás Fernández Löbbe
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4933">LUCENE-4933</a>: SweetSpotSimilarity didn't apply its tf function to some
queries (SloppyPhraseQuery, SpanQueries).
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5033">LUCENE-5033</a>: SlowFuzzyQuery was accepting too many terms (documents) when
provided minSimilarity is an int &gt; 1
<br /><span class="attrib">(Tim Allison via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5045">LUCENE-5045</a>: DrillSideways.search did not work on an empty index.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4995">LUCENE-4995</a>: CompressingStoredFieldsReader now only reuses an internal buffer
when there is no more than 32kb to decompress. This prevents from running
into out-of-memory errors when working with large stored fields.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5062">LUCENE-5062</a>: If the spatial data for a document was comprised of multiple
overlapping or adjacent parts then a CONTAINS predicate query might not match
when the sum of those shapes contain the query shape but none do individually.
A flag was added to use the original faster algorithm.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4971">LUCENE-4971</a>: Fixed NPE in AnalyzingSuggester when there are too many
graph expansions.
<br /><span class="attrib">(Alexey Kudinov via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5080">LUCENE-5080</a>: Combined setMaxMergeCount and setMaxThreadCount into one
setter in ConcurrentMergePolicy: setMaxMergesAndThreads.  Previously these
setters would not work unless you invoked them very carefully.
<br /><span class="attrib">(Robert Muir, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5068">LUCENE-5068</a>: QueryParserUtil.escape() does not escape forward slash.
<br /><span class="attrib">(Matias Holte via Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5103">LUCENE-5103</a>: A join on A single-valued field with deleted docs scored too few
docs.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5090">LUCENE-5090</a>: Detect mismatched readers passed to
SortedSetDocValuesReaderState and SortedSetDocValuesAccumulator.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5120">LUCENE-5120</a>: AnalyzingSuggester modifed it's FST's cached root arc if payloads
are used and the entire output resided on the root arc on the first access. This
caused subsequent suggest calls to fail.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
  <li><a id="v4.4.0.optimizations" href="javascript:toggleList('v4.4.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v4.4.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4936">LUCENE-4936</a>: Improve numeric doc values compression in case all values share
a common divisor. In particular, this improves the compression ratio of dates
without time when they are encoded as milliseconds since Epoch. Also support
TABLE compressed numerics in the Disk codec.
<br /><span class="attrib">(Robert Muir, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4951">LUCENE-4951</a>: DrillSideways uses the new Scorer.cost() method to make
better decisions about which scorer to use internally.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4976">LUCENE-4976</a>: PersistentSnapshotDeletionPolicy writes its state to a
single snapshots_N file, and no longer requires closing
<br /><span class="attrib">(Mike
McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5035">LUCENE-5035</a>: Compress addresses in FieldCacheImpl.SortedDocValuesImpl more
efficiently.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4941">LUCENE-4941</a>: Sort "from" terms only once when using JoinUtil.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5050">LUCENE-5050</a>: Close the stored fields and term vectors index files as soon as
the index has been loaded into memory to save file descriptors.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5086">LUCENE-5086</a>: RamUsageEstimator now uses official Java 7 API or a proprietary
Oracle Java 6 API to get Hotspot MX bean, preventing AWT classes to be
loaded on MacOSX.
<br /><span class="attrib">(Shay Banon, Dawid Weiss, Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.4.0.new_features" href="javascript:toggleList('v4.4.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(19)
    <ol id="v4.4.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5085">LUCENE-5085</a>: MorfologikFilter will no longer stem words marked as keywords
<br /><span class="attrib">(Dawid Weiss, Grzegorz Sobczyk)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5064">LUCENE-5064</a>: Added PagedMutable (internal), a paged extension of
PackedInts.Mutable which allows for storing more than 2B values.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4766">LUCENE-4766</a>: Added a PatternCaptureGroupTokenFilter that uses Java regexes to
emit multiple tokens one for each capture group in one or more patterns.
<br /><span class="attrib">(Simon Willnauer, Clinton Gormley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4952">LUCENE-4952</a>: Expose control (protected method) in DrillSideways to
force all sub-scorers to be on the same document being collected.
This is necessary when using collectors like
ToParentBlockJoinCollector with DrillSideways.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-4761">SOLR-4761</a>: Add SimpleMergedSegmentWarmer, which just initializes terms,
norms, docvalues, and so on.
<br /><span class="attrib">(Mark Miller, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4964">LUCENE-4964</a>: Allow arbitrary Query for per-dimension drill-down to
DrillDownQuery and DrillSideways, to support future dynamic faceting
methods
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4966">LUCENE-4966</a>: Add CachingWrapperFilter.sizeInBytes()
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4965">LUCENE-4965</a>: Add dynamic (no taxonomy index used) numeric range
faceting to Lucene's facet module
<br /><span class="attrib">(Mike McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4979">LUCENE-4979</a>: LiveFieldFields can work with any ReferenceManager, not
just ReferenceManager&lt;IndexSearcher&gt;
<br /><span class="attrib">(Mike McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4975">LUCENE-4975</a>: Added a new Replicator module which can replicate index
revisions between server and client.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5022">LUCENE-5022</a>: Added FacetResult.mergeHierarchies to merge multiple
FacetResult of the same dimension into a single one with the reconstructed
hierarchy.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5026">LUCENE-5026</a>: Added PagedGrowableWriter, a new internal packed-ints structure
that grows the number of bits per value on demand, can store more than 2B
values and supports random write and read access.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5025">LUCENE-5025</a>: FST's Builder can now handle more than 2.1 billion
"tail nodes" while building a minimal FST.
<br /><span class="attrib">(Aaron Binns, Adrien
Grand, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5063">LUCENE-5063</a>: FieldCache.DEFAULT.get(Ints|Longs) now uses bit-packing to save
memory.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5079">LUCENE-5079</a>: IndexWriter.hasUncommittedChanges() returns true if there are
changes that have not been committed.
<br /><span class="attrib">(yonik, Mike McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-4565">SOLR-4565</a>: Extend NorwegianLightStemFilter and NorwegianMinimalStemFilter
to handle "nynorsk"
<br /><span class="attrib">(Erlend Garåsen, janhoy via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5087">LUCENE-5087</a>: Add getMultiValuedSeparator to PostingsHighlighter, for cases
where you want a different logical separator between field values. This can
be set to e.g. U+2029 PARAGRAPH SEPARATOR if you never want passes to span
values.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5013">LUCENE-5013</a>: Added ScandinavianFoldingFilterFactory and
ScandinavianNormalizationFilterFactory
<br /><span class="attrib">(Karl Wettin via janhoy)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4845">LUCENE-4845</a>: AnalyzingInfixSuggester finds suggestions based on
matches to any tokens in the suggestion, not just based on pure
prefix matching.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.4.0.api_changes" href="javascript:toggleList('v4.4.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v4.4.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5077">LUCENE-5077</a>: Make it easier to use compressed norms. Lucene42NormsFormat takes
an overhead parameter, so you can easily pass a different value other than
PackedInts.FASTEST from your own codec.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5097">LUCENE-5097</a>: Analyzer now has an additional tokenStream(String fieldName,
String text) method, so wrapping by StringReader for common use is no
longer needed. This method uses an internal reuseable reader, which was
previously only used by the Field class.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4542">LUCENE-4542</a>: HunspellStemFilter's maximum recursion level is now configurable.
<br /><span class="attrib">(Piotr, Rafał Kuć via Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.4.0.build" href="javascript:toggleList('v4.4.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.4.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4987">LUCENE-4987</a>: Upgrade randomized testing to version 2.0.10:
Test framework may fail internally due to overly aggresive J9 optimizations.
<br /><span class="attrib">(Dawid Weiss, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5043">LUCENE-5043</a>: The eclipse target now uses the containing directory for the
project name.  This also enforces UTF-8 encoding when files are copied with
filtering.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5055">LUCENE-5055</a>: "rat-sources" target now checks also build.xml, ivy.xml,
forbidden-api signatures, and parts of resources folders.
<br /><span class="attrib">(Ryan Ernst,
Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5072">LUCENE-5072</a>: Automatically patch javadocs generated by JDK versions
before 7u25 to work around the frame injection vulnerability (CVE-2013-1571,
VU#225657).
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.4.0.tests" href="javascript:toggleList('v4.4.0.tests')">Tests</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.4.0.tests.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4901">LUCENE-4901</a>: TestIndexWriterOnJRECrash should work on any
JRE vendor via Runtime.halt().
<br /><span class="attrib">(Mike McCandless, Robert Muir, Uwe Schindler, Rodrigo Trujillo, Dawid Weiss)</span></li>
    </ol>
  </li>
  <li><a id="v4.4.0.changes_in_runtime_behavior" href="javascript:toggleList('v4.4.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.4.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5038">LUCENE-5038</a>: New segments written by IndexWriter are now wrapped into CFS
by default. DocumentsWriterPerThread doesn't consult MergePolicy anymore
to decide if a CFS must be written, instead IndexWriterConfig now has a
property to enable / disable CFS for newly created segments.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5107">LUCENE-5107</a>: Properties files by Lucene are now written in UTF-8 encoding,
Unicode is no longer escaped. Reading of legacy properties files with
\u escapes is still possible.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.3.1" href="javascript:toggleList('v4.3.1')">Release 4.3.1  [2013-06-18]</a></h3>
<ul id="v4.3.1.list">
  <li><a id="v4.3.1.bug_fixes" href="javascript:toggleList('v4.3.1.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v4.3.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/SOLR-4813">SOLR-4813</a>: Fix SynonymFilterFactory to allow init parameters for
tokenizer factory used when parsing synonyms file.
<br /><span class="attrib">(Shingo Sasaki, hossman)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4935">LUCENE-4935</a>: CustomScoreQuery wrongly applied its query boost twice
(boost^2).
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4948">LUCENE-4948</a>: Fixed ArrayIndexOutOfBoundsException in PostingsHighlighter
if you had a 64-bit JVM without compressed OOPS: IBM J9, or Oracle with
large heap/explicitly disabled.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4953">LUCENE-4953</a>: Fixed ParallelCompositeReader to inform ReaderClosedListeners of
its synthetic subreaders. FieldCaches keyed on the atomic childs will be purged
earlier and FC insanity prevented.  In addition, ParallelCompositeReader's
toString() was changed to better reflect the reader structure.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4968">LUCENE-4968</a>: Fixed ToParentBlockJoinQuery/Collector: correctly handle parent
hits that had no child matches, don't throw IllegalArgumentEx when
the child query has no hits, more aggressively catch cases where childQuery
incorrectly matches parent documents
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4970">LUCENE-4970</a>: Fix boost value of rewritten NGramPhraseQuery.
<br /><span class="attrib">(Shingo Sasaki via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4974">LUCENE-4974</a>: CommitIndexTask was broken if no params were set.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4986">LUCENE-4986</a>: Fixed case where a newly opened near-real-time reader
fails to reflect a delete from IndexWriter.tryDeleteDocument
<br /><span class="attrib">(Reg,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4994">LUCENE-4994</a>: Fix PatternKeywordMarkerFilter to have public constructor.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4993">LUCENE-4993</a>: Fix BeiderMorseFilter to preserve custom attributes when
inserting tokens with position increment 0.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4991">LUCENE-4991</a>: Fix handling of synonyms in classic QueryParser.getFieldQuery for
terms not separated by whitespace. PositionIncrementAttribute was ignored, so with
default AND synonyms wrongly became mandatory clauses, and with OR, the
coordination factor was wrong.
<br /><span class="attrib">(李威, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-5002">LUCENE-5002</a>: IndexWriter#deleteAll() caused a deadlock in DWPT / DWSC if a
DwPT was flushing concurrently while deleteAll() aborted all DWPT. The IW
should never wait on DWPT via the flush control while holding on to the IW
Lock.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
  <li><a id="v4.3.1.optimizations" href="javascript:toggleList('v4.3.1.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.3.1.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4938">LUCENE-4938</a>: Don't use an unnecessarily large priority queue in IndexSearcher
methods that take top-N.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless, Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.3.0" href="javascript:toggleList('v4.3.0')">Release 4.3.0  [2013-05-05]</a></h3>
<ul id="v4.3.0.list">
  <li><a id="v4.3.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.3.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v4.3.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4810">LUCENE-4810</a>: EdgeNGramTokenFilter no longer increments position for
multiple ngrams derived from the same input token.
<br /><span class="attrib">(Walter Underwood
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4822">LUCENE-4822</a>: KeywordTokenFilter is now an abstract class. Subclasses
need to implement #isKeyword() in order to mark terms as keywords.
The existing functionality has been factored out into a new
SetKeywordTokenFilter class.
<br /><span class="attrib">(Simon Willnauer, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4642">LUCENE-4642</a>: Remove Tokenizer's and subclasses' ctors taking
AttributeSource.
<br /><span class="attrib">(Renaud Delbru, Uwe Schindler, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4833">LUCENE-4833</a>: IndexWriterConfig used to use LogByteSizeMergePolicy when
calling setMergePolicy(null) although the default merge policy is
TieredMergePolicy. IndexWriterConfig setters now throw an exception when
passed null if null is not a valid value.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4849">LUCENE-4849</a>: Made ParallelTaxonomyArrays abstract with a concrete
implementation for DirectoryTaxonomyWriter/Reader. Also moved it under
o.a.l.facet.taxonomy.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4876">LUCENE-4876</a>: IndexDeletionPolicy is now an abstract class instead of an
interface. IndexDeletionPolicy, MergeScheduler and InfoStream now implement
Cloneable.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4874">LUCENE-4874</a>: FilterAtomicReader and related classes (FilterTerms,
FilterDocsEnum, ...) don't forward anymore to the filtered instance when the
method has a default implementation through other abstract methods.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4642">LUCENE-4642</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4877">LUCENE-4877</a>: Implementors of TokenizerFactory, TokenFilterFactory,
and CharFilterFactory now need to provide at least one constructor taking
Map&lt;String,String&gt; to be able to be loaded by the SPI framework (e.g., from Solr).
In addition, TokenizerFactory needs to implement the abstract
create(AttributeFactory,Reader) method.
<br /><span class="attrib">(Renaud Delbru, Uwe Schindler,
Steve Rowe, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.3.0.api_changes" href="javascript:toggleList('v4.3.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v4.3.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4896">LUCENE-4896</a>: Made PassageFormatter abstract in PostingsHighlighter, made
members of DefaultPassageFormatter protected.
<br /><span class="attrib">(Luca Cavanna via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4844">LUCENE-4844</a>: removed TaxonomyReader.getParent(), you should use
TaxonomyReader.getParallelArrays().parents() instead.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4742">LUCENE-4742</a>: Renamed spatial 'Node' to 'Cell', along with any method names
and variables using this terminology.
<br /><span class="attrib">(David Smiley)</span></li>
    </ol>
  </li>
  <li><a id="v4.3.0.new_features" href="javascript:toggleList('v4.3.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(34)
    <ol id="v4.3.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4815">LUCENE-4815</a>: DrillSideways now allows more than one FacetRequest per
dimension
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3918">LUCENE-3918</a>: IndexSorter has been ported to 4.3 API and now supports
sorting documents by a numeric DocValues field, or reverse the order of
the documents in the index. Additionally, apps can implement their own
sort criteria.
<br /><span class="attrib">(Anat Hashavit, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4817">LUCENE-4817</a>: Added KeywordRepeatFilter that allows to emit a token twice
once as a keyword and once as an ordinary token allow stemmers to emit
a stemmed version along with the un-stemmed version.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4822">LUCENE-4822</a>: PatternKeywordTokenFilter can mark tokens as keywords based
on regular expressions.
<br /><span class="attrib">(Simon Willnauer, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4821">LUCENE-4821</a>: AnalyzingSuggester now uses the ending offset to
determine whether the last token was finished or not, so that a
query "i " will no longer suggest "Isla de Muerta" for example.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4642">LUCENE-4642</a>: Add create(AttributeFactory) to TokenizerFactory and
subclasses with ctors taking AttributeFactory.
<br /><span class="attrib">(Renaud Delbru, Uwe Schindler, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4820">LUCENE-4820</a>: Add payloads to Analyzing/FuzzySuggester, to record an
arbitrary byte[] per suggestion
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4816">LUCENE-4816</a>: Add WholeBreakIterator to PostingsHighlighter
for treating the entire content as a single Passage.
<br /><span class="attrib">(Robert
Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4827">LUCENE-4827</a>: Add additional ctor to PostingsHighlighter PassageScorer
to provide bm25 k1,b,avgdl parameters.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4607">LUCENE-4607</a>: Add DocIDSetIterator.cost() and Spans.cost() for optimizing
scoring.
<br /><span class="attrib">(Simon Willnauer, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4795">LUCENE-4795</a>: Add SortedSetDocValuesFacetFields and
SortedSetDocValuesAccumulator, to compute topK facet counts from a
field's SortedSetDocValues.  This method only supports flat
(dim/label) facets, is a bit (~25%) slower, has added cost
per-IndexReader-open to compute its ordinal map, but it requires no
taxonomy index and it tie-breaks facet labels in an understandable
(by Unicode sort order) way.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4843">LUCENE-4843</a>: Add LimitTokenPositionFilter: don't emit tokens with
positions that exceed the configured limit.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4832">LUCENE-4832</a>: Add ToParentBlockJoinCollector.getTopGroupsWithAllChildDocs, to retrieve
all children in each group.
<br /><span class="attrib">(Aleksey Aleev via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4846">LUCENE-4846</a>: PostingsHighlighter subclasses can override where the
String values come from (it still defaults to pulling from stored
fields).
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4853">LUCENE-4853</a>: Add PostingsHighlighter.highlightFields method that
takes int[] docIDs instead of TopDocs.
<br /><span class="attrib">(Robert Muir, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4856">LUCENE-4856</a>: If there are no matches for a given field, return the
first maxPassages sentences
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4859">LUCENE-4859</a>: IndexReader now exposes Terms statistics: getDocCount,
getSumDocFreq, getSumTotalTermFreq.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4862">LUCENE-4862</a>: It is now possible to terminate collection of a single
IndexReader leaf by throwing a CollectionTerminatedException in
Collector.collect.
<br /><span class="attrib">(Adrien Grand, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4752">LUCENE-4752</a>: New SortingMergePolicy (in lucene/misc) that sorts documents
before merging segments.
<br /><span class="attrib">(Adrien Grand, Shai Erera, David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4860">LUCENE-4860</a>: Customize scoring and formatting per-field in
PostingsHighlighter by subclassing and overriding the getFormatter
and/or getScorer methods.  This also changes Passage.getMatchTerms()
to return BytesRef[] instead of Term[].
<br /><span class="attrib">(Robert Muir, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4839">LUCENE-4839</a>: Added SorterTemplate.timSort, a O(n log n) stable sort algorithm
that performs well on partially sorted data.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4644">LUCENE-4644</a>: Added support for the "IsWithin" spatial predicate for
RecursivePrefixTreeStrategy. It's for matching non-point indexed shapes; if
you only have points (1/doc) then "Intersects" is equivalent and faster.
See the javadocs.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4861">LUCENE-4861</a>: Make BreakIterator per-field in PostingsHighlighter. This means
you can override getBreakIterator(String field) to use different mechanisms
for e.g. title vs. body fields.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4645">LUCENE-4645</a>: Added support for the "Contains" spatial predicate for
RecursivePrefixTreeStrategy.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4898">LUCENE-4898</a>: DirectoryReader.openIfChanged now allows opening a reader
on an IndexCommit starting from a near-real-time reader (previously
this would throw IllegalArgumentException).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4905">LUCENE-4905</a>: Made the maxPassages parameter per-field in PostingsHighlighter.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4897">LUCENE-4897</a>: Added TaxonomyReader.getChildren for traversing a category's
children.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4902">LUCENE-4902</a>: Added FilterDirectoryReader to allow easy filtering of a
DirectoryReader's subreaders.
<br /><span class="attrib">(Alan Woodward, Adrien Grand, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4858">LUCENE-4858</a>: Added EarlyTerminatingSortingCollector to be used in conjunction
with SortingMergePolicy, which allows to early terminate queries on sorted
indexes, when the sort order matches the index order.
<br /><span class="attrib">(Adrien Grand, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4904">LUCENE-4904</a>: Added descending sort order to NumericDocValuesSorter.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3786">LUCENE-3786</a>: Added SearcherTaxonomyManager, to manage access to both
IndexSearcher and DirectoryTaxonomyReader for near-real-time
faceting.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4915">LUCENE-4915</a>: DrillSideways now allows drilling down on fields that
are not faceted.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4895">LUCENE-4895</a>: Added support for the "IsDisjointTo" spatial predicate for
RecursivePrefixTreeStrategy.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4774">LUCENE-4774</a>: Added FieldComparator that allows sorting parent documents based on
fields on the child / nested document level.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
    </ol>
  </li>
  <li><a id="v4.3.0.optimizations" href="javascript:toggleList('v4.3.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v4.3.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4839">LUCENE-4839</a>: SorterTemplate.merge can now be overridden in order to replace
the default implementation which merges in-place by a faster implementation
that could require fewer swaps at the expense of some extra memory.
ArrayUtil and CollectionUtil override it so that their mergeSort and timSort
methods are faster but only require up to 1% of extra memory.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4571">LUCENE-4571</a>: Speed up BooleanQuerys with minNrShouldMatch to use
skipping.
<br /><span class="attrib">(Stefan Pohl via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4863">LUCENE-4863</a>: StemmerOverrideFilter now uses a FST to represent its overrides
in memory.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4889">LUCENE-4889</a>: UnicodeUtil.codePointCount implementation replaced with a
non-array-lookup version.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4923">LUCENE-4923</a>: Speed up BooleanQuerys processing of in-order disjunctions.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4926">LUCENE-4926</a>: Speed up DisjunctionMatchQuery.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4930">LUCENE-4930</a>: Reduce contention in older/buggy JVMs when using
AttributeSource#addAttribute() because java.lang.ref.ReferenceQueue#poll()
is implemented using synchronization.
<br /><span class="attrib">(Christian Ziech, Karl Wright,
Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.3.0.bug_fixes" href="javascript:toggleList('v4.3.0.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(18)
    <ol id="v4.3.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4868">LUCENE-4868</a>: SumScoreFacetsAggregator used an incorrect index into
the scores array.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4882">LUCENE-4882</a>: FacetsAccumulator did not allow to count ROOT category (i.e.
count dimensions).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4876">LUCENE-4876</a>: IndexWriterConfig.clone() now clones its MergeScheduler,
IndexDeletionPolicy and InfoStream in order to make an IndexWriterConfig and
its clone fully independent.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4893">LUCENE-4893</a>: Facet counts were multiplied as many times as
FacetsCollector.getFacetResults() is called.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4888">LUCENE-4888</a>: Fixed SloppyPhraseScorer, MultiDocs(AndPositions)Enum and
MultiSpansWrapper which happened to sometimes call DocIdSetIterator.advance
with target&lt;=current (in this case the behavior of advance is undefined).
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4899">LUCENE-4899</a>: FastVectorHighlighter failed with StringIndexOutOfBoundsException
if a single highlight phrase or term was greater than the fragCharSize producing
negative string offsets.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4877">LUCENE-4877</a>: Throw exception for invalid arguments in analysis factories.
<br /><span class="attrib">(Steve Rowe, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4914">LUCENE-4914</a>: SpatialPrefixTree's Node/Cell.reset() forgot to reset the 'leaf'
flag.  It affects SpatialRecursivePrefixTreeStrategy on non-point indexed
shapes, as of Lucene 4.2.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4913">LUCENE-4913</a>: FacetResultNode.ordinal was always 0 when all children
are returned.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4918">LUCENE-4918</a>: Highlighter closes the given IndexReader if QueryScorer
is used with an external IndexReader.
<br /><span class="attrib">(Simon Willnauer, Sirvan Yahyaei)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4880">LUCENE-4880</a>: Fix MemoryIndex to consume empty terms from the tokenstream consistent
with IndexWriter. Previously it discarded them.
<br /><span class="attrib">(Timothy Allison via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4885">LUCENE-4885</a>: FacetsAccumulator did not set the correct value for
FacetResult.numValidDescendants.
<br /><span class="attrib">(Mike McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4925">LUCENE-4925</a>: Fixed IndexSearcher.search when the argument list contains a Sort
and one of the sort fields is the relevance score. Only IndexSearchers created
with an ExecutorService are concerned.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4738">LUCENE-4738</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2727">LUCENE-2727</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2812">LUCENE-2812</a>: Simplified
DirectoryReader.indexExists so that it's more robust to transient
IOExceptions (e.g. due to issues like file descriptor exhaustion),
but this will also cause it to err towards returning true for
example if the directory contains a corrupted index or an incomplete
initial commit.  In addition, IndexWriter with OpenMode.CREATE will
now succeed even if the directory contains a corrupted index
<br /><span class="attrib">(Billow
Gao, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4928">LUCENE-4928</a>: Stored fields and term vectors could become super slow in case
of tiny documents (a few bytes). This is especially problematic when switching
codecs since bulk-merge strategies can't be applied and the same chunk of
documents can end up being decompressed thousands of times. A hard limit on
the number of documents per chunk has been added to fix this issue.
<br /><span class="attrib">(Robert Muir, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4934">LUCENE-4934</a>: Fix minor equals/hashcode problems in facet/DrillDownQuery,
BoostingQuery, MoreLikeThisQuery, FuzzyLikeThisQuery, and block join queries.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4504">LUCENE-4504</a>: Fix broken sort comparator in ValueSource.getSortField,
used when sorting by a function query.
<br /><span class="attrib">(Tom Shally via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4937">LUCENE-4937</a>: Fix incorrect sorting of float/double values (+/-0, NaN).
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.3.0.documentation" href="javascript:toggleList('v4.3.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.3.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4841">LUCENE-4841</a>: Added example SimpleSortedSetFacetsExample to show how
to use the new SortedSetDocValues backed facet implementation.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.3.0.build" href="javascript:toggleList('v4.3.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.3.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4879">LUCENE-4879</a>: Upgrade randomized testing to version 2.0.9:
Filter stack traces on console output.
<br /><span class="attrib">(Dawid Weiss, Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.2.1" href="javascript:toggleList('v4.2.1')">Release 4.2.1  [2013-04-03]</a></h3>
<ul id="v4.2.1.list">
  <li><a id="v4.2.1.bug_fixes" href="javascript:toggleList('v4.2.1.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(9)
    <ol id="v4.2.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4713">LUCENE-4713</a>: The SPI components used to load custom codecs or analysis
components were fixed to also scan the Lucene ClassLoader in addition
to the context ClassLoader, so Lucene is always able to find its own
codecs. The special case of a null context ClassLoader is now also
supported.
<br /><span class="attrib">(Christian Kohlschütter, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4819">LUCENE-4819</a>: seekExact(BytesRef, boolean) did not work correctly with
Sorted[Set]DocValuesTermsEnum.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4826">LUCENE-4826</a>: PostingsHighlighter was not returning the top N best
scoring passages.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4854">LUCENE-4854</a>: Fix DocTermOrds.getOrdTermsEnum() to not return negative
ord on initial next().
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4836">LUCENE-4836</a>: Fix SimpleRateLimiter#pause to return the actual time spent
sleeping instead of the wakeup timestamp in nano seconds.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4828">LUCENE-4828</a>: BooleanQuery no longer extracts terms from its MUST_NOT
clauses.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-4589">SOLR-4589</a>: Fixed CPU spikes and poor performance in lazy field loading
of multivalued fields.
<br /><span class="attrib">(hossman)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4870">LUCENE-4870</a>: Fix bug where an entire index might be deleted by the IndexWriter
due to false detection if an index exists in the directory when
OpenMode.CREATE_OR_APPEND is used. This might also affect application that set
the open mode manually using DirectoryReader#indexExists.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4878">LUCENE-4878</a>: Override getRegexpQuery in MultiFieldQueryParser to prefent
NullPointerException when regular expression syntax is used with
MultiFieldQueryParser.
<br /><span class="attrib">(Simon Willnauer, Adam Rauch)</span></li>
    </ol>
  </li>
  <li><a id="v4.2.1.optimizations" href="javascript:toggleList('v4.2.1.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v4.2.1.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4819">LUCENE-4819</a>: Added Sorted[Set]DocValues.termsEnum(), and optimized the
default codec for improved enumeration performance.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4854">LUCENE-4854</a>: Speed up TermsEnum of FieldCache.getDocTermOrds.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4857">LUCENE-4857</a>: Don't unnecessarily copy stem override map in
StemmerOverrideFilter.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.2.0" href="javascript:toggleList('v4.2.0')">Release 4.2.0  [2013-03-11]</a></h3>
<ul id="v4.2.0.list">
  <li><a id="v4.2.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.2.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v4.2.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4602">LUCENE-4602</a>: FacetFields now stores facet ordinals in a DocValues field,
rather than a payload. This forces rebuilding existing indexes, or do a
one time migration using FacetsPayloadMigratingReader. Since DocValues
support in-memory caching, CategoryListCache was removed too.
<br /><span class="attrib">(Shai Erera, Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4697">LUCENE-4697</a>: FacetResultNode is now a concrete class with public members
(instead of getter methods).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4600">LUCENE-4600</a>: FacetsCollector is now an abstract class with two
implementations: StandardFacetsCollector (the old version of
FacetsCollector) and CountingFacetsCollector. FacetsCollector.create()
returns the most optimized collector for the given parameters.
<br /><span class="attrib">(Shai Erera, Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4700">LUCENE-4700</a>: OrdinalPolicy is now per CategoryListParams, and is no longer
an interface, but rather an enum with values NO_PARENTS and ALL_PARENTS.
PathPolicy was removed, you should extend FacetFields and DrillDownStream
to control which categories are added as drill-down terms.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4547">LUCENE-4547</a>: DocValues improvements:
<ul class="bulleted-list">
<li class="bulleted-list">
Simplified codec API: codecs are now only responsible for encoding and
  decoding docvalues, they do not need to do buffering or RAM accounting.
</li>
<li class="bulleted-list">
Per-Field support: added PerFieldDocValuesFormat, which allows you to
  use a different DocValuesFormat per field (like postings).
</li>
<li class="bulleted-list">
Unified with FieldCache api: DocValues can be accessed via FieldCache API,
  so it works automatically with grouping/join/sort/function queries, etc.
</li>
<li class="bulleted-list">
Simplified types: There are only 3 types (NUMERIC, BINARY, SORTED), so its
  not necessary to specify for example that all of your binary values have
  the same length. Instead its easy for the Codec API to optimize encoding
  based on any properties of the content.
</li>
</ul>
<span class="attrib">(Simon Willnauer, Adrien Grand, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4757">LUCENE-4757</a>: Cleanup and refactoring of FacetsAccumulator, FacetRequest,
FacetsAggregator and FacetResultsHandler API. If your application did
FacetsCollector.create(), you should not be affected, but if you wrote
an Aggregator, then you should migrate it to the per-segment
FacetsAggregator. You can still use StandardFacetsAccumulator, which works
with the old API (for now).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4761">LUCENE-4761</a>: Facet packages reorganized. Should be easy to fix your import
statements, if you use an IDE such as Eclipse.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4750">LUCENE-4750</a>: Convert DrillDown to DrillDownQuery, so you can initialize it
and add drill-down categories to it.
<br /><span class="attrib">(Michael McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4759">LUCENE-4759</a>: remove FacetRequest.SortBy; result categories are always
sorted by value, while ties are broken by category ordinal.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4772">LUCENE-4772</a>: Facet associations moved to new FacetsAggregator API. You
should override FacetsAccumualtor and return the relevant aggregator,
for aggregating the association values.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4748">LUCENE-4748</a>: A FacetRequest on a non-existent field now returns an
empty FacetResult instead of skipping it.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4806">LUCENE-4806</a>: The default category delimiter character was changed
from U+F749 to U+001F, since the latter uses 1 byte vs 3 bytes for
the former.  Existing facet indices must be reindexed.
<br /><span class="attrib">(Robert
Muir, Shai Erera, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.2.0.optimizations" href="javascript:toggleList('v4.2.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v4.2.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4687">LUCENE-4687</a>: BloomFilterPostingsFormat now lazily initializes delegate
TermsEnum only if needed to do a seek or get a DocsEnum.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4677">LUCENE-4677</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4682">LUCENE-4682</a>: unpacked FSTs now use vInt to encode the node target,
to reduce their size
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4678">LUCENE-4678</a>: FST now uses a paged byte[] structure instead of a
single byte[] internally, to avoid large memory spikes during
building
<br /><span class="attrib">(James Dyer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3298">LUCENE-3298</a>: FST can now be larger than 2.1 GB / 2.1 B nodes.
<br /><span class="attrib">(James Dyer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4690">LUCENE-4690</a>: Performance improvements and non-hashing versions
of NumericUtils.*ToPrefixCoded()
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4715">LUCENE-4715</a>: CategoryListParams.getOrdinalPolicy now allows to return a
different OrdinalPolicy per dimension, to better tune how you index
facets. Also added OrdinalPolicy.ALL_BUT_DIMENSION.
<br /><span class="attrib">(Shai Erera, Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4740">LUCENE-4740</a>: Don't track clones of MMapIndexInput if unmapping
is disabled. This reduces GC overhead.
<br /><span class="attrib">(Kristofer Karlsson, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4733">LUCENE-4733</a>: The default Lucene 4.2 codec now uses a more compact
TermVectorsFormat (Lucene42TermVectorsFormat) based on
CompressingTermVectorsFormat.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3729">LUCENE-3729</a>: The default Lucene 4.2 codec now uses a more compact
DocValuesFormat (Lucene42DocValuesFormat). Sorted values are stored in an
FST, Numerics and Ordinals use a number of strategies (delta-compression,
table-compression, etc), and memory addresses use MonotonicBlockPackedWriter.
<br /><span class="attrib">(Simon Willnauer, Adrien Grand, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4792">LUCENE-4792</a>: Reduction of the memory required to build the doc ID maps used
when merging segments.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4794">LUCENE-4794</a>: Spatial RecursivePrefixTreeStrategy's search filter: Skip calls
to termsEnum.seek() when the next term is known to follow the current cell.
<br /><span class="attrib">(David Smiley)</span></li>
    </ol>
  </li>
  <li><a id="v4.2.0.new_features" href="javascript:toggleList('v4.2.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(16)
    <ol id="v4.2.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4686">LUCENE-4686</a>: New specialized DGapVInt8IntEncoder for facets (now the
default).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4703">LUCENE-4703</a>: Add simple PrintTaxonomyStats tool to see summary
information about the facets taxonomy index.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4599">LUCENE-4599</a>: New oal.codecs.compressing.CompressingTermVectorsFormat which
compresses term vectors into chunks of documents similarly to
CompressingStoredFieldsFormat.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4695">LUCENE-4695</a>: Added LiveFieldValues utility class, for getting the
current (live, real-time) value for any indexed doc/field.  The
class buffers recently indexed doc/field values until a new
near-real-time reader is opened that contains those changes.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4723">LUCENE-4723</a>: Add AnalyzerFactoryTask to benchmark, and enable analyzer
creation via the resulting factories using NewAnalyzerTask.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4728">LUCENE-4728</a>: Unknown and not explicitly mapped queries are now rewritten
against the highlighting IndexReader to obtain primitive queries before
discarding the query entirely. WeightedSpanTermExtractor now builds a
MemoryIndex only once even if multiple fields are highlighted.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4035">LUCENE-4035</a>: Added ICUCollationDocValuesField, more efficient
support for Locale-sensitive sort and range queries for
single-valued fields.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4547">LUCENE-4547</a>: Added MonotonicBlockPacked(Reader/Writer), which provide
efficient random access to large amounts of monotonically increasing
positive values (e.g. file offsets). Each block stores the minimum value
and the average gap, and values are encoded as signed deviations from
the expected value.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4547">LUCENE-4547</a>: Added AppendingLongBuffer, an append-only buffer that packs
signed long values in memory and provides an efficient iterator API.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4540">LUCENE-4540</a>: It is now possible for a codec to represent norms with
less than 8 bits per value. For performance reasons this is not done
by default, but you can customize your codec (e.g. pass PackedInts.DEFAULT
to Lucene42DocValuesConsumer) if you want to make this tradeoff.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4764">LUCENE-4764</a>: A new Facet42Codec and Facet42DocValuesFormat provide
faster but more RAM-consuming facet performance.
<br /><span class="attrib">(Shai Erera, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4769">LUCENE-4769</a>: Added OrdinalsCache and CachedOrdsCountingFacetsAggregator
which uses the cache to obtain a document's ordinals. This aggregator
is faster than others, however consumes much more RAM.
<br /><span class="attrib">(Michael McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4778">LUCENE-4778</a>: Add a getter for the delegate in RateLimitedDirectoryWrapper.
<br /><span class="attrib">(Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4765">LUCENE-4765</a>: Add a multi-valued docvalues type (SORTED_SET). This is equivalent
to building a FieldCache.getDocTermOrds at index-time.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4780">LUCENE-4780</a>: Add MonotonicAppendingLongBuffer: an append-only buffer for
monotonically increasing values.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4748">LUCENE-4748</a>: Added DrillSideways utility class for computing both
drill-down and drill-sideways counts for a DrillDownQuery.
<br /><span class="attrib">(Mike
McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.2.0.api_changes" href="javascript:toggleList('v4.2.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.2.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4709">LUCENE-4709</a>: FacetResultNode no longer has a residue field.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4716">LUCENE-4716</a>: DrillDown.query now takes Occur, allowing to specify if
categories should be OR'ed or AND'ed.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4695">LUCENE-4695</a>: ReferenceManager.RefreshListener.afterRefresh now takes
a boolean indicating whether a new reference was in fact opened, and
a new beforeRefresh method notifies you when a refresh attempt is
starting.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4794">LUCENE-4794</a>: Spatial RecursivePrefixTreeFilter replaced by
IntersectsPrefixTreeFilter and some extensible base classes.
<br /><span class="attrib">(David Smiley)</span></li>
    </ol>
  </li>
  <li><a id="v4.2.0.bug_fixes" href="javascript:toggleList('v4.2.0.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(17)
    <ol id="v4.2.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4705">LUCENE-4705</a>: Pass on FilterStrategy in FilteredQuery if the filtered query is
rewritten.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4712">LUCENE-4712</a>: MemoryIndex#normValues() throws NPE if field doesn't exist.
<br /><span class="attrib">(Simon Willnauer, Ricky Pritchett)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4550">LUCENE-4550</a>: Shapes wider than 180 degrees would use too much accuracy for the
PrefixTree based SpatialStrategy. For a pathological case of nearly 360
degrees and barely any height, it would generate so many indexed terms
(&gt; 500k) that it could even cause an OutOfMemoryError. Fixed.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4704">LUCENE-4704</a>: Make join queries override hashcode and equals methods.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4724">LUCENE-4724</a>: Fix bug in CategoryPath which allowed passing null or empty
string components. This is forbidden now (throws an exception). Note that if
you have a taxonomy index created with such strings, you should rebuild it.
<br /><span class="attrib">(Michael McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4732">LUCENE-4732</a>: Fixed TermsEnum.seekCeil/seekExact on term vectors.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4739">LUCENE-4739</a>: Fixed bugs that prevented FSTs more than ~1.1GB from
being saved and loaded
<br /><span class="attrib">(Adrien Grand, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4717">LUCENE-4717</a>: Fixed bug where Lucene40DocValuesFormat would sometimes write
an extra unused ordinal for sorted types. The bug is detected and corrected
on-the-fly for old indexes.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4547">LUCENE-4547</a>: Fixed bug where Lucene40DocValuesFormat was unable to encode
segments that would exceed 2GB total data. This could happen in some surprising
cases, for example if you had an index with more than 260M documents and a
VAR_INT field.
<br /><span class="attrib">(Simon Willnauer, Adrien Grand, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4775">LUCENE-4775</a>: Remove SegmentInfo.sizeInBytes() and make
MergePolicy.OneMerge.totalBytesSize thread safe
<br /><span class="attrib">(Josh Bronson via
Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4770">LUCENE-4770</a>: If spatial's TermQueryPrefixTreeStrategy was used to search
indexed non-point shapes, then there was an edge case where a query should
find a shape but it didn't. The fix is the removal of an optimization that
simplifies some leaf cells into a parent. The index data for such a field is
now ~20% larger. This optimization is still done for the query shape, and for
indexed data for RecursivePrefixTreeStrategy. Furthermore, this optimization
is enhanced to roll up beyond the bottom cell level.
<br /><span class="attrib">(David Smiley,
Florian Schilling)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4790">LUCENE-4790</a>: Fix FieldCacheImpl.getDocTermOrds to not bake deletes into the
cached datastructure. Otherwise this can cause inconsistencies with readers
at different points in time.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4791">LUCENE-4791</a>: A conjunction of terms (ConjunctionTermScorer) scanned on
the lowest frequency term instead of skipping, leading to potentially
large performance impacts for many non-random or non-uniform
term distributions.
<br /><span class="attrib">(John Wang, yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4798">LUCENE-4798</a>: PostingsHighlighter's formatter sometimes didn't highlight
matched terms.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4796">LUCENE-4796</a>, <a href="http://issues.apache.org/jira/browse/SOLR-4373">SOLR-4373</a>: Fix concurrency issue in NamedSPILoader and
AnalysisSPILoader when doing reload (e.g. from Solr).
<br /><span class="attrib">(Uwe Schindler, Hossman)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4802">LUCENE-4802</a>: Don't compute norms for drill-down facet fields.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4804">LUCENE-4804</a>: PostingsHighlighter sometimes applied terms to the wrong passage,
if they started exactly on a passage boundary.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.2.0.documentation" href="javascript:toggleList('v4.2.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.2.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4718">LUCENE-4718</a>: Fixed documentation of oal.queryparser.classic.
<br /><span class="attrib">(Hayden Muhl via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4784">LUCENE-4784</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4785">LUCENE-4785</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4786">LUCENE-4786</a>: Fixed references to deprecated classes
SinkTokenizer, ValueSourceQuery and RangeQuery.
<br /><span class="attrib">(Hao Zhong via Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.2.0.build" href="javascript:toggleList('v4.2.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.2.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4654">LUCENE-4654</a>: Test duration statistics from multiple test runs should be
reused.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4636">LUCENE-4636</a>: Upgrade ivy to 2.3.0
<br /><span class="attrib">(Shawn Heisey via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4570">LUCENE-4570</a>: Use the Policeman Forbidden API checker, released separately
from Lucene and downloaded via Ivy.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4758">LUCENE-4758</a>: 'ant jar', 'ant compile', and 'ant compile-test' should
recurse.
<br /><span class="attrib">(Steve Rowe)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.1.0" href="javascript:toggleList('v4.1.0')">Release 4.1.0  [2013-01-22]</a></h3>
<ul id="v4.1.0.list">
  <li><a id="v4.1.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.1.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(16)
    <ol id="v4.1.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4514">LUCENE-4514</a>: Scorer's freq() method returns an integer value indicating
the number of times the scorer matches the current document. Previously
this was only sometimes the case, in some cases it returned a (meaningless)
floating point value.  Scorer now extends DocsEnum so it has attributes().
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4543">LUCENE-4543</a>: TFIDFSimilarity's index-time computeNorm is now final to
match the fact that its query-time norm usage requires a FIXED_8 encoding.
Override lengthNorm and/or encode/decodeNormValue to change the specifics,
like Lucene 3.x.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3441">LUCENE-3441</a>: The facet module now supports NRT. As a result, the following
changes were made:
<ul class="bulleted-list">
<li class="bulleted-list">
DirectoryTaxonomyReader has a new constructor which takes a
  DirectoryTaxonomyWriter. You should use that constructor in order to get
  the NRT support (or the old one for non-NRT).
</li>
<li class="bulleted-list">
TaxonomyReader.refresh() removed in exchange for TaxonomyReader.openIfChanged
  static method. Similar to DirectoryReader, the method either returns null
  if no changes were made to the taxonomy, or a new TR instance otherwise.
  Instead of calling refresh(), you should write similar code to how you reopen
  a regular DirectoryReader.
</li>
<li class="bulleted-list">
TaxonomyReader.openIfChanged (previously refresh()) no longer throws
  InconsistentTaxonomyException, and supports recreate. InconsistentTaxoEx
  was removed.
</li>
<li class="bulleted-list">
ChildrenArrays was pulled out of TaxonomyReader into a top-level class.
</li>
<li class="bulleted-list">
TaxonomyReader was made an abstract class (instead of an interface), with
  methods such as close() and reference counting management pulled from
  DirectoryTaxonomyReader, and made final. The rest of the methods, remained
  abstract.
</li>
</ul>
<span class="attrib">(Shai Erera, Gilad Barkai)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4576">LUCENE-4576</a>: Remove CachingWrapperFilter(Filter, boolean). This recacheDeletes
option gave less than 1% speedup at the expense of cache churn (filters were
invalidated on reopen if even a single delete was posted against the segment).
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4575">LUCENE-4575</a>: Replace IndexWriter's commit/prepareCommit versions that take
commitData with setCommitData(). That allows committing changes to IndexWriter
even if the commitData is the only thing that changes.
<br /><span class="attrib">(Shai Erera, Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4565">LUCENE-4565</a>: TaxonomyReader.getParentArray and .getChildrenArrays consolidated
into one getParallelTaxonomyArrays(). You can obtain the 3 arrays that the
previous two methods returned by calling parents(), children() or siblings()
on the returned ParallelTaxonomyArrays.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4585">LUCENE-4585</a>: Spatial PrefixTree based Strategies (either TermQuery or
RecursivePrefix based) MAY want to re-index if used for point data. If a
re-index is not done, then an indexed point is ~1/2 the smallest grid cell
larger and as such is slightly more likely to match a query shape.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4604">LUCENE-4604</a>: DefaultOrdinalPolicy removed in favor of OrdinalPolicy.ALL_PARENTS.
Same for DefaultPathPolicy (now PathPolicy.ALL_CATEGORIES). In addition, you
can use OrdinalPolicy.NO_PARENTS to never write any parent category ordinal
to the fulltree posting payload (but note that you need a special
FacetsAccumulator - see javadocs).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4594">LUCENE-4594</a>: Spatial PrefixTreeStrategy no longer indexes center points of
non-point shapes.  If you want to call makeDistanceValueSource() based on
shape centers, you need to do this yourself in another spatial field.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4615">LUCENE-4615</a>: Replace IntArrayAllocator and FloatArrayAllocator by ArraysPool.
FacetArrays no longer takes those allocators; if you need to reuse the arrays,
you should use ReusingFacetArrays.
<br /><span class="attrib">(Shai Erera, Gilad Barkai)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4621">LUCENE-4621</a>: FacetIndexingParams is now a concrete class (instead of DefaultFIP).
Also, the entire IndexingParams chain is now immutable. If you need to override
a setting, you should extend the relevant class.
Additionally, FacetSearchParams is now immutable, and requires all FacetRequests
to specified at initialization time.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4647">LUCENE-4647</a>: CategoryDocumentBuilder and EnhancementsDocumentBuilder are replaced
by FacetFields and AssociationsFacetFields respectively. CategoryEnhancement and
AssociationEnhancement were removed in favor of a simplified CategoryAssociation
interface, with CategoryIntAssociation and CategoryFloatAssociation
implementations.
NOTE: indexes that contain category enhancements/associations are not supported
by the new code and should be recreated.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4659">LUCENE-4659</a>: Massive cleanup to CategoryPath API. Additionally, CategoryPath is
now immutable, so you don't need to clone() it.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4670">LUCENE-4670</a>: StoredFieldsWriter and TermVectorsWriter have new finish* callbacks
which are called after a doc/field/term has been completely added.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4620">LUCENE-4620</a>: IntEncoder/Decoder were changed to do bulk encoding/decoding. As a
result, few other classes such as Aggregator and CategoryListIterator were
changed to handle bulk category ordinals.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4683">LUCENE-4683</a>: CategoryListIterator and Aggregator are now per-segment. As such
their implementations no longer take a top-level IndexReader in the constructor
but rather implement a setNextReader.
<br /><span class="attrib">(Shai Erera)</span></li>
    </ol>
  </li>
  <li><a id="v4.1.0.new_features" href="javascript:toggleList('v4.1.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v4.1.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4226">LUCENE-4226</a>: New experimental StoredFieldsFormat that compresses chunks of
documents together in order to improve the compression ratio.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4426">LUCENE-4426</a>: New ValueSource implementations (in lucene/queries) for
DocValues fields.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4410">LUCENE-4410</a>: FilteredQuery now exposes a FilterStrategy that exposes
how filters are applied during query execution.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4404">LUCENE-4404</a>: New ListOfOutputs (in lucene/misc) for FSTs wraps
another Outputs implementation, allowing you to store more than one
output for a single input.  UpToTwoPositiveIntsOutputs was moved
from lucene/core to lucene/misc.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3842">LUCENE-3842</a>: New AnalyzingSuggester, for doing auto-suggest
using an analyzer.  This can create powerful suggesters: if the analyzer
remove stop words then "ghost chr..." could suggest "The Ghost of
Christmas Past"; if SynonymFilter is used to map wifi and wireless
network to hotspot, then "wirele..." could suggest "wifi router";
token normalization likes stemmers, accent removal, etc. would allow
the suggester to ignore such variations.
<br /><span class="attrib">(Robert Muir, Sudarshan
Gaikaiwari, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4446">LUCENE-4446</a>: Lucene 4.1 has a new default index format (Lucene41Codec)
that incorporates the previously experimental "Block" postings format
for better search performance.
<br /><span class="attrib">(Han Jiang, Adrien Grand, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3846">LUCENE-3846</a>: New FuzzySuggester, like AnalyzingSuggester except it
also finds completions allowing for fuzzy edits in the input string.
<br /><span class="attrib">(Robert Muir, Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4515">LUCENE-4515</a>: MemoryIndex now supports adding the same field multiple
times.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4489">LUCENE-4489</a>: Added consumeAllTokens option to LimitTokenCountFilter
<br /><span class="attrib">(hossman, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4566">LUCENE-4566</a>: Add NRT/SearcherManager.RefreshListener/addListener to
be notified whenever a new searcher was opened.
<br /><span class="attrib">(selckin via Shai
Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-4123">SOLR-4123</a>: Add per-script customizability to ICUTokenizerFactory via
rule files in the ICU RuleBasedBreakIterator format.
<br /><span class="attrib">(Shawn Heisey, Robert Muir, Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4590">LUCENE-4590</a>: Added WriteEnwikiLineDocTask - a benchmark task for writing
Wikipedia category pages and non-category pages into separate line files.
extractWikipedia.alg was changed to use this task, so now it creates two
files.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4290">LUCENE-4290</a>: Added PostingsHighlighter to the highlighter module. It uses
offsets from the postings lists to highlight documents.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4628">LUCENE-4628</a>: Added CommonTermsQuery that executes high-frequency terms
in a optional sub-query to prevent slow queries due to "common" terms
like stopwords.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
  <li><a id="v4.1.0.api_changes" href="javascript:toggleList('v4.1.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v4.1.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4399">LUCENE-4399</a>: Deprecated AppendingCodec. Lucene's term dictionaries
no longer seek when writing.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4479">LUCENE-4479</a>: Rename TokenStream.getTokenStream(IndexReader, int, String)
to TokenStream.getTokenStreamWithOffsets, and return null on failure
rather than throwing IllegalArgumentException.
<br /><span class="attrib">(Alan Woodward)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4472">LUCENE-4472</a>: MergePolicy now accepts a MergeTrigger that provides
information about the trigger of the merge ie. merge triggered due
to a segment merge or a full flush etc.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4415">LUCENE-4415</a>: TermsFilter is now immutable. All terms need to be provided
as constructor argument.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4520">LUCENE-4520</a>: ValueSource.getSortField no longer throws IOExceptions
<br /><span class="attrib">(Alan Woodward)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4537">LUCENE-4537</a>: RateLimiter is now separated from FSDirectory and exposed via
RateLimitingDirectoryWrapper. Any Directory can now be rate-limited.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4591">LUCENE-4591</a>: CompressingStoredFields{Writer,Reader} now accept a segment
suffix as a constructor parameter.
<br /><span class="attrib">(Renaud Delbru via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4605">LUCENE-4605</a>: Added DocsEnum.FLAG_NONE which can be passed instead of 0 as
the flag to .docs() and .docsAndPositions().
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4617">LUCENE-4617</a>: Remove FST.pack() method. Previously to make a packed FST,
you had to make a Builder with willPackFST=true (telling it you will later pack it),
create your fst with finish(), and then call pack() to get another FST.
Instead just pass true for doPackFST to Builder and finish() returns a packed FST.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4663">LUCENE-4663</a>: Deprecate IndexSearcher.document(int, Set). This was not intended
to be final, nor named document(). Use IndexSearcher.doc(int, Set) instead.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4684">LUCENE-4684</a>: Made DirectSpellChecker extendable.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
    </ol>
  </li>
  <li><a id="v4.1.0.bug_fixes" href="javascript:toggleList('v4.1.0.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(31)
    <ol id="v4.1.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1822">LUCENE-1822</a>: BaseFragListBuilder hard-coded 6 char margin is too naive.
<br /><span class="attrib">(Alex Vigdor, Arcadius Ahouansou, Koji Sekiguchi)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4468">LUCENE-4468</a>: Fix rareish integer overflows in Lucene41 postings
format.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4486">LUCENE-4486</a>: Add support for ConstantScoreQuery in Highlighter.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4485">LUCENE-4485</a>: When CheckIndex terms, terms/docs pairs and tokens,
these counts now all exclude deleted documents.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4479">LUCENE-4479</a>: Highlighter works correctly for fields with term vector
positions, but no offsets.
<br /><span class="attrib">(Alan Woodward)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-3906">SOLR-3906</a>: JapaneseReadingFormFilter in romaji mode will return
romaji even for out-of-vocabulary kana cases (e.g. half-width forms).
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4511">LUCENE-4511</a>: TermsFilter might return wrong results if a field is not
indexed or doesn't exist in the index.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4521">LUCENE-4521</a>: IndexWriter.tryDeleteDocument could return true
(successfully deleting the document) but then on IndexWriter
close/commit fail to write the new deletions, if no other changes
happened in the IndexWriter instance.
<br /><span class="attrib">(Ivan Vasilev via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4513">LUCENE-4513</a>: Fixed that deleted nested docs are scored into the
parent doc when using ToParentBlockJoinQuery.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4534">LUCENE-4534</a>: Fixed WFSTCompletionLookup and Analyzing/FuzzySuggester
to allow 0 byte values in the lookup keys.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4532">LUCENE-4532</a>: DirectoryTaxonomyWriter use a timestamp to denote taxonomy
index re-creation, which could cause a bug in case machine clocks were
not synced. Instead, it now tracks an 'epoch' version, which is incremented
whenever the taxonomy is re-created, or replaced.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4544">LUCENE-4544</a>: Fixed off-by-1 in ConcurrentMergeScheduler that would
allow 1+maxMergeCount merges threads to be created, instead of just
maxMergeCount
<br /><span class="attrib">(Radim Kolar, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4567">LUCENE-4567</a>: Fixed NullPointerException in analyzing, fuzzy, and
WFST suggesters when no suggestions were added
<br /><span class="attrib">(selckin via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4568">LUCENE-4568</a>: Fixed integer overflow in
PagedBytes.PagedBytesData{In,Out}put.getPosition.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4581">LUCENE-4581</a>: GroupingSearch.setAllGroups(true) was failing to
actually compute allMatchingGroups
<br /><span class="attrib">(dizh@neusoft.com via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4009">LUCENE-4009</a>: Improve TermsFilter.toString
<br /><span class="attrib">(Tim Costermans via Chris
Male, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4588">LUCENE-4588</a>: Benchmark's EnwikiContentSource was discarding last wiki
document and had leaking threads in 'forever' mode.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4585">LUCENE-4585</a>: Spatial RecursivePrefixTreeFilter had some bugs that only
occurred when shapes were indexed.  In what appears to be rare circumstances,
documents with shapes near a query shape were erroneously considered a match.
In addition, it wasn't possible to index a shape representing the entire
globe.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4595">LUCENE-4595</a>: EnwikiContentSource had a thread safety problem (NPE) in
'forever' mode
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4587">LUCENE-4587</a>: fix WordBreakSpellChecker to not throw AIOOBE when presented
with 2-char codepoints, and to correctly break/combine terms containing
non-latin characters.
<br /><span class="attrib">(James Dyer, Andreas Hubold)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4596">LUCENE-4596</a>: fix a concurrency bug in DirectoryTaxonomyWriter.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4594">LUCENE-4594</a>: Spatial PrefixTreeStrategy would index center-points in addition
to the shape to index if it was non-point, in the same field.  But sometimes
the center-point isn't actually in the shape (consider a LineString), and for
highly precise shapes it could cause makeDistanceValueSource's cache to load
parts of the shape's boundary erroneously too.  So center points aren't
indexed any more; you should use another spatial field.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4629">LUCENE-4629</a>: IndexWriter misses to delete documents if a document block is
indexed and the Iterator throws an exception. Documents were only rolled back
if the actual indexing process failed.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4608">LUCENE-4608</a>: Handle large number of requested fragments better.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4633">LUCENE-4633</a>: DirectoryTaxonomyWriter.replaceTaxonomy did not refresh its
internal reader, which could cause an existing category to be added twice.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4461">LUCENE-4461</a>: If you added the same FacetRequest more than once, you would get
inconsistent results.
<br /><span class="attrib">(Gilad Barkai via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4656">LUCENE-4656</a>: Fix regression in IndexWriter to work with empty TokenStreams
that have no TermToBytesRefAttribute (commonly provided by CharTermAttribute),
e.g., oal.analysis.miscellaneous.EmptyTokenStream.
<br /><span class="attrib">(Uwe Schindler, Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4660">LUCENE-4660</a>: ConcurrentMergeScheduler was taking too long to
un-pause incoming threads it had paused when too many merges were
queued up.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4662">LUCENE-4662</a>: Add missing elided articles and prepositions to FrenchAnalyzer's
DEFAULT_ARTICLES list passed to ElisionFilter.
<br /><span class="attrib">(David Leunen via Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4671">LUCENE-4671</a>: Fix CharsRef.subSequence method.
<br /><span class="attrib">(Tim Smith via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4465">LUCENE-4465</a>: Let ConstantScoreQuery's Scorer return its child scorer.
<br /><span class="attrib">(selckin via Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.1.0.changes_in_runtime_behavior" href="javascript:toggleList('v4.1.0.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.1.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4586">LUCENE-4586</a>: Change default ResultMode of FacetRequest to PER_NODE_IN_TREE.
This only affects requests with depth&gt;1. If you execute such requests and
rely on the facet results being returned flat (i.e. no hierarchy), you should
set the ResultMode to GLOBAL_FLAT.
<br /><span class="attrib">(Shai Erera, Gilad Barkai)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1822">LUCENE-1822</a>: Improves the text window selection by recalculating the starting margin
once all phrases in the fragment have been identified in FastVectorHighlighter. This
way if a single word is matched in a fragment, it will appear in the middle of the highlight,
instead of 6 characters from the beginning. This way one can also guarantee that
the entirety of short texts are represented in a fragment by specifying a large
enough fragCharSize.
<p/>
</li>
    </ol>
  </li>
  <li><a id="v4.1.0.optimizations" href="javascript:toggleList('v4.1.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(16)
    <ol id="v4.1.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2221">LUCENE-2221</a>: oal.util.BitUtil was modified to use Long.bitCount and
Long.numberOfTrailingZeros (which are intrinsics since Java 6u18) instead of
pure java bit twiddling routines in order to improve performance on modern
JVMs/hardware.
<br /><span class="attrib">(Dawid Weiss, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4509">LUCENE-4509</a>: Enable stored fields compression by default in the Lucene 4.1
default codec.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4536">LUCENE-4536</a>: PackedInts on-disk format is now byte-aligned (it used to be
long-aligned), saving up to 7 bytes per array of values.
<br /><span class="attrib">(Adrien Grand, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4512">LUCENE-4512</a>: Additional memory savings for CompressingStoredFieldsFormat.
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4443">LUCENE-4443</a>: Lucene41PostingsFormat no longer writes unnecessary offsets
into the skipdata.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4459">LUCENE-4459</a>: Improve WeakIdentityMap.keyIterator() to remove GCed keys
from backing map early instead of waiting for reap(). This makes test
failures in TestWeakIdentityMap disappear, too.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4473">LUCENE-4473</a>: Lucene41PostingsFormat encodes offsets more efficiently
for low frequency terms (&lt; 128 occurrences).
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4462">LUCENE-4462</a>: DocumentsWriter now flushes deletes, segment infos and builds
CFS files if necessary during segment flush and not during publishing. The latter
was a single threaded process while now all IO and CPU heavy computation is done
concurrently in DocumentsWriterPerThread.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4496">LUCENE-4496</a>: Optimize Lucene41PostingsFormat when requesting a subset of
the postings data (via flags to TermsEnum.docs/docsAndPositions) to use
ForUtil.skipBlock.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4497">LUCENE-4497</a>: Don't write PosVIntCount to the positions file in
Lucene41PostingsFormat, as its always totalTermFreq % BLOCK_SIZE.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4498">LUCENE-4498</a>: In Lucene41PostingsFormat, when a term appears in only one document,
Instead of writing a file pointer to a VIntBlock containing the doc id, just
write the doc id.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4515">LUCENE-4515</a>: MemoryIndex now uses Byte/IntBlockPool internally to hold terms and
posting lists. All index data is represented as consecutive byte/int arrays to
reduce GC cost and memory overhead.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4538">LUCENE-4538</a>: DocValues now caches direct sources in a ThreadLocal exposed via SourceCache.
Users of this API can now simply obtain an instance via DocValues#getDirectSource per thread.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4580">LUCENE-4580</a>: DrillDown.query variants return a ConstantScoreQuery with boost set to 0.0f
so that documents scores are not affected by running a drill-down query.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4598">LUCENE-4598</a>: PayloadIterator no longer uses top-level IndexReader to iterate on the
posting's payload.
<br /><span class="attrib">(Shai Erera, Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4661">LUCENE-4661</a>: Drop default maxThreadCount to 1 and maxMergeCount to 2
in ConcurrentMergeScheduler, for faster merge performance on
spinning-magnet drives
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.1.0.documentation" href="javascript:toggleList('v4.1.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.1.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4483">LUCENE-4483</a>: Refer to BytesRef.deepCopyOf in Term's constructor that takes BytesRef.
<br /><span class="attrib">(Paul Elschot via Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.1.0.build" href="javascript:toggleList('v4.1.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v4.1.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4650">LUCENE-4650</a>: Upgrade randomized testing to version 2.0.8: make the
test framework more robust under low memory conditions.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4603">LUCENE-4603</a>: Upgrade randomized testing to version 2.0.5: print forked
JVM PIDs on heartbeat from hung tests
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li>Upgrade randomized testing to version 2.0.4: avoid hangs on shutdown
hooks hanging forever by calling Runtime.halt() in addition to
Runtime.exit() after a short delay to allow graceful shutdown
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4451">LUCENE-4451</a>: Memory leak per unique thread caused by
RandomizedContext.contexts static map. Upgrade randomized testing
to version 2.0.2
<br /><span class="attrib">(Mike McCandless, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4589">LUCENE-4589</a>: Upgraded benchmark module's Nekohtml dependency to version
1.9.17, removing the workaround in Lucene's HTML parser for the
Turkish locale.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4601">LUCENE-4601</a>: Fix ivy availability check to use typefound, so it works
if called from another build file.
<br /><span class="attrib">(Ryan Ernst via Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.0.0" href="javascript:toggleList('v4.0.0')">Release 4.0.0  [2012-10-12]</a></h3>
<ul id="v4.0.0.list">
  <li><a id="v4.0.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.0.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.0.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4392">LUCENE-4392</a>: Class org.apache.lucene.util.SortedVIntList has been removed.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4393">LUCENE-4393</a>: RollingCharBuffer has been moved to the o.a.l.analysis.util
package of lucene-analysis-common.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0.new_features" href="javascript:toggleList('v4.0.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v4.0.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1888">LUCENE-1888</a>: Added the option to store payloads in the term
vectors (IndexableFieldType.storeTermVectorPayloads()). Note
that you must store term vector positions to store payloads.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3892">LUCENE-3892</a>: Add a new BlockPostingsFormat that bulk-encodes docs,
freqs and positions in large (size 128) packed-int blocks for faster
search performance.  This was from Han Jiang's 2012 Google Summer of
Code project
<br /><span class="attrib">(Han Jiang, Adrien Grand, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4323">LUCENE-4323</a>: Added support for an absolute maximum CFS segment size
(in MiB) to LogMergePolicy and TieredMergePolicy.
<br /><span class="attrib">(Alexey Lef via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4339">LUCENE-4339</a>: Allow deletes against 3.x segments for easier upgrading.
Lucene3x Codec is still otherwise read-only, you should not set it
as the default Codec on IndexWriter, because it cannot write new segments.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-3441">SOLR-3441</a>: ElisionFilterFactory is now MultiTermAware
<br /><span class="attrib">(Jack Krupansky via hossman)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0.api_changes" href="javascript:toggleList('v4.0.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(15)
    <ol id="v4.0.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4391">LUCENE-4391</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4440">LUCENE-4440</a>: All methods of Lucene40Codec but
getPostingsFormatForField are now final. To reuse functionality
of Lucene40, you should extend FilterCodec and delegate to Lucene40
instead of extending Lucene40Codec.
<br /><span class="attrib">(Adrien Grand, Shai Erea,
Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4299">LUCENE-4299</a>: Added Terms.hasPositions() and Terms.hasOffsets().
Previously you had no real way to know that a term vector field
had positions or offsets, since this can be configured on a
per-field-per-document basis.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li>Removed DocsAndPositionsEnum.hasPayload() and simplified the
contract of getPayload(). It returns null if there is no payload,
otherwise returns the current payload. You can now call it multiple
times per position if you want.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li>Removed FieldsEnum. Fields API instead implements Iterable&lt;String&gt;
and exposes Iterator, so you can iterate over field names with
for (String field : fields) instead.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4152">LUCENE-4152</a>: added IndexReader.leaves(), which lets you enumerate
the leaf atomic reader contexts for all readers in the tree.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4304">LUCENE-4304</a>: removed PayloadProcessorProvider. If you want to change
payloads (or other things) when merging indexes, its recommended
to just use a FilterAtomicReader + IndexWriter.addIndexes. See the
OrdinalMappingAtomicReader and TaxonomyMergeUtils in the facets
module if you want an example of this.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Shai Erera, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4304">LUCENE-4304</a>: Make CompositeReader.getSequentialSubReaders()
protected. To get atomic leaves of any IndexReader use the new method
leaves() (<a href="http://issues.apache.org/jira/browse/LUCENE-4152">LUCENE-4152</a>), which lists AtomicReaderContexts including
the doc base of each leaf.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4307">LUCENE-4307</a>: Renamed IndexReader.getTopReaderContext to
IndexReader.getContext.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4316">LUCENE-4316</a>: Deprecate Fields.getUniqueTermCount and remove it from
AtomicReader. If you really want the unique term count across all
fields, just sum up Terms.size() across those fields. This method
only exists so that this statistic can be accessed for Lucene 3.x
segments, which don't support Terms.size().
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4321">LUCENE-4321</a>: Change CharFilter to extend Reader directly, as FilterReader
overdelegates (read(), read(char[], int, int), skip, etc). This made it
hard to implement CharFilters that were correct. Instead only close() is
delegated by default: read(char[], int, int) and correct(int) are abstract
so that its obvious which methods you should implement.  The protected
inner Reader is 'input' like CharFilter in the 3.x series, instead of 'in'.
<br /><span class="attrib">(Dawid Weiss, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3309">LUCENE-3309</a>: The expert FieldSelector API, used to load only certain
fields in a stored document, has been replaced with the simpler
StoredFieldVisitor API.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4343">LUCENE-4343</a>: Made Tokenizer.setReader final. This is a setter that should
not be overridden by subclasses: per-stream initialization should happen
in reset().
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4377">LUCENE-4377</a>: Remove IndexInput.copyBytes(IndexOutput, long).
Use DataOutput.copyBytes(DataInput, long) instead.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4355">LUCENE-4355</a>: Simplify AtomicReader's sugar methods such as termDocsEnum,
termPositionsEnum, docFreq, and totalTermFreq to only take Term as a
parameter. If you want to do expert things such as pass a different
Bits as liveDocs, then use the flex apis (fields(), terms(), etc) directly.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4425">LUCENE-4425</a>: clarify documentation of StoredFieldVisitor.binaryValue
and simplify the api to binaryField(FieldInfo, byte[]).
<br /><span class="attrib">(Adrien Grand, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0.bug_fixes" href="javascript:toggleList('v4.0.0.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(17)
    <ol id="v4.0.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4423">LUCENE-4423</a>: DocumentStoredFieldVisitor.binaryField ignored offset and
length.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4297">LUCENE-4297</a>: BooleanScorer2 would multiply the coord() factor
twice for conjunctions: for most users this is no problem, but
if you had a customized Similarity that returned something other
than 1 when overlap == maxOverlap (always the case for conjunctions),
then the score would be incorrect.
<br /><span class="attrib">(Pascal Chollet, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4298">LUCENE-4298</a>: MultiFields.getTermDocsEnum(IndexReader, Bits, String, BytesRef)
did not work at all, it would infinitely recurse.
<br /><span class="attrib">(Alberto Paro via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4300">LUCENE-4300</a>: BooleanQuery's rewrite was not always safe: if you
had a custom Similarity where coord(1,1) != 1F, then the rewritten
query would be scored differently.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li>Don't allow negatives in the positions file. If you have an index
from 2.4.0 or earlier with such negative positions, and you already
upgraded to 3.x, then to Lucene 4.0-ALPHA or -BETA, you should run
CheckIndex. If it fails, then you need to upgrade again to 4.0
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4303">LUCENE-4303</a>: PhoneticFilterFactory and SnowballPorterFilterFactory load their
encoders / stemmers via the ResourceLoader now instead of Class.forName().
Solr users should now no longer have to embed these in its war.
<br /><span class="attrib">(David Smiley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-3737">SOLR-3737</a>: StempelPolishStemFilterFactory loaded its stemmer table incorrectly.
Also, ensure immutability and use only one instance of this table in RAM (lazy
loaded) since its quite large.
<br /><span class="attrib">(sausarkar, Steven Rowe, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4310">LUCENE-4310</a>: MappingCharFilter was failing to match input strings
containing non-BMP Unicode characters.
<br /><span class="attrib">(Dawid Weiss, Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4224">LUCENE-4224</a>: Add in-order scorer to query time joining and the
out-of-order scorer throws an UOE.
<br /><span class="attrib">(Martijn van Groningen, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4333">LUCENE-4333</a>: Fixed NPE in TermGroupFacetCollector when faceting on mv fields.
<br /><span class="attrib">(Jesse MacVicar, Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4218">LUCENE-4218</a>: Document.get(String) and Field.stringValue() again return
values for numeric fields, like Lucene 3.x and consistent with the documentation.
<br /><span class="attrib">(Jamie, Uwe Schindler, Robert Muir)</span></li>
      <li>NRTCachingDirectory was always caching a newly flushed segment in
RAM, instead of checking the estimated size of the segment
to decide whether to cache it.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3720">LUCENE-3720</a>: fix memory-consumption issues with BeiderMorseFilter.
<br /><span class="attrib">(Thomas Neidhart via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4401">LUCENE-4401</a>: Fix bug where DisjunctionSumScorer would sometimes call score()
on a subscorer that had already returned NO_MORE_DOCS.
<br /><span class="attrib">(Liu Chao, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4411">LUCENE-4411</a>: when sampling is enabled for a FacetRequest, its depth
parameter is reset to the default (1), even if set otherwise.
<br /><span class="attrib">(Gilad Barkai via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4455">LUCENE-4455</a>: Fix bug in SegmentInfoPerCommit.sizeInBytes() that was
returning 2X the true size, inefficiently.  Also fixed bug in
CheckIndex that would report no deletions when a segment has
deletions, and vice/versa.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4456">LUCENE-4456</a>: Fixed double-counting sizeInBytes for a segment
(affects how merge policies pick merges); fixed CheckIndex's
incorrect reporting of whether a segment has deletions; fixed case
where on abort Lucene could remove files it didn't create; fixed
many cases where IndexWriter could leave leftover files (on
exception in various places, on reuse of a segment name after crash
and recovery.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0.optimizations" href="javascript:toggleList('v4.0.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v4.0.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4322">LUCENE-4322</a>: Decrease lucene-core JAR size. The core JAR size had increased a
lot because of generated code introduced in <a href="http://issues.apache.org/jira/browse/LUCENE-4161">LUCENE-4161</a> and <a href="http://issues.apache.org/jira/browse/LUCENE-3892">LUCENE-3892</a>.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4317">LUCENE-4317</a>: Improve reuse of internal TokenStreams and StringReader
in oal.document.Field.
<br /><span class="attrib">(Uwe Schindler, Chris Male, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4327">LUCENE-4327</a>: Support out-of-order scoring in FilteredQuery for higher
performance.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4364">LUCENE-4364</a>: Optimize MMapDirectory to not make a mapping per-cfs-slice,
instead one map per .cfs file. This reduces the total number of maps.
Additionally factor out a (package-private) generic
ByteBufferIndexInput from MMapDirectory.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0.build" href="javascript:toggleList('v4.0.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v4.0.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4406">LUCENE-4406</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4407">LUCENE-4407</a>: Upgrade to randomizedtesting 2.0.1.
Workaround for broken test output XMLs due to non-XML text unicode
chars in strings. Added printing of failed tests at the end of a
test run
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4252">LUCENE-4252</a>: Detect/Fail tests when they leak RAM in static fields
<br /><span class="attrib">(Robert Muir, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4360">LUCENE-4360</a>: Support running the same test suite multiple times in
parallel
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3985">LUCENE-3985</a>: Upgrade to randomizedtesting 2.0.0. Added support for
thread leak detection. Added support for suite timeouts.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4354">LUCENE-4354</a>: Corrected maven dependencies to be consistent with
the licenses/ folder and the binary release. Some had different
versions or additional unnecessary dependencies.
<br /><span class="attrib">(selckin via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4340">LUCENE-4340</a>: Move all non-default codec, postings format and terms
dictionary implementations to lucene/codecs.
<br /><span class="attrib">(Adrien Grand)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0.documentation" href="javascript:toggleList('v4.0.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.0.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4302">LUCENE-4302</a>: Fix facet userguide to have HTML loose doctype like
all other javadocs.
<br /><span class="attrib">(Karl Nicholas via Uwe Schindler)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.0.0-beta" href="javascript:toggleList('v4.0.0-beta')">Release 4.0.0-BETA  [2012-08-13]</a></h3>
<ul id="v4.0.0-beta.list">
  <li><a id="v4.0.0-beta.new_features" href="javascript:toggleList('v4.0.0-beta.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(10)
    <ol id="v4.0.0-beta.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4249">LUCENE-4249</a>: Changed the explanation of the PayloadTermWeight to use the
underlying PayloadFunction's explanation as the explanation
for the payload score.
<br /><span class="attrib">(Scott Smerchek via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4069">LUCENE-4069</a>: Added BloomFilteringPostingsFormat for use with low-frequency terms
such as primary keys
<br /><span class="attrib">(Mark Harwood, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4201">LUCENE-4201</a>: Added JapaneseIterationMarkCharFilter to normalize Japanese
iteration marks.
<br /><span class="attrib">(Robert Muir, Christian Moen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3832">LUCENE-3832</a>: Added BasicAutomata.makeStringUnion method to efficiently
create automata from a fixed collection of UTF-8 encoded BytesRef
<br /><span class="attrib">(Dawid Weiss, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4153">LUCENE-4153</a>: Added option to fast vector highlighting via BaseFragmentsBuilder to
respect field boundaries in the case of highlighting for multivalued fields.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4227">LUCENE-4227</a>: Added DirectPostingsFormat, to hold all postings in
memory as uncompressed simple arrays.  This uses a tremendous amount
of RAM but gives good search performance gains.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2510">LUCENE-2510</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4044">LUCENE-4044</a>: Migrated Solr's Tokenizer-, TokenFilter-, and
CharFilterFactories to the lucene-analysis module. The API is still
experimental.
<br /><span class="attrib">(Chris Male, Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4230">LUCENE-4230</a>: When pulling a DocsAndPositionsEnum you can now
specify whether or not you require payloads (in addition to
offsets); turning one or both off may allow some codec
implementations to optimize the enum implementation.
<br /><span class="attrib">(Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4203">LUCENE-4203</a>: Add IndexWriter.tryDeleteDocument(AtomicReader reader,
int docID), to attempt deletion by docID as long as the provided
reader is an NRT reader, and the segment has not yet been merged
away
<br /><span class="attrib">(Mike McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4286">LUCENE-4286</a>: Added option to CJKBigramFilter to always also output
unigrams. This can be used for a unigram+bigram approach, or at
index-time only for better support of short queries.
<br /><span class="attrib">(Tom Burton-West, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-beta.api_changes" href="javascript:toggleList('v4.0.0-beta.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v4.0.0-beta.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4138">LUCENE-4138</a>: update of morfologik (Polish morphological analyzer) to 1.5.3.
The tag attribute class has been renamed to MorphosyntacticTagsAttribute and
has a different API (carries a list of tags instead of a compound tag). Upgrade
of embedded morfologik dictionaries to version 1.9.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4178">LUCENE-4178</a>: set 'tokenized' to true on FieldType by default, so that if you
make a custom FieldType and set indexed = true, its analyzed by the analyzer.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4220">LUCENE-4220</a>: Removed the buggy JavaCC-based HTML parser in the benchmark
module and replaced by NekoHTML. HTMLParser interface was cleaned up while
changing method signatures.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2191">LUCENE-2191</a>: Rename Tokenizer.reset(Reader) to Tokenizer.setReader(Reader).
The purpose of this method was always to set a new Reader on the Tokenizer,
reusing the object. But the name was often confused with TokenStream.reset().
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4228">LUCENE-4228</a>: Refactored CharFilter to extend java.io.FilterReader. CharFilters
filter another reader and you override correct() for offset correction.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4240">LUCENE-4240</a>: Analyzer api now just takes fieldName for getOffsetGap. If the
field is not analyzed (e.g. StringField), then the analyzer is not invoked
at all. If you want to tweak things like positionIncrementGap and offsetGap,
analyze the field with KeywordTokenizer instead.
<br /><span class="attrib">(Grant Ingersoll, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4250">LUCENE-4250</a>: Pass fieldName to the PayloadFunction explain method, so it
parallels with docScore and the default implementation is correct.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3747">LUCENE-3747</a>: Support Unicode 6.1.0.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3884">LUCENE-3884</a>: Moved ElisionFilter out of org.apache.lucene.analysis.fr
package into org.apache.lucene.analysis.util.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4230">LUCENE-4230</a>: When pulling a DocsAndPositionsEnum you now pass an int
flags instead of the previous boolean needOffsets.  Currently
recognized flags are DocsAndPositionsEnum.FLAG_PAYLOADS and
DocsAndPositionsEnum.FLAG_OFFSETS
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4273">LUCENE-4273</a>: When pulling a DocsEnum, you can pass an int flags
instead of the previous boolean needsFlags; consistent with the changes
for DocsAndPositionsEnum in <a href="http://issues.apache.org/jira/browse/LUCENE-4230">LUCENE-4230</a>. Currently the only flag
is DocsEnum.FLAG_FREQS.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3616">LUCENE-3616</a>: TextField(String, Reader, Store) was reduced to TextField(String, Reader),
as the Store parameter didn't make sense: if you supplied Store.YES, you would only
receive an exception anyway.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-beta.optimizations" href="javascript:toggleList('v4.0.0-beta.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v4.0.0-beta.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4171">LUCENE-4171</a>: Performance improvements to Packed64.
<br /><span class="attrib">(Toke Eskildsen via Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4184">LUCENE-4184</a>: Performance improvements to the aligned packed bits impl.
<br /><span class="attrib">(Toke Eskildsen, Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4235">LUCENE-4235</a>: Remove enforcing of Filter rewrite for NRQ queries.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4279">LUCENE-4279</a>: Regenerated snowball Stemmers from snowball r554,
making them substantially more lightweight. Behavior is unchanged.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4291">LUCENE-4291</a>: Reduced internal buffer size for Jflex-based tokenizers
such as StandardTokenizer from 32kb to 8kb.
<br /><span class="attrib">(Raintung Li, Steven Rowe, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-beta.bug_fixes" href="javascript:toggleList('v4.0.0-beta.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(13)
    <ol id="v4.0.0-beta.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4109">LUCENE-4109</a>: BooleanQueries are not parsed correctly with the
flexible query parser.
<br /><span class="attrib">(Karsten Rauch via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4176">LUCENE-4176</a>: Fix AnalyzingQueryParser to analyze range endpoints as bytes,
so that it works correctly with Analyzers that produce binary non-UTF-8 terms
such as CollationAnalyzer.
<br /><span class="attrib">(Nattapong Sirilappanich via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4209">LUCENE-4209</a>: Fix FSTCompletionLookup to close its sorter, so that it won't
leave temp files behind in /tmp. Fix SortedTermFreqIteratorWrapper to not
leave temp files behind in /tmp on Windows. Fix Sort to not leave
temp files behind when /tmp is a separate volume.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4221">LUCENE-4221</a>: Fix overeager CheckIndex validation for term vector offsets.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4222">LUCENE-4222</a>: TieredMergePolicy.getFloorSegmentMB was returning the
size in bytes not MB
<br /><span class="attrib">(Chris Fuller via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3505">LUCENE-3505</a>: Fix bug (Lucene 4.0alpha only) where boolean conjunctions
were sometimes scored incorrectly. Conjunctions of only termqueries where
at least one term omitted term frequencies (IndexOptions.DOCS_ONLY) would
be scored as if all terms omitted term frequencies.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2686">LUCENE-2686</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3505">LUCENE-3505</a>: Fixed BooleanQuery scorers to return correct
freq().  Added support for scorer navigation API (Scorer.getChildren) to
all queries.  Made Scorer.freq() abstract.
<br /><span class="attrib">(Koji Sekiguchi, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4234">LUCENE-4234</a>: Exception when FacetsCollector is used with ScoreFacetRequest,
and the number of matching documents is too large.
<br /><span class="attrib">(Gilad Barkai via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4245">LUCENE-4245</a>: Make IndexWriter#close() and MergeScheduler#close()
non-interruptible.
<br /><span class="attrib">(Mark Miller, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4190">LUCENE-4190</a>: restrict allowed filenames that a codec may create to
the patterns recognized by IndexFileNames.  This also fixes
IndexWriter to only delete files matching this pattern from an index
directory, to reduce risk when the wrong index path is accidentally
passed to IndexWriter
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4277">LUCENE-4277</a>: Fix IndexWriter deadlock during rollback if flushable DWPT
instance are already checked out and queued up but not yet flushed.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4282">LUCENE-4282</a>: Automaton FuzzyQuery didn't always deliver all results.
<br /><span class="attrib">(Johannes Christen, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4289">LUCENE-4289</a>: Fix minor idf inconsistencies/inefficiencies in highlighter.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-beta.changes_in_runtime_behavior" href="javascript:toggleList('v4.0.0-beta.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v4.0.0-beta.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4109">LUCENE-4109</a>: Enable position increments in the flexible queryparser by default.
<br /><span class="attrib">(Karsten Rauch via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3616">LUCENE-3616</a>: Field throws exception if you try to set a boost on an
unindexed field or one that omits norms.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-beta.build" href="javascript:toggleList('v4.0.0-beta.build')">Build</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v4.0.0-beta.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4094">LUCENE-4094</a>: Support overriding file.encoding on forked test JVMs
(force via -Drandomized.file.encoding=XXX).
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4189">LUCENE-4189</a>: Test output should include timestamps (start/end for each
test/ suite). Added -Dtests.timestamps=[off by default].
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4110">LUCENE-4110</a>: Report long periods of forked jvm inactivity (hung tests/ suites).
Added -Dtests.heartbeat=[seconds] with the default of 60 seconds.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4160">LUCENE-4160</a>: Added a property to quit the tests after a given
number of failures has occurred. This is useful in combination
with -Dtests.iters=N (you can start N iterations and wait for M
failures, in particular M = 1). -Dtests.maxfailures=M. Alternatively,
specify -Dtests.failfast=true to skip all tests after the first failure.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4115">LUCENE-4115</a>: JAR resolution/ cleanup should be done automatically for ant
clean/ eclipse/ resolve
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4199">LUCENE-4199</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4202">LUCENE-4202</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4206">LUCENE-4206</a>: Add a new target "check-forbidden-apis"
that parses all generated .class files for use of APIs that use default
charset, default locale, or default timezone and fail build if violations
found. This ensures, that Lucene / Solr is independent on local configuration
options.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4217">LUCENE-4217</a>: Add the possibility to run tests with Atlassian Clover
loaded from IVY. A development License solely for Apache code was added in
the tools/ folder, but is not included in releases.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-beta.documentation" href="javascript:toggleList('v4.0.0-beta.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.0.0-beta.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4195">LUCENE-4195</a>: Added package documentation and examples for
org.apache.lucene.codecs
<br /><span class="attrib">(Alan Woodward via Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v4.0.0-alpha" href="javascript:toggleList('v4.0.0-alpha')">Release 4.0.0-ALPHA  [2012-07-03]</a></h3>
<ul id="v4.0.0-alpha.list">
      <li>More information about this release, including any errata related to the
release notes, upgrade instructions, or other changes may be found online at:
   <a href="https://wiki.apache.org/lucene-java/Lucene4.0">https://wiki.apache.org/lucene-java/Lucene4.0</a>
</li>
      <li>For "contrib" changes prior to 4.0, please see:
<a href="http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_3_6_0/lucene/contrib/CHANGES.txt">http://svn.apache.org/repos/asf/lucene/dev/tags/lucene_solr_3_6_0/lucene/contrib/CHANGES.txt</a>
</li>
  </li>
  <li><a id="v4.0.0-alpha.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v4.0.0-alpha.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(42)
    <ol id="v4.0.0-alpha.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1458">LUCENE-1458</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2111">LUCENE-2111</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2354">LUCENE-2354</a>: Changes from flexible indexing:
<ul class="bulleted-list">
<li class="bulleted-list">
On upgrading to 4.0, if you do not fully reindex your documents,
  Lucene will emulate the new flex API on top of the old index,
  incurring some performance cost (up to ~10% slowdown, typically).
  To prevent this slowdown, use oal.index.IndexUpgrader
  to upgrade your indexes to latest file format (<a href="http://issues.apache.org/jira/browse/LUCENE-3082">LUCENE-3082</a>).
</li>
<p/>
  Mixed flex/pre-flex indexes are perfectly fine -- the two
  emulation layers (flex API on pre-flex index, and pre-flex API on
  flex index) will remap the access as required.  So on upgrading to
  4.0 you can start indexing new documents into an existing index.
  To get optimal performance, use oal.index.IndexUpgrader
  to upgrade your indexes to latest file format (<a href="http://issues.apache.org/jira/browse/LUCENE-3082">LUCENE-3082</a>).
<p/>
<li class="bulleted-list">
The postings APIs (TermEnum, TermDocsEnum, TermPositionsEnum)
  have been removed in favor of the new flexible
  indexing (flex) APIs (Fields, FieldsEnum, Terms, TermsEnum,
  DocsEnum, DocsAndPositionsEnum). One big difference is that field
  and terms are now enumerated separately: a TermsEnum provides a
  BytesRef (wraps a byte[]) per term within a single field, not a
  Term.  Another is that when asking for a Docs/AndPositionsEnum, you
  now specify the skipDocs explicitly (typically this will be the
  deleted docs, but in general you can provide any Bits).
</li>
<p/>
<li class="bulleted-list">
The term vectors APIs (TermFreqVector, TermPositionVector,
  TermVectorMapper) have been removed in favor of the above
  flexible indexing APIs, presenting a single-document inverted
  index of the document from the term vectors.
</li>
<p/>
<li class="bulleted-list">
MultiReader ctor now throws IOException
</li>
<p/>
<li class="bulleted-list">
Directory.copy/Directory.copyTo now copies all files (not just
  index files), since what is and isn't and index file is now
  dependent on the codecs used.
</li>
<p/>
<li class="bulleted-list">
UnicodeUtil now uses BytesRef for UTF-8 output, and some method
  signatures have changed to CharSequence.  These are internal APIs
  and subject to change suddenly.
</li>
<p/>
<li class="bulleted-list">
Positional queries (PhraseQuery, *SpanQuery) will now throw an
  exception if use them on a field that omits positions during
  indexing (previously they silently returned no results).
</li>
<p/>
<li class="bulleted-list">
FieldCache.{Byte,Short,Int,Long,Float,Double}Parser's API has
  changed -- each parse method now takes a BytesRef instead of a
  String.  If you have an existing Parser, a simple way to fix it is
  invoke BytesRef.utf8ToString, and pass that String to your
  existing parser.  This will work, but performance would be better
  if you could fix your parser to instead operate directly on the
  byte[] in the BytesRef.
</li>
<p/>
<li class="bulleted-list">
The internal (experimental) API of NumericUtils changed completely
  from String to BytesRef. Client code should never use this class,
  so the change would normally not affect you. If you used some of
  the methods to inspect terms or create TermQueries out of
  prefix encoded terms, change to use BytesRef. Please note:
  Do not use TermQueries to search for single numeric terms.
  The recommended way is to create a corresponding NumericRangeQuery
  with upper and lower bound equal and included. TermQueries do not
  score correct, so the constant score mode of NRQ is the only
  correct way to handle single value queries.
</li>
<p/>
<li class="bulleted-list">
NumericTokenStream now works directly on byte[] terms. If you
  plug a TokenFilter on top of this stream, you will likely get
  an IllegalArgumentException, because the NTS does not support
  TermAttribute/CharTermAttribute. If you want to further filter
  or attach Payloads to NTS, use the new NumericTermAttribute.
</li>
</ul><span class="attrib">(Mike McCandless, Robert Muir, Uwe Schindler, Mark Miller, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2858">LUCENE-2858</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3733">LUCENE-3733</a>: IndexReader was refactored into abstract
AtomicReader, CompositeReader, and DirectoryReader. To open Directory-
based indexes use DirectoryReader.open(), the corresponding method in
IndexReader is now deprecated for easier migration. Only DirectoryReader
supports commits, versions, and reopening with openIfChanged(). Terms,
postings, docvalues, and norms can from now on only be retrieved using
AtomicReader; DirectoryReader and MultiReader extend CompositeReader,
only offering stored fields and access to the sub-readers (which may be
composite or atomic). SlowCompositeReaderWrapper (<a href="http://issues.apache.org/jira/browse/LUCENE-2597">LUCENE-2597</a>) can be
used to emulate atomic readers on top of composites.
Please review MIGRATE.txt for information how to migrate old code.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2265">LUCENE-2265</a>: FuzzyQuery and WildcardQuery now operate on Unicode codepoints,
not unicode code units. For example, a Wildcard "?" represents any unicode
character. Furthermore, the rest of the automaton package and RegexpQuery use
true Unicode codepoint representation.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2380">LUCENE-2380</a>: The String-based FieldCache methods (getStrings,
getStringIndex) have been replaced with BytesRef-based equivalents
(getTerms, getTermsIndex).  Also, the sort values (returned in
FieldDoc.fields) when sorting by SortField.STRING or
SortField.STRING_VAL are now BytesRef instances.  See MIGRATE.txt
for more details.
<br /><span class="attrib">(yonik, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2480">LUCENE-2480</a>: Though not a change in backwards compatibility policy, pre-3.0
indexes are no longer supported. You should upgrade to 3.x first, then run
optimize(), or reindex.
<br /><span class="attrib">(Shai Erera, Earwin Burrfoot)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2484">LUCENE-2484</a>: Removed deprecated TermAttribute. Use CharTermAttribute
and TermToBytesRefAttribute instead.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2600">LUCENE-2600</a>: Remove IndexReader.isDeleted in favor of
AtomicReader.getDeletedDocs().
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2667">LUCENE-2667</a>: FuzzyQuery's defaults have changed for more performant
behavior: the minimum similarity is 2 edit distances from the word,
and the priority queue size is 50. To support this, FuzzyQuery now allows
specifying unscaled edit distances (foobar~2). If your application depends
upon the old defaults of 0.5 (scaled) minimum similarity and Integer.MAX_VALUE
priority queue size, you can use FuzzyQuery(Term, float, int, int) to specify
those explicitly.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2674">LUCENE-2674</a>: MultiTermQuery.TermCollector.collect now accepts the
TermsEnum as well.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-588">LUCENE-588</a>: WildcardQuery and QueryParser now allows escaping with
the '\' character. Previously this was impossible (you could not escape */?,
for example).  If your code somehow depends on the old behavior, you will
need to change it (e.g. using "\\" to escape '\' itself).
<br /><span class="attrib">(Sunil Kamath, Terry Yang via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2837">LUCENE-2837</a>: Collapsed Searcher, Searchable into IndexSearcher;
removed contrib/remote and MultiSearcher (Mike McCandless); absorbed
ParallelMultiSearcher into IndexSearcher as an optional
ExecutorServiced passed to its ctor.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2908">LUCENE-2908</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4037">LUCENE-4037</a>: Removed serialization code from lucene classes.
It is recommended that you serialize user search needs at a higher level
in your application.
<br /><span class="attrib">(Robert Muir, Benson Margulies)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2831">LUCENE-2831</a>: Changed Weight#scorer, Weight#explain &amp; Filter#getDocIdSet to
operate on a AtomicReaderContext instead of directly on IndexReader to enable
searches to be aware of IndexSearcher's context.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2839">LUCENE-2839</a>: Scorer#score(Collector,int,int) is now public because it is
called from other classes and part of public API.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2865">LUCENE-2865</a>: Weight#scorer(AtomicReaderContext, boolean, boolean) now accepts
a ScorerContext struct instead of booleans.(Simon Willnauer)
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2882">LUCENE-2882</a>: Cut over SpanQuery#getSpans to AtomicReaderContext to enforce
per segment semantics on SpanQuery &amp; Spans.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2236">LUCENE-2236</a>: Similarity can now be configured on a per-field basis. See the
migration notes in MIGRATE.txt for more details.
<br /><span class="attrib">(Robert Muir, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2315">LUCENE-2315</a>: AttributeSource's methods for accessing attributes are now final,
else its easy to corrupt the internal states.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2814">LUCENE-2814</a>: The IndexWriter.flush method no longer takes "boolean
flushDocStores" argument, as we now always flush doc stores (index
files holding stored fields and term vectors) while flushing a
segment.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2548">LUCENE-2548</a>: Field names (eg in Term, FieldInfo) are no longer
interned.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2883">LUCENE-2883</a>: The contents of o.a.l.search.function has been consolidated into
the queries module and can be found at o.a.l.queries.function.  See
MIGRATE.txt for more information
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2392">LUCENE-2392</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3299">LUCENE-3299</a>: Decoupled vector space scoring from
Query/Weight/Scorer. If you extended Similarity directly before, you should
extend TFIDFSimilarity instead.  Similarity is now a lower-level API to
implement other scoring algorithms.  See MIGRATE.txt for more details.
<br /><span class="attrib">(David Nemeskey, Simon Willnauer, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3330">LUCENE-3330</a>: The expert visitor API in Scorer has been simplified and
extended to support arbitrary relationships. To navigate to a scorer's
children, call Scorer.getChildren().
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2308">LUCENE-2308</a>: Field is now instantiated with an instance of IndexableFieldType,
of which there is a core implementation FieldType.  Most properties
describing a Field have been moved to IndexableFieldType.  See MIGRATE.txt
for more details.
<br /><span class="attrib">(Nikola Tankovic, Mike McCandless, Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3396">LUCENE-3396</a>: ReusableAnalyzerBase.TokenStreamComponents.reset(Reader) now
returns void instead of boolean.  If a Component cannot be reset, it should
throw an Exception.
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3396">LUCENE-3396</a>: ReusableAnalyzerBase has been renamed to Analyzer.  All Analyzer
implementations must now use Analyzer.TokenStreamComponents, rather than
overriding .tokenStream() and .reusableTokenStream() (which are now final).
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3346">LUCENE-3346</a>: Analyzer.reusableTokenStream() has been renamed to tokenStream()
with the old tokenStream() method removed.  Consequently it is now mandatory
for all Analyzers to support reusability.
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3473">LUCENE-3473</a>: AtomicReader.getUniqueTermCount() no longer throws UOE when
it cannot be easily determined. Instead, it returns -1 to be consistent with
this behavior across other index statistics.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1536">LUCENE-1536</a>: The abstract FilteredDocIdSet.match() method is no longer
allowed to throw IOException. This change was required to make it conform
to the Bits interface. This method should never do I/O for performance reasons.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Robert Muir, Chris Male, Yonik Seeley,
Jason Rutherglen, Paul Elschot)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3559">LUCENE-3559</a>: The methods "docFreq" and "maxDoc" on IndexSearcher were removed,
as these are no longer used by the scoring system. See MIGRATE.txt for more
details.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3533">LUCENE-3533</a>: Removed SpanFilters, they created large lists of objects and
did not scale.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3606">LUCENE-3606</a>: IndexReader and subclasses were made read-only. It is no longer
possible to delete or undelete documents using IndexReader; you have to use
IndexWriter now. As deleting by internal Lucene docID is no longer possible,
this requires adding a unique identifier field to your index. Deleting/
relying upon Lucene docIDs is not recommended anyway, because they can
change. Consequently commit() was removed and DirectoryReader.open(),
openIfChanged() no longer take readOnly booleans or IndexDeletionPolicy
instances. Furthermore, IndexReader.setNorm() was removed. If you need
customized norm values, the recommended way to do this is by modifying
Similarity to use an external byte[] or one of the new DocValues
fields (<a href="http://issues.apache.org/jira/browse/LUCENE-3108">LUCENE-3108</a>). Alternatively, to dynamically change norms (boost
*and* length norm) at query time, wrap your AtomicReader using
FilterAtomicReader, overriding FilterAtomicReader.norms(). To persist the
changes on disk, copy the FilteredIndexReader to a new index using
IndexWriter.addIndexes().
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3640">LUCENE-3640</a>: Removed IndexSearcher.close(), because IndexSearcher no longer
takes a Directory and no longer "manages" IndexReaders, it is a no-op.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3684">LUCENE-3684</a>: Add offsets into DocsAndPositionsEnum, and a few
FieldInfo.IndexOption: DOCS_AND_POSITIONS_AND_OFFSETS.
<br /><span class="attrib">(Robert
Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2858">LUCENE-2858</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3770">LUCENE-3770</a>: FilterIndexReader was renamed to
FilterAtomicReader and now extends AtomicReader. If you want to filter
composite readers like DirectoryReader or MultiReader, filter their
atomic leaves and build a new CompositeReader (e.g. MultiReader) around
them.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3736">LUCENE-3736</a>: ParallelReader was split into ParallelAtomicReader
and ParallelCompositeReader. Lucene 3.x's ParallelReader is now
ParallelAtomicReader; but the new composite variant has improved performance
as it works on the atomic subreaders. It requires that all parallel
composite readers have the same subreader structure. If you cannot provide this,
you can use SlowCompositeReaderWrapper to make all parallel readers atomic
and use ParallelAtomicReader.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2000">LUCENE-2000</a>: clone() now returns covariant types where possible.
<br /><span class="attrib">(ryan)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3970">LUCENE-3970</a>: Rename Fields.getUniqueFieldCount -&gt; .size() and
Terms.getUniqueTermCount -&gt; .size().
<br /><span class="attrib">(Iulius Curt via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3514">LUCENE-3514</a>: IndexSearcher.setDefaultFieldSortScoring was removed
and replaced with per-search control via new expert search methods
that take two booleans indicating whether hit scores and max
score should be computed.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4055">LUCENE-4055</a>: You can't put foreign files into the index dir anymore.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3866">LUCENE-3866</a>: CompositeReader.getSequentialSubReaders() now returns
unmodifiable List&lt;? extends IndexReader&gt;. ReaderUtil.Gather was
removed, as IndexReaderContext.leaves() is now the preferred way
to access sub-readers.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4155">LUCENE-4155</a>: oal.util.ReaderUtil, TwoPhaseCommit, TwoPhaseCommitTool
classes were moved to oal.index package. oal.util.CodecUtil class was moved
to oal.codecs package. oal.util.DummyConcurrentLock was removed
(no longer used in Lucene 4.0).
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-alpha.changes_in_runtime_behavior" href="javascript:toggleList('v4.0.0-alpha.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v4.0.0-alpha.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2846">LUCENE-2846</a>: omitNorms now behaves like omitTermFrequencyAndPositions, if you
omitNorms(true) for field "a" for 1000 documents, but then add a document with
omitNorms(false) for field "a", all documents for field "a" will have no
norms.  Previously, Lucene would fill the first 1000 documents with
"fake norms" from Similarity.getDefault().
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2846">LUCENE-2846</a>: When some documents contain field "a", and others do not, the
documents that don't have the field get a norm byte value of 0. Previously,
Lucene would populate "fake norms" with Similarity.getDefault() for these
documents.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2720">LUCENE-2720</a>: IndexWriter throws IndexFormatTooOldException on open, rather
than later when e.g. a merge starts.
<br /><span class="attrib">(Shai Erera, Mike McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2881">LUCENE-2881</a>: FieldInfos is now tracked per segment.  Before it was tracked
per IndexWriter session, which resulted in FieldInfos that had the FieldInfo
properties from all previous segments combined. Field numbers are now tracked
globally across IndexWriter sessions and persisted into a _X.fnx file on
successful commit. The corresponding file format changes are backwards-
compatible.
<br /><span class="attrib">(Michael Busch, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2956">LUCENE-2956</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2573">LUCENE-2573</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2324">LUCENE-2324</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2555">LUCENE-2555</a>: Changes from
DocumentsWriterPerThread:
<ul class="bulleted-list">
<li class="bulleted-list">
IndexWriter now uses a DocumentsWriter per thread when indexing documents.
  Each DocumentsWriterPerThread indexes documents in its own private segment,
  and the in memory segments are no longer merged on flush.  Instead, each
  segment is separately flushed to disk and subsequently merged with normal
  segment merging.
</li>
<p/>
<li class="bulleted-list">
DocumentsWriterPerThread (DWPT) is now flushed concurrently based on a
  FlushPolicy.  When a DWPT is flushed, a fresh DWPT is swapped in so that
  indexing may continue concurrently with flushing.  The selected
  DWPT flushes all its RAM resident documents do disk.  Note: Segment flushes
  don't flush all RAM resident documents but only the documents private to
  the DWPT selected for flushing.
</li>
<p/>
<li class="bulleted-list">
Flushing is now controlled by FlushPolicy that is called for every add,
  update or delete on IndexWriter. By default DWPTs are flushed either on
  maxBufferedDocs per DWPT or the global active used memory. Once the active
  memory exceeds ramBufferSizeMB only the largest DWPT is selected for
  flushing and the memory used by this DWPT is subtracted from the active
  memory and added to a flushing memory pool, which can lead to temporarily
  higher memory usage due to ongoing indexing.
</li>
<p/>
<li class="bulleted-list">
IndexWriter now can utilize ramBufferSize &gt; 2048 MB. Each DWPT can address
  up to 2048 MB memory such that the ramBufferSize is now bounded by the max
  number of DWPT available in the used DocumentsWriterPerThreadPool.
  IndexWriters net memory consumption can grow far beyond the 2048 MB limit if
  the application can use all available DWPTs. To prevent a DWPT from
  exhausting its address space IndexWriter will forcefully flush a DWPT if its
  hard memory limit is exceeded. The RAMPerThreadHardLimitMB can be controlled
  via IndexWriterConfig and defaults to 1945 MB.
  Since IndexWriter flushes DWPT concurrently not all memory is released
  immediately. Applications should still use a ramBufferSize significantly
  lower than the JVMs available heap memory since under high load multiple
  flushing DWPT can consume substantial transient memory when IO performance
  is slow relative to indexing rate.
</li>
<p/>
<li class="bulleted-list">
IndexWriter#commit now doesn't block concurrent indexing while flushing all
  'currently' RAM resident documents to disk. Yet, flushes that occur while a
  a full flush is running are queued and will happen after all DWPT involved
  in the full flush are done flushing. Applications using multiple threads
  during indexing and trigger a full flush (eg call commit() or open a new
  NRT reader) can use significantly more transient memory.
</li>
<p/>
<li class="bulleted-list">
IndexWriter#addDocument and IndexWriter.updateDocument can block indexing
  threads if the number of active + number of flushing DWPT exceed a
  safety limit. By default this happens if 2 * max number available thread
  states (DWPTPool) is exceeded. This safety limit prevents applications from
  exhausting their available memory if flushing can't keep up with
  concurrently indexing threads.
</li>
<p/>
<li class="bulleted-list">
IndexWriter only applies and flushes deletes if the maxBufferedDelTerms
  limit is reached during indexing. No segment flushes will be triggered
  due to this setting.
</li>
<p/>
<li class="bulleted-list">
IndexWriter#flush(boolean, boolean) doesn't synchronized on IndexWriter
  anymore. A dedicated flushLock has been introduced to prevent multiple full-
  flushes happening concurrently.
</li>
<p/>
<li class="bulleted-list">
DocumentsWriter doesn't write shared doc stores anymore.
</li>
</ul><span class="attrib">(Mike McCandless, Michael Busch, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3309">LUCENE-3309</a>: Stored fields no longer record whether they were
tokenized or not.  In general you should not rely on stored fields
to record any "metadata" from indexing (tokenized, omitNorms,
IndexOptions, boost, etc.)
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3309">LUCENE-3309</a>: Fast vector highlighter now inserts the
MultiValuedSeparator for NOT_ANALYZED fields (in addition to
ANALYZED fields).  To ensure your offsets are correct you should
provide an analyzer that returns 1 from the offsetGap method.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2621">LUCENE-2621</a>: Removed contrib/instantiated.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1768">LUCENE-1768</a>: StandardQueryTreeBuilder no longer uses RangeQueryNodeBuilder
for RangeQueryNodes, since theses two classes were removed;
TermRangeQueryNodeProcessor now creates TermRangeQueryNode,
instead of RangeQueryNode; the same applies for numeric nodes;
<br /><span class="attrib">(Vinicius Barros via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3455">LUCENE-3455</a>: QueryParserBase.newFieldQuery() will throw a ParseException if
any of the calls to the Analyzer throw an IOException.  QueryParseBase.analyzeRangePart()
will throw a RuntimeException if an IOException is thrown by the Analyzer.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4127">LUCENE-4127</a>: IndexWriter will now throw IllegalArgumentException if
the first token of an indexed field has 0 positionIncrement
(previously it silently corrected it to 1, possibly masking bugs).
OffsetAttributeImpl will throw IllegalArgumentException if startOffset
is less than endOffset, or if offsets are negative.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-alpha.api_changes" href="javascript:toggleList('v4.0.0-alpha.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(35)
    <ol id="v4.0.0-alpha.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2302">LUCENE-2302</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1458">LUCENE-1458</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2111">LUCENE-2111</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2514">LUCENE-2514</a>: Terms are no longer
required to be character based. Lucene views a term as an arbitrary byte[]:
during analysis, character-based terms are converted to UTF8 byte[],
but analyzers are free to directly create terms as byte[]
(NumericField does this, for example).  The term data is buffered as
byte[] during indexing, written as byte[] into the terms dictionary,
and iterated as byte[] (wrapped in a BytesRef) by IndexReader for
searching.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1458">LUCENE-1458</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2111">LUCENE-2111</a>: AtomicReader now directly exposes its
deleted docs (getDeletedDocs), providing a new Bits interface to
directly query by doc ID.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2691">LUCENE-2691</a>: IndexWriter.getReader() has been made package local and is now
exposed via open and reopen methods on DirectoryReader.  The semantics of the
call is the same as it was prior to the API change.
<br /><span class="attrib">(Grant Ingersoll, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2566">LUCENE-2566</a>: QueryParser: Unary operators +,-,! will not be treated as
operators if they are followed by whitespace.
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2831">LUCENE-2831</a>: Weight#scorer, Weight#explain, Filter#getDocIdSet,
Collector#setNextReader &amp; FieldComparator#setNextReader now expect an
AtomicReaderContext instead of an IndexReader.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2892">LUCENE-2892</a>: Add QueryParser.newFieldQuery (called by getFieldQuery by
default) which takes Analyzer as a parameter, for easier customization by
subclasses.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2953">LUCENE-2953</a>: In addition to changes in 3.x, PriorityQueue#initialize(int)
function was moved into the ctor.
<br /><span class="attrib">(Uwe Schindler, Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3219">LUCENE-3219</a>: SortField type properties have been moved to an enum
SortField.Type.  In be consistent, CachedArrayCreator.getSortTypeID() has
been changed CachedArrayCreator.getSortType().
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3225">LUCENE-3225</a>: Add TermsEnum.seekExact for faster seeking when you
don't need the ceiling term; renamed existing seek methods to either
seekCeil or seekExact; changed seekExact(ord) to return no value.
Fixed MemoryCodec and SimpleTextCodec to optimize the seekExact
case, and fixed places in Lucene to use seekExact when possible.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1536">LUCENE-1536</a>: Filter.getDocIdSet() now takes an acceptDocs Bits interface (like
Scorer) limiting the documents that can appear in the returned DocIdSet.
Filters are now required to respect these acceptDocs, otherwise deleted documents
may get returned by searches. Most filters will pass these Bits down to DocsEnum,
but those, e.g. working on FieldCache, may need to use BitsFilteredDocIdSet.wrap()
to exclude them.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Robert Muir, Chris Male, Yonik Seeley,
Jason Rutherglen, Paul Elschot)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3722">LUCENE-3722</a>: Similarity methods and collection/term statistics now take
long instead of int (to enable distributed scoring of &gt; 2B docs).
<br /><span class="attrib">(Yonik Seeley, Andrzej Bialecki, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3761">LUCENE-3761</a>: Generalize SearcherManager into an abstract ReferenceManager.
SearcherManager remains a concrete class, but due to the refactoring, the
method maybeReopen has been deprecated in favor of maybeRefresh().
<br /><span class="attrib">(Shai Erera, Mike McCandless, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3859">LUCENE-3859</a>: AtomicReader.hasNorms(field) is deprecated, instead you
can inspect the FieldInfo yourself to see if norms are present, which
also allows you to get the type.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2606">LUCENE-2606</a>: Changed RegexCapabilities interface to fix thread
safety, serialization, and performance problems. If you have
written a custom RegexCapabilities it will need to be updated
to the new API.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2638">LUCENE-2638</a> MakeHighFreqTerms.TermStats public to make it more useful
for API use.
<br /><span class="attrib">(Andrzej Bialecki)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2912">LUCENE-2912</a>: The field-specific hashmaps in SweetSpotSimilarity were removed.
Instead, use PerFieldSimilarityWrapper to return different SweetSpotSimilaritys
for different fields, this way all parameters (such as TF factors) can be
customized on a per-field basis.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3308">LUCENE-3308</a>: DuplicateFilter keepMode and processingMode have been converted to
enums DuplicateFilter.KeepMode and DuplicateFilter.ProcessingMode respectively.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3483">LUCENE-3483</a>: Move Function grouping collectors from Solr to grouping module.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3606">LUCENE-3606</a>: FieldNormModifier was deprecated, because IndexReader's
setNorm() was deprecated. Furthermore, this class is broken, as it does
not take position overlaps into account while recalculating norms.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3936">LUCENE-3936</a>: Renamed StringIndexDocValues to DocTermsIndexDocValues.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1768">LUCENE-1768</a>: Deprecated Parametric(Range)QueryNode, RangeQueryNode(Builder),
ParametricRangeQueryNodeProcessor were removed.
<br /><span class="attrib">(Vinicius Barros via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3820">LUCENE-3820</a>: Deprecated constructors accepting pattern matching bounds. The input
is buffered and matched in one pass.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2413">LUCENE-2413</a>: Deprecated PatternAnalyzer in common/miscellaneous, in favor
of the pattern package (CharFilter, Tokenizer, TokenFilter).
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2413">LUCENE-2413</a>: Removed the AnalyzerUtil in common/miscellaneous.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1370">LUCENE-1370</a>: Added ShingleFilter option to output unigrams if no shingles
can be generated.
<br /><span class="attrib">(Chris Harris via Steven Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2514">LUCENE-2514</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2551">LUCENE-2551</a>: JDK and ICU CollationKeyAnalyzers were changed to
use pure byte keys when Version &gt;= 4.0. This cuts sort key size approximately
in half.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3400">LUCENE-3400</a>: Removed DutchAnalyzer.setStemDictionary
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3431">LUCENE-3431</a>: Removed QueryAutoStopWordAnalyzer.addStopWords* deprecated methods
since they prevented reuse.  Stopwords are now generated at instantiation through
the Analyzer's constructors.
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3434">LUCENE-3434</a>: Removed ShingleAnalyzerWrapper.set* and PerFieldAnalyzerWrapper.addAnalyzer
since they prevent reuse.  Both Analyzers should be configured at instantiation.
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3765">LUCENE-3765</a>: Stopset ctors that previously took Set&lt;?&gt; or Map&lt;?,String&gt; now take
CharArraySet and CharArrayMap respectively. Previously the behavior was confusing,
and sometimes different depending on the type of set, and ultimately a CharArraySet
or CharArrayMap was always used anyway.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3830">LUCENE-3830</a>: Switched to NormalizeCharMap.Builder to create
immutable instances of NormalizeCharMap.
<br /><span class="attrib">(Dawid Weiss, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4063">LUCENE-4063</a>: FrenchLightStemmer no longer deletes repeated digits.
<br /><span class="attrib">(Tanguy Moal via Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4122">LUCENE-4122</a>: Replace Payload with BytesRef.
<br /><span class="attrib">(Andrzej Bialecki)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4132">LUCENE-4132</a>: IndexWriter.getConfig() now returns a LiveIndexWriterConfig object
which can be used to change the IndexWriter's live settings. IndexWriterConfig
is used only for initializing the IndexWriter.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3866">LUCENE-3866</a>: IndexReaderContext.leaves() is now the preferred way to access
atomic sub-readers of any kind of IndexReader (for AtomicReaders it returns
itself as only leaf with docBase=0).
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-alpha.new_features" href="javascript:toggleList('v4.0.0-alpha.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(66)
    <ol id="v4.0.0-alpha.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2604">LUCENE-2604</a>: Added RegexpQuery support to QueryParser. Regular expressions
are directly supported by the standard queryparser via
   fieldName:/expression/ OR /expression against default field/
Users who wish to search for literal "/" characters are advised to
backslash-escape or quote those characters as needed.
<br /><span class="attrib">(Simon Willnauer, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1606">LUCENE-1606</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2089">LUCENE-2089</a>: Adds AutomatonQuery, a MultiTermQuery that
matches terms against a finite-state machine. Implement WildcardQuery
and FuzzyQuery with finite-state methods. Adds RegexpQuery.
<br /><span class="attrib">(Robert Muir, Mike McCandless, Uwe Schindler, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3662">LUCENE-3662</a>: Add support for levenshtein distance with transpositions
to LevenshteinAutomata, FuzzyTermsEnum, and DirectSpellChecker.
<br /><span class="attrib">(Jean-Philippe Barrette-LaPierre, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2321">LUCENE-2321</a>: Cutover to a more RAM efficient packed-ints based
representation for the in-memory terms dict index.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2126">LUCENE-2126</a>: Add new classes for data (de)serialization: DataInput
and DataOutput.  IndexInput and IndexOutput extend these new classes.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1458">LUCENE-1458</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2111">LUCENE-2111</a>: With flexible indexing it is now possible
for an application to create its own postings codec, to alter how
fields, terms, docs and positions are encoded into the index.  The
standard codec is the default codec. IndexWriter accepts a Codec
class to obtain codecs for newly written segments.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1458">LUCENE-1458</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2111">LUCENE-2111</a>: Some experimental codecs have been added
for flexible indexing, including pulsing codec (inlines
low-frequency terms directly into the terms dict, avoiding seeking
for some queries), sep codec (stores docs, freqs, positions, skip
data and payloads in 5 separate files instead of the 2 used by
standard codec), and int block (really a "base" for using
block-based compressors like PForDelta for storing postings data).
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1458">LUCENE-1458</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2111">LUCENE-2111</a>: The in-memory terms index used by standard
codec is more RAM efficient: terms data is stored as block byte
arrays and packed integers.  Net RAM reduction for indexes that have
many unique terms should be substantial, and initial open time for
IndexReaders should be faster.  These gains only apply for newly
written segments after upgrading.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1458">LUCENE-1458</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2111">LUCENE-2111</a>: Terms data are now buffered directly as
byte[] during indexing, which uses half the RAM for ascii terms (and
also numeric fields).  This can improve indexing throughput for
applications that have many unique terms, since it reduces how often
a new segment must be flushed given a fixed RAM buffer size.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2489">LUCENE-2489</a>: Added PerFieldCodecWrapper (in oal.index.codecs) which
lets you set the Codec per field
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2373">LUCENE-2373</a>: Extend Codec to use SegmentInfosWriter and
SegmentInfosReader to allow customization of SegmentInfos data.
<br /><span class="attrib">(Andrzej Bialecki)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2504">LUCENE-2504</a>: FieldComparator.setNextReader now returns a
FieldComparator instance.  You can "return this", to just reuse the
same instance, or you can return a comparator optimized to the new
segment.
<br /><span class="attrib">(yonik, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2648">LUCENE-2648</a>: PackedInts.Iterator now supports to advance by more than a
single ordinal.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2649">LUCENE-2649</a>: Objects in the FieldCache can optionally store Bits
that mark which docs have real values in the native[]
<br /><span class="attrib">(ryan)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2664">LUCENE-2664</a>: Add SimpleText codec, which stores all terms/postings
data in a single text file for transparency (at the expense of poor
performance).
<br /><span class="attrib">(Sahin Buyrukbilen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2589">LUCENE-2589</a>: Add a VariableSizedIntIndexInput, which, when used w/
Sep*, makes it simple to take any variable sized int block coders
(like Simple9/16) and use them in a codec.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2597">LUCENE-2597</a>: Add oal.index.SlowCompositeReaderWrapper, to wrap a
composite reader (eg MultiReader or DirectoryReader), making it
pretend it's an atomic reader.  This is a convenience class (you can
use MultiFields static methods directly, instead) if you need to use
the flex APIs directly on a composite reader.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2690">LUCENE-2690</a>: MultiTermQuery boolean rewrites per segment.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-996">LUCENE-996</a>: The QueryParser now accepts mixed inclusive and exclusive
bounds for range queries.  Example: "{3 TO 5]"
QueryParser subclasses that overrode getRangeQuery will need to be changed
to use the new getRangeQuery method.
<br /><span class="attrib">(Andrew Schurman, Mark Miller, yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2742">LUCENE-2742</a>: Add native per-field postings format support. Codec lets you now
register a postings format for each field and which is in turn recorded
into the index. Postings formats are maintained on a per-segment basis and be
resolved without knowing the actual postings format used for writing the segment.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2741">LUCENE-2741</a>: Add support for multiple codecs that use the same file
extensions within the same segment. Codecs now use their per-segment codec
ID in the file names.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2843">LUCENE-2843</a>: Added a new terms index impl,
VariableGapTermsIndexWriter/Reader, that accepts a pluggable
IndexTermSelector for picking which terms should be indexed in the
terms dict.  This impl stores the indexed terms in an FST, which is
much more RAM efficient than FixedGapTermsIndex.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2862">LUCENE-2862</a>: Added TermsEnum.totalTermFreq() and
Terms.getSumTotalTermFreq().
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3290">LUCENE-3290</a>: Added Terms.getSumDocFreq()
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3003">LUCENE-3003</a>: Added new expert class oal.index.DocTermsOrd,
refactored from Solr's UnInvertedField, for accessing term ords for
multi-valued fields, per document.  This is similar to FieldCache in
that it inverts the index to compute the ords, but differs in that
it's able to handle multi-valued fields and does not hold the term
bytes in RAM.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3108">LUCENE-3108</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2935">LUCENE-2935</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2168">LUCENE-2168</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1231">LUCENE-1231</a>: Changes from
DocValues (ColumnStrideFields):
<ul class="bulleted-list">
<li class="bulleted-list">
IndexWriter now supports typesafe dense per-document values stored in
  a column like storage. DocValues are stored on a per-document
  basis where each documents field can hold exactly one value of a given
  type. DocValues are provided via Fieldable and can be used in
  conjunction with stored and indexed values.
</li>
<p/>
<li class="bulleted-list">
DocValues provides an entirely RAM resident document id to value
  mapping per field as well as a DocIdSetIterator based disk-resident
  sequential access API relying on filesystem-caches.
</li>
<p/>
<li class="bulleted-list">
Both APIs are exposed via IndexReader and the Codec / Flex API allowing
  expert users to integrate customized DocValues reader and writer
  implementations by extending existing Codecs.
</li>
<p/>
<li class="bulleted-list">
DocValues provides implementations for primitive datatypes like int,
  long, float, double and arrays of byte. Byte based implementations further
  provide storage variants like straight or dereferenced stored bytes, fixed
  and variable length bytes as well as index time sorted based on
  user-provided comparators.
</li>
</ul><span class="attrib">(Mike McCandless, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3209">LUCENE-3209</a>: Added MemoryCodec, which stores all terms &amp; postings in
RAM as an FST; this is good for primary-key fields if you frequently
need to lookup by that field or perform deletions against it, for
example in a near-real-time setting.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/SOLR-2533">SOLR-2533</a>: Added support for rewriting Sort and SortFields using an
IndexSearcher.  SortFields can have SortField.REWRITEABLE type which
requires they are rewritten before they are used.
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3203">LUCENE-3203</a>: FSDirectory can now limit the max allowed write rate
(MB/sec) of all running merges, to reduce impact ongoing merging has
on searching, NRT reopen time, etc.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2793">LUCENE-2793</a>: Directory#createOutput &amp; Directory#openInput now accept an
IOContext instead of a buffer size to allow low level optimizations for
different usecases like merging, flushing and reading.
<br /><span class="attrib">(Simon Willnauer, Mike McCandless, Varun Thacker)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3354">LUCENE-3354</a>: FieldCache can cache DocTermOrds.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3376">LUCENE-3376</a>: ReusableAnalyzerBase has been moved from modules/analysis/common
into lucene/src/java/org/apache/lucene/analysis
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3423">LUCENE-3423</a>: add Terms.getDocCount(), which returns the number of documents
that have at least one term for a field.
<br /><span class="attrib">(Yonik Seeley, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2959">LUCENE-2959</a>: Added a variety of different relevance ranking systems to Lucene.
<ul class="bulleted-list">
<li class="bulleted-list">
Added Okapi BM25, Language Models, Divergence from Randomness, and
  Information-Based Models. The models are pluggable, support all of lucene's
  features (boosts, slops, explanations, etc) and queries (spans, etc).
</li>
<p/>
<li class="bulleted-list">
All models default to the same index-time norm encoding as
  DefaultSimilarity, so you can easily try these out/switch back and
  forth/run experiments and comparisons without reindexing. Note: most of
  the models do rely upon index statistics that are new in Lucene 4.0, so
  for existing 3.x indexes its a good idea to upgrade your index to the
  new format with IndexUpgrader first.
</li>
<p/>
<li class="bulleted-list">
Added a new subclass SimilarityBase which provides a simplified API
  for plugging in new ranking algorithms without dealing with all of the
  nuances and implementation details of Lucene.
</li>
<p/>
<li class="bulleted-list">
For example, to use BM25 for all fields:
   searcher.setSimilarity(new BM25Similarity());
</li>
</ul>
<p/>
  If you instead want to apply different similarities (e.g. ones with
  different parameter values or different algorithms entirely) to different
  fields, implement PerFieldSimilarityWrapper with your per-field logic.
<br /><span class="attrib">(David Mark Nemeskey via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3396">LUCENE-3396</a>: ReusableAnalyzerBase now provides a ReuseStrategy abstraction
which controls how TokenStreamComponents are reused per request.  Two
implementations are provided - GlobalReuseStrategy which implements the
current behavior of sharing components between all fields, and
PerFieldReuseStrategy which shares per field.
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2309">LUCENE-2309</a>: Added IndexableField.tokenStream(Analyzer) which is now
responsible for creating the TokenStreams for Fields when they are to
be indexed.
<br /><span class="attrib">(Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3433">LUCENE-3433</a>: Added random access for non RAM resident IndexDocValues. RAM
resident and disk resident IndexDocValues are now exposed via the Source
interface. ValuesEnum has been removed in favour of Source.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1536">LUCENE-1536</a>: Filters can now be applied down-low, if their DocIdSet implements
a new bits() method, returning all documents in a random access way. If the
DocIdSet is not too sparse, it will be passed as acceptDocs down to the Scorer
as replacement for AtomicReader's live docs.
In addition, FilteredQuery backs now IndexSearcher's filtering search methods.
Using FilteredQuery you can chain Filters in a very performant way
[new FilteredQuery(new FilteredQuery(query, filter1), filter2)], which was not
possible with IndexSearcher's methods. FilteredQuery also allows to override
the heuristics used to decide if filtering should be done random access or
using a conjunction on DocIdSet's iterator().
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Robert Muir, Chris Male, Yonik Seeley,
Jason Rutherglen, Paul Elschot)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3638">LUCENE-3638</a>: Added sugar methods to IndexReader and IndexSearcher to
load only certain fields when loading a document.
<br /><span class="attrib">(Peter Chang via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3628">LUCENE-3628</a>: Norms are represented as DocValues. AtomicReader exposes
a #normValues(String) method to obtain norms per field.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3687">LUCENE-3687</a>: Similarity#computeNorm(FieldInvertState, Norm) allows to compute
norm values or arbitrary precision. Instead of returning a fixed single byte
value, custom similarities can now set a integer, float or byte value to the
given Norm object.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2604">LUCENE-2604</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4103">LUCENE-4103</a>: Added RegexpQuery support to contrib/queryparser.
<br /><span class="attrib">(Simon Willnauer, Robert Muir, Daniel Truemper)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2373">LUCENE-2373</a>: Added a Codec implementation that works with append-only
filesystems (such as e.g. Hadoop DFS). SegmentInfos writing/reading
code is refactored to support append-only FS, and to allow for future
customization of per-segment information.
<br /><span class="attrib">(Andrzej Bialecki)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2479">LUCENE-2479</a>: Added ability to provide a sort comparator for spelling suggestions along
with two implementations.  The existing comparator (score, then frequency) is the default
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2608">LUCENE-2608</a>: Added the ability to specify the accuracy at method time in the SpellChecker.  The per class
method is also still available.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2507">LUCENE-2507</a>: Added DirectSpellChecker, which retrieves correction candidates directly
from the term dictionary using levenshtein automata.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3527">LUCENE-3527</a>: Add LuceneLevenshteinDistance, which computes string distance in a compatible
way as DirectSpellChecker. This can be used to merge top-N results from more than one
SpellChecker.
<br /><span class="attrib">(James Dyer via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3496">LUCENE-3496</a>: Support grouping by DocValues.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2795">LUCENE-2795</a>: Generified DirectIOLinuxDirectory to work across any
unix supporting the O_DIRECT flag when opening a file (tested on
Linux and OS X but likely other Unixes will work), and improved it
so it can be used for indexing and searching.  The directory uses
direct IO when doing large merges to avoid  unnecessarily evicting
cached IO pages due to large merges.
<br /><span class="attrib">(Varun Thacker, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3827">LUCENE-3827</a>: DocsAndPositionsEnum from MemoryIndex implements
start/endOffset, if offsets are indexed.
<br /><span class="attrib">(Alan Woodward via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3802">LUCENE-3802</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3856">LUCENE-3856</a>: Support for grouped faceting.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3444">LUCENE-3444</a>: Added a second pass grouping collector that keeps track of distinct
values for a specified field for the top N group.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3778">LUCENE-3778</a>: Added a grouping utility class that makes it easier to use result
grouping for pure Lucene apps.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2341">LUCENE-2341</a>: A new analysis/ filter: Morfologik - a dictionary-driven lemmatizer
(accurate stemmer) for Polish (includes morphosyntactic annotations).
<br /><span class="attrib">(Michał Dybizbański, Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2413">LUCENE-2413</a>: Consolidated Lucene/Solr analysis components into analysis/common.
New features from Solr now available to Lucene users include:
<ul class="bulleted-list">
<li class="bulleted-list">
o.a.l.analysis.commongrams: Constructs n-grams for frequently occurring terms
   and phrases.
</li>
<li class="bulleted-list">
o.a.l.analysis.charfilter.HTMLStripCharFilter: CharFilter that strips HTML
   constructs.
</li>
<li class="bulleted-list">
o.a.l.analysis.miscellaneous.WordDelimiterFilter: TokenFilter that splits words
   into subwords and performs optional transformations on subword groups.
</li>
<li class="bulleted-list">
o.a.l.analysis.miscellaneous.RemoveDuplicatesTokenFilter: TokenFilter which
   filters out Tokens at the same position and Term text as the previous token.
</li>
<li class="bulleted-list">
o.a.l.analysis.miscellaneous.TrimFilter: Trims leading and trailing whitespace
   from Tokens in the stream.
</li>
<li class="bulleted-list">
o.a.l.analysis.miscellaneous.KeepWordFilter: A TokenFilter that only keeps tokens
   with text contained in the required words (inverse of StopFilter).
</li>
<li class="bulleted-list">
o.a.l.analysis.miscellaneous.HyphenatedWordsFilter: A TokenFilter that puts
   hyphenated words broken into two lines back together.
</li>
<li class="bulleted-list">
o.a.l.analysis.miscellaneous.CapitalizationFilter: A TokenFilter that applies
   capitalization rules to tokens.
</li>
<li class="bulleted-list">
o.a.l.analysis.pattern: Package for pattern-based analysis, containing a
   CharFilter, Tokenizer, and TokenFilter for transforming text with regexes.
</li>
<li class="bulleted-list">
o.a.l.analysis.synonym.SynonymFilter: A synonym filter that supports multi-word
   synonyms.
</li>
<li class="bulleted-list">
o.a.l.analysis.phonetic: Package for phonetic search, containing various
   phonetic encoders such as Double Metaphone.
</li>
<p/>
 Some existing analysis components changed packages:
<li class="bulleted-list">
o.a.l.analysis.KeywordAnalyzer -&gt; o.a.l.analysis.core.KeywordAnalyzer
</li>
<li class="bulleted-list">
o.a.l.analysis.KeywordTokenizer -&gt; o.a.l.analysis.core.KeywordTokenizer
</li>
<li class="bulleted-list">
o.a.l.analysis.LetterTokenizer -&gt; o.a.l.analysis.core.LetterTokenizer
</li>
<li class="bulleted-list">
o.a.l.analysis.LowerCaseFilter -&gt; o.a.l.analysis.core.LowerCaseFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.LowerCaseTokenizer -&gt; o.a.l.analysis.core.LowerCaseTokenizer
</li>
<li class="bulleted-list">
o.a.l.analysis.SimpleAnalyzer -&gt; o.a.l.analysis.core.SimpleAnalyzer
</li>
<li class="bulleted-list">
o.a.l.analysis.StopAnalyzer -&gt; o.a.l.analysis.core.StopAnalyzer
</li>
<li class="bulleted-list">
o.a.l.analysis.StopFilter -&gt; o.a.l.analysis.core.StopFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.WhitespaceAnalyzer -&gt; o.a.l.analysis.core.WhitespaceAnalyzer
</li>
<li class="bulleted-list">
o.a.l.analysis.WhitespaceTokenizer -&gt; o.a.l.analysis.core.WhitespaceTokenizer
</li>
<li class="bulleted-list">
o.a.l.analysis.PorterStemFilter -&gt; o.a.l.analysis.en.PorterStemFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.ASCIIFoldingFilter -&gt; o.a.l.analysis.miscellaneous.ASCIIFoldingFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.ISOLatin1AccentFilter -&gt; o.a.l.analysis.miscellaneous.ISOLatin1AccentFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.KeywordMarkerFilter -&gt; o.a.l.analysis.miscellaneous.KeywordMarkerFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.LengthFilter -&gt; o.a.l.analysis.miscellaneous.LengthFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.PerFieldAnalyzerWrapper -&gt; o.a.l.analysis.miscellaneous.PerFieldAnalyzerWrapper
</li>
<li class="bulleted-list">
o.a.l.analysis.TeeSinkTokenFilter -&gt; o.a.l.analysis.sinks.TeeSinkTokenFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.CharFilter -&gt; o.a.l.analysis.charfilter.CharFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.BaseCharFilter -&gt; o.a.l.analysis.charfilter.BaseCharFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.MappingCharFilter -&gt; o.a.l.analysis.charfilter.MappingCharFilter
</li>
<li class="bulleted-list">
o.a.l.analysis.NormalizeCharMap -&gt; o.a.l.analysis.charfilter.NormalizeCharMap
</li>
<li class="bulleted-list">
o.a.l.analysis.CharArraySet -&gt; o.a.l.analysis.util.CharArraySet
</li>
<li class="bulleted-list">
o.a.l.analysis.CharArrayMap -&gt; o.a.l.analysis.util.CharArrayMap
</li>
<li class="bulleted-list">
o.a.l.analysis.ReusableAnalyzerBase -&gt; o.a.l.analysis.util.ReusableAnalyzerBase
</li>
<li class="bulleted-list">
o.a.l.analysis.StopwordAnalyzerBase -&gt; o.a.l.analysis.util.StopwordAnalyzerBase
</li>
<li class="bulleted-list">
o.a.l.analysis.WordListLoader -&gt; o.a.l.analysis.util.WordListLoader
</li>
<li class="bulleted-list">
o.a.l.analysis.CharTokenizer -&gt; o.a.l.analysis.util.CharTokenizer
</li>
<li class="bulleted-list">
o.a.l.util.CharacterUtils -&gt; o.a.l.analysis.util.CharacterUtils
</li>
</ul>
<p/>
 All analyzers in contrib/analyzers and contrib/icu were moved to the
 analysis/ module.  The 'smartcn' and 'stempel' components now depend on 'common'.
<br /><span class="attrib">(Chris Male, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4004">LUCENE-4004</a>: Add DisjunctionMaxQuery support to the xml query parser.
<br /><span class="attrib">(Benson Margulies via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4025">LUCENE-4025</a>: Add maybeRefreshBlocking to ReferenceManager, to let a caller
block until the refresh logic has been executed.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4039">LUCENE-4039</a>: Add AddIndexesTask to benchmark, which uses IW.addIndexes.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3514">LUCENE-3514</a>: Added IndexSearcher.searchAfter when Sort is used,
returning results after a specified FieldDoc for deep
paging.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4043">LUCENE-4043</a>: Added scoring support via score mode for query time joining.
<br /><span class="attrib">(Martijn van Groningen, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3523">LUCENE-3523</a>: Added oal.search.spell.WordBreakSpellChecker, which
  generates suggestions by combining two or more terms and/or
  breaking terms into multiple words.  See Javadocs for usage.
<br /><span class="attrib">(James Dyer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4019">LUCENE-4019</a>: Added improved parsing of Hunspell Dictionaries so those
rules missing the required number of parameters either ignored or
cause a ParseException (depending on whether strict parsing is enabled).
<br /><span class="attrib">(Luca Cavanna via Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3440">LUCENE-3440</a>: Add ordered fragments feature with IDF-weighted terms for FVH.
<br /><span class="attrib">(Sebastian Lutze via Koji Sekiguchi)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4082">LUCENE-4082</a>: Added explain to ToParentBlockJoinQuery.
<br /><span class="attrib">(Christoph Kaser, Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4108">LUCENE-4108</a>: add replaceTaxonomy to DirectoryTaxonomyWriter, which replaces
the taxonomy in place with the given one.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3030">LUCENE-3030</a>: new BlockTree terms dictionary (used by the default
Lucene40 postings format) uses less RAM (for the terms index) and
disk space (for all terms and metadata) and gives sizable
performance gains for terms dictionary intensive operations like
FuzzyQuery, direct spell checker and primary-key lookup
<br /><span class="attrib">(Mike
McCandless)</span>.
<p/>
</li>
    </ol>
  </li>
  <li><a id="v4.0.0-alpha.optimizations" href="javascript:toggleList('v4.0.0-alpha.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(17)
    <ol id="v4.0.0-alpha.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2588">LUCENE-2588</a>: Don't store unnecessary suffixes when writing the terms
index, saving RAM in IndexReader; change default terms index
interval from 128 to 32, because the terms index now requires much
less RAM.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2669">LUCENE-2669</a>: Optimize NumericRangeQuery.NumericRangeTermsEnum to
not seek backwards when a sub-range has no terms. It now only seeks
when the current term is less than the next sub-range's lower end.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2694">LUCENE-2694</a>: Optimize MultiTermQuery to be single pass for Term lookups.
MultiTermQuery now stores TermState per leaf reader during rewrite to re-
seek the term dictionary in TermQuery / TermWeight.
<br /><span class="attrib">(Simon Willnauer, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3292">LUCENE-3292</a>: IndexWriter no longer shares the same SegmentReader
instance for merging and NRT readers, which enables directory impls
to separately tune IO flags for each.
<br /><span class="attrib">(Varun Thacker, Simon
Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3328">LUCENE-3328</a>: BooleanQuery now uses a specialized ConjunctionScorer if all
boolean clauses are required and instances of TermQuery.
<br /><span class="attrib">(Simon Willnauer, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3643">LUCENE-3643</a>: FilteredQuery and IndexSearcher.search(Query, Filter,...)
now optimize the special case query instanceof MatchAllDocsQuery to
execute as ConstantScoreQuery.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3509">LUCENE-3509</a>: Added fasterButMoreRam option for docvalues. This option controls whether the space for packed ints
should be rounded up for better performance. This option only applies for docvalues types bytes fixed sorted
and bytes var sorted.
<br /><span class="attrib">(Simon Willnauer, Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3795">LUCENE-3795</a>: Replace contrib/spatial with modules/spatial.  This includes
a basic spatial strategy interface.
<br /><span class="attrib">(David Smiley, Chris Male, ryan)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3932">LUCENE-3932</a>: Lucene3x codec loads terms index faster, by
pre-allocating the packed ints array based on the .tii file size
<br /><span class="attrib">(Sean Bridges via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3468">LUCENE-3468</a>: Replaced last() and remove() with pollLast() in
FirstPassGroupingCollector
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3830">LUCENE-3830</a>: Changed MappingCharFilter/NormalizeCharMap to use an
FST under the hood, which requires less RAM.  NormalizeCharMap no
longer accepts empty string match (it did previously, but ignored
it).
<br /><span class="attrib">(Dawid Weiss, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4061">LUCENE-4061</a>: improve synchronization in DirectoryTaxonomyWriter.addCategory
and few general improvements to DirectoryTaxonomyWriter.
<br /><span class="attrib">(Shai Erera, Gilad Barkai)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4062">LUCENE-4062</a>: Add new aligned packed bits impls for faster lookup
performance; add float acceptableOverheadRatio to getWriter and
getMutable API to give packed ints freedom to pick faster
implementations
<br /><span class="attrib">(Adrien Grand via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2357">LUCENE-2357</a>: Reduce transient RAM usage when merging segments in
IndexWriter.
<br /><span class="attrib">(Adrien Grand)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4098">LUCENE-4098</a>: Add bulk get/set methods to PackedInts
<br /><span class="attrib">(Adrien Grand
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4156">LUCENE-4156</a>: DirectoryTaxonomyWriter.getSize is no longer synchronized.
<br /><span class="attrib">(Shai Erera, Sivan Yogev)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4163">LUCENE-4163</a>: Improve concurrency of MMapIndexInput.clone() by using
the new WeakIdentityMap on top of a ConcurrentHashMap to manage
the cloned instances. WeakIdentityMap was extended to support
iterating over its keys.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-alpha.bug_fixes" href="javascript:toggleList('v4.0.0-alpha.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(19)
    <ol id="v4.0.0-alpha.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2803">LUCENE-2803</a>: The FieldCache can miss values if an entry for a reader
with more document deletions is requested before a reader with fewer
deletions, provided they share some segments.
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2645">LUCENE-2645</a>: Fix false assertion error when same token was added one
after another with 0 posIncr.
<br /><span class="attrib">(David Smiley, Kurosaka Teruhiko via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3348">LUCENE-3348</a>: Fix thread safety hazards in IndexWriter that could
rarely cause deletions to be incorrectly applied.
<br /><span class="attrib">(Yonik Seeley,
Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3515">LUCENE-3515</a>: Fix terrible merge performance versus 3.x, especially
when the directory isn't MMapDirectory, due to failing to reuse
DocsAndPositionsEnum while merging
<br /><span class="attrib">(Marc Sturlese, Erick Erickson,
Robert Muir, Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3589">LUCENE-3589</a>: BytesRef copy(short) didn't set length.
<br /><span class="attrib">(Peter Chang via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3045">LUCENE-3045</a>: fixed QueryNodeImpl.containsTag(String key) that was
not lowercasing the key before checking for the tag
<br /><span class="attrib">(Adriano Crestani)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3890">LUCENE-3890</a>: Fixed NPE for grouped faceting on multi-valued fields.
<br /><span class="attrib">(Michael McCandless, Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2945">LUCENE-2945</a>: Fix hashCode/equals for surround query parser generated queries.
<br /><span class="attrib">(Paul Elschot, Simon Rosenthal, gsingers via ehatcher)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3971">LUCENE-3971</a>: MappingCharFilter could return invalid final token position.
<br /><span class="attrib">(Dawid Weiss, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3820">LUCENE-3820</a>: PatternReplaceCharFilter could return invalid token positions.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3969">LUCENE-3969</a>: Throw IAE on bad arguments that could cause confusing errors in
CompoundWordTokenFilterBase, PatternTokenizer, PositionFilter,
SnowballFilter, PathHierarchyTokenizer, ReversePathHierarchyTokenizer,
WikipediaTokenizer, and KeywordTokenizer. ShingleFilter and
CommonGramsFilter now populate PositionLengthAttribute. Fixed
PathHierarchyTokenizer to reset() all state. Protect against AIOOBE in
ReversePathHierarchyTokenizer if skip is large. Fixed wrong final
offset calculation in PathHierarchyTokenizer.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4060">LUCENE-4060</a>: Fix a synchronization bug in
DirectoryTaxonomyWriter.addTaxonomies(). Also, the method has been renamed to
addTaxonomy and now takes only one Directory and one OrdinalMap.
<br /><span class="attrib">(Shai Erera, Gilad Barkai)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3590">LUCENE-3590</a>: Fix AIOOBE in BytesRef/CharsRef copyBytes/copyChars when
offset is nonzero, fix off-by-one in CharsRef.subSequence, and fix
CharsRef's CharSequence methods to throw exceptions in boundary cases
to properly meet the specification.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4084">LUCENE-4084</a>: Attempting to reuse a single IndexWriterConfig instance
across more than one IndexWriter resulted in a cryptic exception.
This is now fixed, but requires that certain members of
IndexWriterConfig (MergePolicy, FlushPolicy,
DocumentsWriterThreadPool) implement clone.
<br /><span class="attrib">(Robert Muir, Simon
Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4079">LUCENE-4079</a>: Fixed loading of Hunspell dictionaries that use aliasing (AF rules)
<br /><span class="attrib">(Ludovic Boutros via Chris Male)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4077">LUCENE-4077</a>: Expose the max score and per-group scores from
ToParentBlockJoinCollector
<br /><span class="attrib">(Christoph Kaser, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4114">LUCENE-4114</a>: Fix int overflow bugs in BYTES_FIXED_STRAIGHT and
BYTES_FIXED_DEREF doc values implementations
<br /><span class="attrib">(Walt Elder via Mike McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4147">LUCENE-4147</a>: Fixed thread safety issues when rollback() and commit()
are called simultaneously.
<br /><span class="attrib">(Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4165">LUCENE-4165</a>: Removed closing of the Reader used to read the affix file in
HunspellDictionary.  Consumers are now responsible for closing all InputStreams
once the Dictionary has been instantiated.
<br /><span class="attrib">(Torsten Krah, Uwe Schindler, Chris Male)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-alpha.documentation" href="javascript:toggleList('v4.0.0-alpha.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v4.0.0-alpha.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3958">LUCENE-3958</a>: Javadocs corrections for IndexWriter.
<br /><span class="attrib">(Iulius Curt via Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v4.0.0-alpha.build" href="javascript:toggleList('v4.0.0-alpha.build')">Build</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v4.0.0-alpha.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4047">LUCENE-4047</a>: Cleanup of LuceneTestCase: moved blocks of initialization/ cleanup
code into JUnit instance and class rules.
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4016">LUCENE-4016</a>: Require ANT 1.8.2+ for the build.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3808">LUCENE-3808</a>: Refactoring of testing infrastructure to use randomizedtesting
package: <a href="http://labs.carrotsearch.com/randomizedtesting.html">http://labs.carrotsearch.com/randomizedtesting.html</a>
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3964">LUCENE-3964</a>: Added target stage-maven-artifacts, which stages
Maven release artifacts to a Maven staging repository in preparation
for release.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2845">LUCENE-2845</a>: Moved contrib/benchmark to lucene/benchmark.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2995">LUCENE-2995</a>: Moved contrib/spellchecker into lucene/suggest.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3285">LUCENE-3285</a>: Moved contrib/queryparser into lucene/queryparser
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3285">LUCENE-3285</a>: Moved contrib/xml-query-parser's demo into lucene/demo
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3271">LUCENE-3271</a>: Moved contrib/queries BooleanFilter, BoostingQuery,
ChainedFilter, FilterClause and TermsFilter into lucene/queries
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3381">LUCENE-3381</a>: Moved contrib/queries regex.*, DuplicateFilter,
FuzzyLikeThisQuery and SlowCollated* into lucene/sandbox.
Removed contrib/queries.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3286">LUCENE-3286</a>: Moved remainder of contrib/xml-query-parser to lucene/queryparser.
Classes now found at org.apache.lucene.queryparser.xml.*
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4059">LUCENE-4059</a>: Improve ANT task prepare-webpages (used by documentation
tasks) to correctly encode build file names as URIs for later processing by
XSL.
<br /><span class="attrib">(Greg Bowyer, Uwe Schindler)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.6.2" href="javascript:toggleList('v3.6.2')">Release 3.6.2  [2012-12-25]</a></h3>
<ul id="v3.6.2.list">
  <li><a id="v3.6.2.bug_fixes" href="javascript:toggleList('v3.6.2.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v3.6.2.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4234">LUCENE-4234</a>: Exception when FacetsCollector is used with ScoreFacetRequest,
and the number of matching documents is too large.
<br /><span class="attrib">(Gilad Barkai via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2686">LUCENE-2686</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3505">LUCENE-3505</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-4401">LUCENE-4401</a>: Fix BooleanQuery scorers to
return correct freq().
<br /><span class="attrib">(Koji Sekiguchi, Mike McCandless, Liu Chao, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2501">LUCENE-2501</a>: Fixed rare thread-safety issue that could cause
ArrayIndexOutOfBoundsException inside ByteBlockPool
<br /><span class="attrib">(Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4297">LUCENE-4297</a>: BooleanScorer2 would multiply the coord() factor
twice for conjunctions: for most users this is no problem, but
if you had a customized Similarity that returned something other
than 1 when overlap == maxOverlap (always the case for conjunctions),
then the score would be incorrect.
<br /><span class="attrib">(Pascal Chollet, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4300">LUCENE-4300</a>: BooleanQuery's rewrite was not always safe: if you
had a custom Similarity where coord(1,1) != 1F, then the rewritten
query would be scored differently.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4398">LUCENE-4398</a>: If you index many different field names in your
documents then due to a bug in how it measures its RAM
usage, IndexWriter would flush each segment too early eventually
reaching the point where it flushes after every doc.
<br /><span class="attrib">(Tim Smith via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4411">LUCENE-4411</a>: when sampling is enabled for a FacetRequest, its depth
parameter is reset to the default (1), even if set otherwise.
<br /><span class="attrib">(Gilad Barkai via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4635">LUCENE-4635</a>: Fixed ArrayIndexOutOfBoundsException when in-memory
terms index requires more than 2.1 GB RAM (indices with billions of
terms).
<br /><span class="attrib">(Tom Burton-West via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.2.documentation" href="javascript:toggleList('v3.6.2.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.6.2.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4302">LUCENE-4302</a>: Fix facet userguide to have HTML loose doctype like
all other javadocs.
<br /><span class="attrib">(Karl Nicholas via Uwe Schindler)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.6.1" href="javascript:toggleList('v3.6.1')">Release 3.6.1  [2012-07-22]</a></h3>
<ul id="v3.6.1.list">
      <li>More information about this release, including any errata related to the
release notes, upgrade instructions, or other changes may be found online at:
   <a href="https://wiki.apache.org/lucene-java/Lucene3.6.1">https://wiki.apache.org/lucene-java/Lucene3.6.1</a>
</li>
  </li>
  <li><a id="v3.6.1.bug_fixes" href="javascript:toggleList('v3.6.1.bug_fixes')">Bug Fixes</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v3.6.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3969">LUCENE-3969</a>: Throw IAE on bad arguments that could cause confusing
errors in KeywordTokenizer.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3971">LUCENE-3971</a>: MappingCharFilter could return invalid final token position.
<br /><span class="attrib">(Dawid Weiss, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4023">LUCENE-4023</a>: DisjunctionMaxScorer now implements visitSubScorers().
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2566">LUCENE-2566</a>: + - operators allow any amount of whitespace
<br /><span class="attrib">(yonik, janhoy)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3590">LUCENE-3590</a>: Fix AIOOBE in BytesRef/CharsRef copyBytes/copyChars when
offset is nonzero, fix off-by-one in CharsRef.subSequence, and fix
CharsRef's CharSequence methods to throw exceptions in boundary cases
to properly meet the specification.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4222">LUCENE-4222</a>: TieredMergePolicy.getFloorSegmentMB was returning the
size in bytes not MB
<br /><span class="attrib">(Chris Fuller via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.1.api_changes" href="javascript:toggleList('v3.6.1.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.6.1.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4023">LUCENE-4023</a>: Changed the visibility of Scorer#visitSubScorers() to
public, otherwise it's impossible to implement Scorers outside
the Lucene package.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.1.optimizations" href="javascript:toggleList('v3.6.1.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.6.1.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-4163">LUCENE-4163</a>: Improve concurrency of MMapIndexInput.clone() by using
the new WeakIdentityMap on top of a ConcurrentHashMap to manage
the cloned instances. WeakIdentityMap was extended to support
iterating over its keys.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.1.tests" href="javascript:toggleList('v3.6.1.tests')">Tests</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.6.1.tests.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3873">LUCENE-3873</a>: add MockGraphTokenFilter, testing analyzers with
random graph tokens.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3968">LUCENE-3968</a>: factor out LookaheadTokenFilter from
MockGraphTokenFilter
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.6.0" href="javascript:toggleList('v3.6.0')">Release 3.6.0  [2012-04-12]</a></h3>
<ul id="v3.6.0.list">
      <li>More information about this release, including any errata related to the
release notes, upgrade instructions, or other changes may be found online at:
   <a href="https://wiki.apache.org/lucene-java/Lucene3.6">https://wiki.apache.org/lucene-java/Lucene3.6</a>
</li>
  </li>
  <li><a id="v3.6.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v3.6.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(15)
    <ol id="v3.6.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3594">LUCENE-3594</a>: The protected inner class (never intended to be visible)
FieldCacheTermsFilter.FieldCacheTermsFilterDocIdSet was removed and
replaced by another internal implementation.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3620">LUCENE-3620</a>: FilterIndexReader now overrides all methods of IndexReader that
it should (note that some are still not overridden, as they should be
overridden by sub-classes only). In the process, some methods of IndexReader
were made final. This is not expected to affect many apps, since these methods
already delegate to abstract methods, which you had to already override
anyway.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3636">LUCENE-3636</a>: Added SearcherFactory, used by SearcherManager and NRTManager
to create new IndexSearchers. You can provide your own implementation to
warm new searchers, set an ExecutorService, set a custom Similarity, or
even return your own subclass of IndexSearcher. The SearcherWarmer and
ExecutorService parameters on these classes were removed, as they are
subsumed by SearcherFactory.
<br /><span class="attrib">(Shai Erera, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3644">LUCENE-3644</a>: The expert ReaderFinishedListener api suffered problems (propagated
down to subreaders, but was not called on SegmentReaders, unless they were
the owner of the reader core, and other ambiguities). The API is revised:
You can set ReaderClosedListeners on any IndexReader, and onClose is called
when that reader is closed.  SegmentReader has CoreClosedListeners that you
can register to know when a shared reader core is closed.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3652">LUCENE-3652</a>: The package org.apache.lucene.messages was moved to
contrib/queryparser. If you have used those classes in your code
just add the lucene-queryparser.jar file to your classpath.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3681">LUCENE-3681</a>: FST now stores labels for BYTE2 input type as 2 bytes
instead of vInt; this can make FSTs smaller and faster, but it is a
break in the binary format so if you had built and saved any FSTs
then you need to rebuild them.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3679">LUCENE-3679</a>: The expert IndexReader.getFieldNames(FieldOption) API
has been removed and replaced with the experimental getFieldInfos
API.  All IndexReader subclasses must implement getFieldInfos.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3695">LUCENE-3695</a>: Move confusing add(X) methods out of FST.Builder into
FST.Util.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3701">LUCENE-3701</a>: Added an additional argument to the expert FST.Builder
ctor to take FreezeTail, which you can use to (very-expertly) customize
the FST construction process. Pass null if you want the default
behavior.  Added seekExact() to FSTEnum, and added FST.save/read
from a File.
<br /><span class="attrib">(Mike McCandless, Dawid Weiss, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3712">LUCENE-3712</a>: Removed unused and untested ReaderUtil#subReader methods.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3672">LUCENE-3672</a>: Deprecate Directory.fileModified,
IndexCommit.getTimestamp and .getVersion and
IndexReader.lastModified and getCurrentVersion
<br /><span class="attrib">(Andrzej Bialecki,
Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3760">LUCENE-3760</a>: In IndexReader/DirectoryReader, deprecate static
methods getCurrentVersion and getCommitUserData, and non-static
method getCommitUserData (use getIndexCommit().getUserData()
instead).
<br /><span class="attrib">(Ryan McKinley, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3867">LUCENE-3867</a>: Deprecate instance creation of RamUsageEstimator, instead
the new static method sizeOf(Object) should be used. As the algorithm
is now using Hotspot(TM) internals (reference size, header sizes,
object alignment), the abstract o.a.l.util.MemoryModel class was
completely removed (without replacement). The new static methods
no longer support String intern-ness checking, interned strings
now count to memory usage as any other Java object.
<br /><span class="attrib">(Dawid Weiss, Uwe Schindler, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3738">LUCENE-3738</a>: All readXxx methods in BufferedIndexInput were made
final. Subclasses should only override protected readInternal /
seekInternal.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2599">LUCENE-2599</a>: Deprecated the spatial contrib module, which was buggy and not
well maintained.  Lucene 4 includes a new spatial module that replaces this.
<br /><span class="attrib">(David Smiley, Ryan McKinley, Chris Male)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.0.changes_in_runtime_behavior" href="javascript:toggleList('v3.6.0.changes_in_runtime_behavior')">Changes in Runtime Behavior</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.6.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3796">LUCENE-3796</a>, <a href="http://issues.apache.org/jira/browse/SOLR-3241">SOLR-3241</a>: Throw an exception if you try to set an index-time
boost on a field that omits norms. Because the index-time boost
is multiplied into the norm, previously your boost would be
silently discarded.
<br /><span class="attrib">(Tomás Fernández Löbbe, Hoss Man, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3848">LUCENE-3848</a>: Fix tokenstreams to not produce a stream with an initial
position increment of 0: which is out of bounds (overlapping with a
non-existent previous term). Consumers such as IndexWriter and QueryParser
still check for and silently correct this situation today, but at some point
in the future they may throw an exception.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3738">LUCENE-3738</a>: DataInput/DataOutput no longer allow negative vLongs. Negative
vInts are still supported (for index backwards compatibility), but
should not be used in new code. The read method for negative vLongs
was already broken since Lucene 3.1.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.0.security_fixes" href="javascript:toggleList('v3.6.0.security_fixes')">Security fixes</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.6.0.security_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3588">LUCENE-3588</a>: Try harder to prevent SIGSEGV on cloned MMapIndexInputs:
Previous versions of Lucene could SIGSEGV the JVM if you try to access
the clone of an IndexInput retrieved from MMapDirectory. This security fix
prevents this as best as it can by throwing AlreadyClosedException
also on clones.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.0.api_changes" href="javascript:toggleList('v3.6.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v3.6.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3606">LUCENE-3606</a>: IndexReader will be made read-only in Lucene 4.0, so all
methods allowing to delete or undelete documents using IndexReader were
deprecated; you should use IndexWriter now. Consequently
IndexReader.commit() and all open(), openIfChanged(), clone() methods
taking readOnly booleans (or IndexDeletionPolicy instances) were
deprecated. IndexReader.setNorm() is superfluous and was deprecated.
If you have to change per-document boost use CustomScoreQuery.
If you want to dynamically change norms (boost *and* length norm) at
query time, wrap your IndexReader using FilterIndexReader, overriding
FilterIndexReader.norms(). To persist the changes on disk, copy the
FilteredIndexReader to a new index using IndexWriter.addIndexes().
In Lucene 4.0, SimilarityProvider will allow you to customize scoring
using external norms, too.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3735">LUCENE-3735</a>: PayloadProcessorProvider was changed to return a
ReaderPayloadProcessor instead of DirPayloadProcessor. The selection
of the provider to return for the factory is now based on the IndexReader
to be merged. To mimic the old behaviour, just use IndexReader.directory()
for choosing the provider by Directory.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3765">LUCENE-3765</a>: Deprecated StopFilter ctor that took ignoreCase, because
in some cases (if the set is a CharArraySet), the argument is ignored.
Deprecated StandardAnalyzer and ClassicAnalyzer ctors that take File,
please use the Reader ctor instead.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3766">LUCENE-3766</a>: Deprecate no-arg ctors of Tokenizer. Tokenizers are
TokenStreams with Readers: tokenizers with null Readers will not be
supported in Lucene 4.0, just use a TokenStream.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3769">LUCENE-3769</a>: Simplified NRTManager by requiring applyDeletes to be
passed to ctor only; if an app needs to mix and match it's free to
create two NRTManagers (one always applying deletes and the other
never applying deletes).
<br /><span class="attrib">(MJB, Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3761">LUCENE-3761</a>: Generalize SearcherManager into an abstract ReferenceManager.
SearcherManager remains a concrete class, but due to the refactoring, the
method maybeReopen has been deprecated in favor of maybeRefresh().
<br /><span class="attrib">(Shai Erera, Mike McCandless, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3776">LUCENE-3776</a>: You now acquire/release the IndexSearcher directly from
NRTManager.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.0.new_features" href="javascript:toggleList('v3.6.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v3.6.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3593">LUCENE-3593</a>: Added a FieldValueFilter that accepts all documents that either
have at least one or no value at all in a specific field.
<br /><span class="attrib">(Simon Willnauer,
Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3586">LUCENE-3586</a>: CheckIndex and IndexUpgrader allow you to specify the
specific FSDirectory implementation to use (with the new -dir-impl
command-line option).
<br /><span class="attrib">(Luca Cavanna via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3634">LUCENE-3634</a>: IndexReader's static main method was moved to a new
tool, CompoundFileExtractor, in contrib/misc.
<br /><span class="attrib">(Robert Muir, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-995">LUCENE-995</a>: The QueryParser now interprets * as an open end for range
queries.  Literal asterisks may be represented by quoting or escaping
(i.e. \* or "*")  Custom QueryParser subclasses overriding getRangeQuery()
will be passed null for any open endpoint. (Ingo Renner, Adriano
Crestani, yonik, Mike McCandless
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3121">LUCENE-3121</a>: Add sugar reverse lookup (given an output, find the
input mapping to it) for FSTs that have strictly monotonic long
outputs (such as an ord).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3671">LUCENE-3671</a>: Add TypeTokenFilter that filters tokens based on
their TypeAttribute.
<br /><span class="attrib">(Tommaso Teofili via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3690">LUCENE-3690</a>,<a href="http://issues.apache.org/jira/browse/LUCENE-3913">LUCENE-3913</a>: Added HTMLStripCharFilter, a CharFilter that strips
HTML markup.
<br /><span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3725">LUCENE-3725</a>: Added optional packing to FST building; this uses extra
RAM during building but results in a smaller FST.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3714">LUCENE-3714</a>: Add top N shortest cost paths search for FST.
<br /><span class="attrib">(Robert Muir, Dawid Weiss, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3789">LUCENE-3789</a>: Expose MTQ TermsEnum via RewriteMethod for non package private
access
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3881">LUCENE-3881</a>: Added UAX29URLEmailAnalyzer: a standard analyzer that recognizes
URLs and emails.
<br /><span class="attrib">(Steve Rowe)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.0.bug_fixes" href="javascript:toggleList('v3.6.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(17)
    <ol id="v3.6.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3595">LUCENE-3595</a>: Fixed FieldCacheRangeFilter and FieldCacheTermsFilter
to correctly respect deletions on reopened SegmentReaders. Factored out
FieldCacheDocIdSet to be a top-level class.
<br /><span class="attrib">(Uwe Schindler, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3627">LUCENE-3627</a>: Don't let an errant 0-byte segments_N file corrupt the index.
<br /><span class="attrib">(Ken McCracken via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3630">LUCENE-3630</a>: The internal method MultiReader.doOpenIfChanged(boolean doClone)
was overriding IndexReader.doOpenIfChanged(boolean readOnly), so changing the
contract of the overridden method. This method was renamed and made private.
In ParallelReader the bug was not existent, but the implementation method
was also made private.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3641">LUCENE-3641</a>: Fixed MultiReader to correctly propagate readerFinishedListeners
to clones/reopened readers.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3642">LUCENE-3642</a>, <a href="http://issues.apache.org/jira/browse/SOLR-2891">SOLR-2891</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3717">LUCENE-3717</a>: Fixed bugs in CharTokenizer, n-gram tokenizers/filters,
compound token filters, thai word filter, icutokenizer, pattern analyzer,
wikipediatokenizer, and smart chinese where they would create invalid offsets in
some situations, leading to problems in highlighting.
<br /><span class="attrib">(Max Beutel, Edwin Steiner via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3639">LUCENE-3639</a>: TopDocs.merge was incorrectly setting TopDocs.maxScore to
Float.MIN_VALUE when it should be Float.NaN, when there were 0
hits.  Improved age calculation in SearcherLifetimeManager, to have
double precision and to compute age to be how long ago the searcher
was replaced with a new searcher
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3658">LUCENE-3658</a>: Corrected potential concurrency issues with
NRTCachingDir, fixed createOutput to overwrite any previous file,
and removed invalid asserts
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3605">LUCENE-3605</a>: don't sleep in a retry loop when trying to locate the
segments_N file
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3711">LUCENE-3711</a>: SentinelIntSet with a small initial size can go into
an infinite loop when expanded.  This can affect grouping using
TermAllGroupsCollector or TermAllGroupHeadsCollector if instantiated with a
non default small size.
<br /><span class="attrib">(Martijn van Groningen, yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3727">LUCENE-3727</a>: When writing stored fields and term vectors, Lucene
checks file sizes to detect a bug in some Sun JREs (<a href="http://issues.apache.org/jira/browse/LUCENE-1282">LUCENE-1282</a>),
however, on some NFS filesystems File.length() could be stale,
resulting in false errors like "fdx size mismatch while indexing".
These checks now use getFilePointer instead to avoid this.
<br /><span class="attrib">(Jamir Shaikh, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3816">LUCENE-3816</a>: Fixed problem in FilteredDocIdSet, if null was returned
from the delegate DocIdSet.iterator(), which is allowed to return
null by DocIdSet specification when no documents match.
<br /><span class="attrib">(Shay Banon via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3821">LUCENE-3821</a>: SloppyPhraseScorer missed documents that ExactPhraseScorer finds
When phrase query had repeating terms (e.g. "yes no yes")
sloppy query missed documents that exact query matched.
Fixed except when for repeating multiterms (e.g. "yes no yes|no").
<br /><span class="attrib">(Robert Muir, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3841">LUCENE-3841</a>: Fix CloseableThreadLocal to also purge stale entries on
get(); this fixes certain cases where we were holding onto objects
for dead threads for too long
<br /><span class="attrib">(Matthew Bellew, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3872">LUCENE-3872</a>: IndexWriter.close() now throws IllegalStateException if
you call it after calling prepareCommit() without calling commit()
first.
<br /><span class="attrib">(Tim Bogaert via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3874">LUCENE-3874</a>: Throw IllegalArgumentException from IndexWriter (rather
than producing a corrupt index), if a positionIncrement would cause
integer overflow. This can happen, for example when using a buggy
TokenStream that forgets to call clearAttributes() in combination
with a StopFilter.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3876">LUCENE-3876</a>: Fix bug where positions for a document exceeding
Integer.MAX_VALUE/2 would produce a corrupt index.
<br /><span class="attrib">(Simon Willnauer, Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3880">LUCENE-3880</a>: UAX29URLEmailTokenizer now recognizes emails when the mailto:
scheme is prepended.
<br /><span class="attrib">(Kai Gülzau, Steve Rowe)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.0.optimizations" href="javascript:toggleList('v3.6.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.6.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3653">LUCENE-3653</a>: Improve concurrency in VirtualMethod and AttributeSource by
using a WeakIdentityMap based on a ConcurrentHashMap.
<br /><span class="attrib">(Uwe Schindler,
Gerrit Jansen van Vuuren)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.0.documentation" href="javascript:toggleList('v3.6.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.6.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3597">LUCENE-3597</a>: Fixed incorrect grouping documentation.
<br /><span class="attrib">(Martijn van Groningen,
Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3926">LUCENE-3926</a>: Improve documentation of RAMDirectory, because this
class is not intended to work with huge indexes. Everything beyond
several hundred megabytes will waste resources (GC cycles), because
it uses an internal buffer size of 1024 bytes, producing millions of
byte[1024] arrays. This class is optimized for small memory-resident
indexes. It also has bad concurrency on multithreaded environments.
It is recommended to materialize large indexes on disk and use
MMapDirectory, which is a high-performance directory implementation
working directly on the file system cache of the operating system,
so copying data to Java heap space is not useful.
<br /><span class="attrib">(Uwe Schindler,
Mike McCandless, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v3.6.0.build" href="javascript:toggleList('v3.6.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v3.6.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3857">LUCENE-3857</a>: exceptions from other threads in beforeclass/etc do not fail
the test
<br /><span class="attrib">(Dawid Weiss)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3847">LUCENE-3847</a>: LuceneTestCase will now check for modifications of System
properties before and after each test (and suite). If changes are detected,
the test will fail. A rule can be used to reset system properties to
before-scope state (and this has been used to make Solr tests pass).
<br /><span class="attrib">(Dawid Weiss, Uwe Schindler)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3228">LUCENE-3228</a>: Stop downloading external javadoc package-list files:
<ul class="bulleted-list">
<li class="bulleted-list">
Added package-list files for Oracle Java javadocs and JUnit javadocs to
  Lucene/Solr subversion.
</li>
<p/>
<li class="bulleted-list">
The Oracle Java javadocs package-list file is excluded from Lucene and
  Solr source release packages.
</li>
<p/>
<li class="bulleted-list">
Regardless of network connectivity, javadocs built from a subversion
  checkout contain links to Oracle &amp; JUnit javadocs.
</li>
<p/>
<li class="bulleted-list">
Building javadocs from a source release package will download the Oracle
  Java package-list file if it isn't already present.
</li>
<p/>
<li class="bulleted-list">
When the Oracle Java package-list file is not present and download fails,
  the javadocs targets will not fail the build, though an error will appear
  in the build log.  In this case, the built javadocs will not contain links
  to Oracle Java javadocs.
</li>
<p/>
<li class="bulleted-list">
Links from Solr javadocs to Lucene's javadocs are enabled. When building
  a X.Y.Z-SNAPSHOT version, the links are to the most recently built nightly
  Jenkins javadocs. When building a release version, links are to the
  Lucene release javadocs for the same version.
</li>
</ul><span class="attrib">(Steve Rowe, hossman)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3753">LUCENE-3753</a>: Restructure the Lucene build system:
<ul class="bulleted-list">
<li class="bulleted-list">
Created a new Lucene-internal module named "core" by moving the java/
  and test/ directories from lucene/src/ to lucene/core/src/.
</li>
<li class="bulleted-list">
Eliminated lucene/src/ by moving all its directories up one level.
</li>
<li class="bulleted-list">
Each internal module (core/, test-framework/, and tools/) now has its own
  build.xml, from which it is possible to run module-specific targets.
  lucene/build.xml delegates all build tasks (via
  &lt;ant dir="internal-module-dir"&gt; calls) to these modules' build.xml files.
</li>
</ul>
<span class="attrib">(Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3774">LUCENE-3774</a>: Optimized and streamlined license and notice file validation
by refactoring the build task into an ANT task and modifying build scripts
to perform top-level checks.
<br /><span class="attrib">(Dawid Weiss, Steve Rowe, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3762">LUCENE-3762</a>: Upgrade JUnit to 4.10, refactor state-machine of detecting
setUp/tearDown call chaining in LuceneTestCase.
<br /><span class="attrib">(Dawid Weiss, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3944">LUCENE-3944</a>: Make the 'generate-maven-artifacts' target use filtered POMs
placed under lucene/build/poms/, rather than in each module's base
directory.  The 'clean' target now removes them.
<br /><span class="attrib">(Steve Rowe, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3930">LUCENE-3930</a>: Changed build system to use Apache Ivy for retrival of 3rd
party JAR files.  Please review BUILD.txt for instructions.
<br /><span class="attrib">(Robert Muir, Chris Male, Uwe Schindler, Steven Rowe, Hossman)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.5.0" href="javascript:toggleList('v3.5.0')">Release 3.5.0  [2011-11-27]</a></h3>
<ul id="v3.5.0.list">
  <li><a id="v3.5.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v3.5.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.5.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3390">LUCENE-3390</a>: The first approach in Lucene 3.4.0 for missing values
support for sorting had a design problem that made the missing value
be populated directly into the FieldCache arrays during sorting,
leading to concurrency issues. To fix this behaviour, the method
signatures had to be changed:
<ul class="bulleted-list">
<li class="bulleted-list">
FieldCache.getUnValuedDocs() was renamed to FieldCache.getDocsWithField()
  returning a Bits interface (backported from Lucene 4.0).
</li>
<li class="bulleted-list">
FieldComparator.setMissingValue() was removed and added to
  constructor
</li>
</ul>
As this is expert API, most code will not be affected.
<br /><span class="attrib">(Uwe Schindler, Doron Cohen, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3541">LUCENE-3541</a>: Remove IndexInput's protected copyBuf. If you want to
keep a buffer in your IndexInput, do this yourself in your implementation,
and be sure to do the right thing on clone()!
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2822">LUCENE-2822</a>: TimeLimitingCollector now expects a counter clock instead of
relying on a private daemon thread. The global time limiting clock thread
has been exposed and is now lazily loaded and fully optional.
TimeLimitingCollector now supports setting clock baseline manually to include
prelude of a search. Previous versions set the baseline on construction time,
now baseline is set once the first IndexReader is passed to the collector
unless set before.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
  <li><a id="v3.5.0.changes_in_runtime_behavior" href="javascript:toggleList('v3.5.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.5.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3520">LUCENE-3520</a>: IndexReader.openIfChanged, when passed a near-real-time
reader, will now return null if there are no changes.  The API has
always reserved the right to do this; it's just that in the past for
near-real-time readers it never did.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.5.0.bug_fixes" href="javascript:toggleList('v3.5.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v3.5.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3412">LUCENE-3412</a>: SloppyPhraseScorer was returning non-deterministic results
for queries with many repeats
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3421">LUCENE-3421</a>: PayloadTermQuery's explain was wrong when includeSpanScore=false.
<br /><span class="attrib">(Edward Drapkin via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3432">LUCENE-3432</a>: IndexWriter.expungeDeletes with TieredMergePolicy
should ignore the maxMergedSegmentMB setting
<br /><span class="attrib">(v.sevel via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3442">LUCENE-3442</a>: TermQuery.TermWeight.scorer() returns null for non-atomic
IndexReaders (optimization bug, introcuced by <a href="http://issues.apache.org/jira/browse/LUCENE-2829">LUCENE-2829</a>), preventing
QueryWrapperFilter and similar classes to get a top-level DocIdSet.
<br /><span class="attrib">(Dan C., Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3390">LUCENE-3390</a>: Corrected handling of missing values when two parallel searches
using different missing values for sorting: the missing value was populated
directly into the FieldCache arrays during sorting, leading to concurrency
issues.
<br /><span class="attrib">(Uwe Schindler, Doron Cohen, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3439">LUCENE-3439</a>: Closing an NRT reader after the writer was closed was
incorrectly invoking the DeletionPolicy and (then possibly deleting
files) on the closed IndexWriter
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3215">LUCENE-3215</a>: SloppyPhraseScorer sometimes computed Infinite freq
<br /><span class="attrib">(Robert Muir, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3503">LUCENE-3503</a>: DisjunctionSumScorer would give slightly different scores
for a document depending if you used nextDoc() versus advance().
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3529">LUCENE-3529</a>: Properly support indexing an empty field with empty term text.
Previously, if you had assertions enabled you would receive an error during
flush, if you didn't, you would get an invalid index.
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2633">LUCENE-2633</a>: PackedInts Packed32 and Packed64 did not support internal
structures larger than 256MB
<br /><span class="attrib">(Toke Eskildsen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3540">LUCENE-3540</a>: <a href="http://issues.apache.org/jira/browse/LUCENE-3255">LUCENE-3255</a> dropped support for pre-1.9 indexes, but the
error message in IndexFormatTooOldException was incorrect.
<br /><span class="attrib">(Uwe Schindler,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3541">LUCENE-3541</a>: IndexInput's default copyBytes() implementation was not safe
across multiple threads, because all clones shared the same buffer.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3548">LUCENE-3548</a>: Fix CharsRef#append to extend length of the existing char[]
and preserve existing chars.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3582">LUCENE-3582</a>: Normalize NaN values in NumericUtils.floatToSortableInt() /
NumericUtils.doubleToSortableLong(), so this is consistent with stored
fields. Also fix NumericRangeQuery to not falsely hit NaNs on half-open
ranges (one bound is null). Because of normalization, NumericRangeQuery
can now be used to hit NaN values by creating a query with
upper == lower == NaN (inclusive).
<br /><span class="attrib">(Dawid Weiss, Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v3.5.0.api_changes" href="javascript:toggleList('v3.5.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v3.5.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3454">LUCENE-3454</a>: Rename IndexWriter.optimize to forceMerge to discourage
use of this method since it is horribly costly and rarely justified
anymore.  MergePolicy.findMergesForOptimize was renamed to
findForcedMerges.  IndexReader.isOptimized was
deprecated. IndexCommit.isOptimized was replaced with
getSegmentCount.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3205">LUCENE-3205</a>: Deprecated MultiTermQuery.getTotalNumerOfTerms() [and
related methods], as the numbers returned are not useful
for multi-segment indexes. They were only needed for tests of
NumericRangeQuery.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3574">LUCENE-3574</a>: Deprecate outdated constants in org.apache.lucene.util.Constants
and add new ones for Java 6 and Java 7.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3571">LUCENE-3571</a>: Deprecate IndexSearcher(Directory). Use the constructors
that take IndexReader instead.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3577">LUCENE-3577</a>: Rename IndexWriter.expungeDeletes to forceMergeDeletes,
and revamped the javadocs, to discourage
use of this method since it is horribly costly and rarely
justified.  MergePolicy.findMergesToExpungeDeletes was renamed to
findForcedDeletesMerges.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3464">LUCENE-3464</a>: IndexReader.reopen has been renamed to
IndexReader.openIfChanged (a static method), and now returns null
(instead of the old reader) if there are no changes in the index, to
prevent the common pitfall of accidentally closing the old reader.
<p/>
</li>
    </ol>
  </li>
  <li><a id="v3.5.0.new_features" href="javascript:toggleList('v3.5.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v3.5.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3448">LUCENE-3448</a>: Added FixedBitSet.and(other/DISI), andNot(other/DISI).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2215">LUCENE-2215</a>: Added IndexSearcher.searchAfter which returns results after a
specified ScoreDoc (e.g. last document on the previous page) to support deep
paging use cases.
<br /><span class="attrib">(Aaron McCurry, Grant Ingersoll, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1990">LUCENE-1990</a>: Adds internal packed ints implementation, to be used
for more efficient storage of int arrays when the values are
bounded, for example for storing the terms dict index
<br /><span class="attrib">(Toke
Eskildsen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3558">LUCENE-3558</a>: Moved SearcherManager, NRTManager &amp; SearcherLifetimeManager into
core. All classes are contained in o.a.l.search.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
  <li><a id="v3.5.0.optimizations" href="javascript:toggleList('v3.5.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v3.5.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3426">LUCENE-3426</a>: Add NGramPhraseQuery which extends PhraseQuery and tries to
reduce the number of terms of the query when rewrite(), in order to improve
performance.
<br /><span class="attrib">(Robert Muir, Koji Sekiguchi)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3494">LUCENE-3494</a>: Optimize FilteredQuery to remove a multiply in score()
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3534">LUCENE-3534</a>: Remove filter logic from IndexSearcher and delegate to
FilteredQuery's Scorer. This is a partial backport of a cleanup in
FilteredQuery/IndexSearcher added by <a href="http://issues.apache.org/jira/browse/LUCENE-1536">LUCENE-1536</a> to Lucene 4.0.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2205">LUCENE-2205</a>: Very substantial (3-5X) RAM reduction required to hold
the terms index on opening an IndexReader
<br /><span class="attrib">(Aaron McCurry via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3443">LUCENE-3443</a>: FieldCache can now set docsWithField, and create an
array, in a single pass.  This results in faster init time for apps
that need both (such as sorting by a field with a missing value).
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.5.0.test_cases" href="javascript:toggleList('v3.5.0.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.5.0.test_cases.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3420">LUCENE-3420</a>: Disable the finalness checks in TokenStream and Analyzer
for implementing subclasses in different packages, where assertions are not
enabled.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3506">LUCENE-3506</a>: tests relying on assertions being enabled were no-op because
they ignored AssertionError. With this fix now entire test framework
(every test) fails if assertions are disabled, unless
<ul class="bulleted-list">
<li class="bulleted-list">
Dtests.asserts.gracious=true is specified.
<br /><span class="attrib">(Doron Cohen)</span></li>
</ul>
<p/>
</li>
    </ol>
  </li>
  <li><a id="v3.5.0.build" href="javascript:toggleList('v3.5.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.5.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/SOLR-2849">SOLR-2849</a>: Fix dependencies in Maven POMs.
<br /><span class="attrib">(David Smiley via Steve Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3561">LUCENE-3561</a>: Fix maven xxx-src.jar files that were missing resources.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.4.0" href="javascript:toggleList('v3.4.0')">Release 3.4.0  [2011-09-14]</a></h3>
<ul id="v3.4.0.list">
  <li><a id="v3.4.0.bug_fixes" href="javascript:toggleList('v3.4.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v3.4.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3251">LUCENE-3251</a>: Directory#copy failed to close target output if opening the
source stream failed.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3255">LUCENE-3255</a>: If segments_N file is all zeros (due to file
corruption), don't read that to mean the index is empty.
<br /><span class="attrib">(Gregory
Tarr, Mark Harwood, Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3254">LUCENE-3254</a>: Fixed minor bug in deletes were written to disk,
causing the file to sometimes be larger than it needed to be.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3224">LUCENE-3224</a>: Fixed a big where CheckIndex would incorrectly report a
corrupt index if a term with docfreq &gt;= 16 was indexed more than once
at the same position.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3339">LUCENE-3339</a>: Fixed deadlock case when multiple threads use the new
block-add (IndexWriter.add/updateDocuments) methods.
<br /><span class="attrib">(Robert Muir,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3340">LUCENE-3340</a>: Fixed case where IndexWriter was not flushing at
exactly maxBufferedDeleteTerms
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3358">LUCENE-3358</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3361">LUCENE-3361</a>: StandardTokenizer and UAX29URLEmailTokenizer
wrongly discarded combining marks attached to Han or Hiragana characters,
this is fixed if you supply Version &gt;= 3.4 If you supply a previous
lucene version, you get the old buggy behavior for backwards compatibility.
<br /><span class="attrib">(Trejkaz, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3368">LUCENE-3368</a>: IndexWriter commits segments without applying their buffered
deletes when flushing concurrently.
<br /><span class="attrib">(Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3365">LUCENE-3365</a>: Create or Append mode determined before obtaining write lock
can cause IndexWriter overriding an existing index.
<br /><span class="attrib">(Geoff Cooney via Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3380">LUCENE-3380</a>: Fixed a bug where FileSwitchDirectory's listAll() would wrongly
throw NoSuchDirectoryException when all files written so far have been
written to one directory, but the other still has not yet been created on the
filesystem.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3409">LUCENE-3409</a>: IndexWriter.deleteAll was failing to close pooled NRT
SegmentReaders, leading to unused files accumulating in the
Directory.
<br /><span class="attrib">(tal steier via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3418">LUCENE-3418</a>: Lucene was failing to fsync index files on commit,
meaning an operating system or hardware crash, or power loss, could
easily corrupt the index.
<br /><span class="attrib">(Mark Miller, Robert Muir, Mike
McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.4.0.new_features" href="javascript:toggleList('v3.4.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v3.4.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3290">LUCENE-3290</a>: Added FieldInvertState.numUniqueTerms
<br /><span class="attrib">(Mike McCandless, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3280">LUCENE-3280</a>: Add FixedBitSet, like OpenBitSet but is not elastic
(grow on demand if you set/get/clear too-large indices).
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2048">LUCENE-2048</a>: Added the ability to omit positions but still index
term frequencies, you can now control what is indexed into
the postings via AbstractField.setIndexOptions:
 DOCS_ONLY: only documents are indexed: term frequencies and positions are omitted
 DOCS_AND_FREQS: only documents and term frequencies are indexed: positions are omitted
 DOCS_AND_FREQS_AND_POSITIONS: full postings: documents, frequencies, and positions
AbstractField.setOmitTermFrequenciesAndPositions is deprecated,
you should use DOCS_ONLY instead.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3097">LUCENE-3097</a>: Added a new grouping collector that can be used to retrieve all most relevant
documents per group. This can be useful in situations when one wants to compute grouping
based facets / statistics on the complete query result.
<br /><span class="attrib">(Martijn van Groningen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3334">LUCENE-3334</a>: If Java7 is detected, IOUtils.closeSafely() will log
suppressed exceptions in the original exception, so stack trace
will contain them.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v3.4.0.optimizations" href="javascript:toggleList('v3.4.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.4.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3201">LUCENE-3201</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3218">LUCENE-3218</a>: CompoundFileSystem code has been consolidated
into a Directory implementation. Reading is optimized for MMapDirectory,
NIOFSDirectory and SimpleFSDirectory to only map requested parts of the
CFS into an IndexInput. Writing to a CFS now tries to append to the CF
directly if possible and merges separately written files on the fly instead
of during close.
<br /><span class="attrib">(Simon Willnauer, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3289">LUCENE-3289</a>: When building an FST you can now tune how aggressively
the FST should try to share common suffixes.  Typically you can
greatly reduce RAM required during building, and CPU consumed, at
the cost of a somewhat larger FST.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.4.0.test_cases" href="javascript:toggleList('v3.4.0.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.4.0.test_cases.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3327">LUCENE-3327</a>: Fix AIOOBE when TestFSTs is run with -Dtests.verbose=true
<br /><span class="attrib">(James Dyer via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.4.0.build" href="javascript:toggleList('v3.4.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.4.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3406">LUCENE-3406</a>: Add ant target 'package-local-src-tgz' to Lucene and Solr
to package sources from the local working copy.
<br /><span class="attrib">(Seung-Yeoul Yang via Steve Rowe)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.3.0" href="javascript:toggleList('v3.3.0')">Release 3.3.0  [2011-07-01]</a></h3>
<ul id="v3.3.0.list">
  <li><a id="v3.3.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v3.3.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v3.3.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3140">LUCENE-3140</a>: IndexOutput.copyBytes now takes a DataInput (superclass
of IndexInput) as its first argument.
<br /><span class="attrib">(Robert Muir, Dawid Weiss,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3191">LUCENE-3191</a>: FieldComparator.value now returns an Object not
Comparable; FieldDoc.fields also changed from Comparable[] to
Object[]
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3208">LUCENE-3208</a>: Made deprecated methods Query.weight(Searcher) and
Searcher.createWeight() final to prevent override. If you have
overridden one of these methods, cut over to the non-deprecated
implementation.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3238">LUCENE-3238</a>: Made MultiTermQuery.rewrite() final, to prevent
problems (such as not properly setting rewrite methods, or
not working correctly with things like SpanMultiTermQueryWrapper).
To rewrite to a simpler form, instead return a simpler enum
from getEnum(IndexReader). For example, to rewrite to a single term,
return a SingleTermEnum.
<br /><span class="attrib">(ludovic Boutros, Uwe Schindler, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v3.3.0.changes_in_runtime_behavior" href="javascript:toggleList('v3.3.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v3.3.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2834">LUCENE-2834</a>: the hash used to compute the lock file name when the
lock file is not stored in the index has changed.  This means you
will see a different lucene-XXX-write.lock in your lock directory.
<br /><span class="attrib">(Robert Muir, Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3146">LUCENE-3146</a>: IndexReader.setNorm throws IllegalStateException if the field
does not store norms.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3198">LUCENE-3198</a>: On Linux, if the JRE is 64 bit and supports unmapping,
FSDirectory.open now defaults to MMapDirectory instead of
NIOFSDirectory since MMapDirectory gives better performance.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3200">LUCENE-3200</a>: MMapDirectory now uses chunk sizes that are powers of 2.
When setting the chunk size, it is rounded down to the next possible
value. The new default value for 64 bit platforms is 2^30 (1 GiB),
for 32 bit platforms it stays unchanged at 2^28 (256 MiB).
Internally, MMapDirectory now only uses one dedicated final IndexInput
implementation supporting multiple chunks, which makes Hotspot's life
easier.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.3.0.bug_fixes" href="javascript:toggleList('v3.3.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v3.3.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3147">LUCENE-3147</a>,<a href="http://issues.apache.org/jira/browse/LUCENE-3152">LUCENE-3152</a>: Fixed open file handles leaks in many places in the
code. Now MockDirectoryWrapper (in test-framework) tracks all open files,
including locks, and fails if the test fails to release all of them.
<br /><span class="attrib">(Mike McCandless, Robert Muir, Shai Erera, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3102">LUCENE-3102</a>: CachingCollector.replay was failing to call setScorer
per-segment
<br /><span class="attrib">(Martijn van Groningen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3183">LUCENE-3183</a>: Fix rare corner case where seeking to empty term
(field="", term="") with terms index interval 1 could hit
ArrayIndexOutOfBoundsException
<br /><span class="attrib">(selckin, Robert Muir, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3208">LUCENE-3208</a>: IndexSearcher had its own private similarity field
and corresponding get/setter overriding Searcher's implementation. If you
setted a different Similarity instance on IndexSearcher, methods implemented
in the superclass Searcher were not using it, leading to strange bugs.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3197">LUCENE-3197</a>: Fix core merge policies to not over-merge during
background optimize when documents are still being deleted
concurrently with the optimize
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3222">LUCENE-3222</a>: The RAM accounting for buffered delete terms was
failing to measure the space required to hold the term's field and
text character data.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3238">LUCENE-3238</a>: Fixed bug where using WildcardQuery("prefix*") inside
of a SpanMultiTermQueryWrapper rewrote incorrectly and returned
an error instead.
<br /><span class="attrib">(ludovic Boutros, Uwe Schindler, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v3.3.0.api_changes" href="javascript:toggleList('v3.3.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.3.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3208">LUCENE-3208</a>: Renamed protected IndexSearcher.createWeight() to expert
public method IndexSearcher.createNormalizedWeight() as this better describes
what this method does. The old method is still there for backwards
compatibility. Query.weight() was deprecated and simply delegates to
IndexSearcher. Both deprecated methods will be removed in Lucene 4.0.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3197">LUCENE-3197</a>: MergePolicy.findMergesForOptimize now takes
Map&lt;SegmentInfo,Boolean&gt; instead of Set&lt;SegmentInfo&gt; as the second
argument, so the merge policy knows which segments were originally
present vs produced by an optimizing merge
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.3.0.optimizations" href="javascript:toggleList('v3.3.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.3.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1736">LUCENE-1736</a>: DateTools.java general improvements.
<br /><span class="attrib">(David Smiley via Steve Rowe)</span></li>
    </ol>
  </li>
  <li><a id="v3.3.0.new_features" href="javascript:toggleList('v3.3.0.new_features')">New Features</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v3.3.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3140">LUCENE-3140</a>: Added experimental FST implementation to Lucene.
<br /><span class="attrib">(Robert Muir, Dawid Weiss, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3193">LUCENE-3193</a>: A new TwoPhaseCommitTool allows running a 2-phase commit
algorithm over objects that implement the new TwoPhaseCommit interface (such
as IndexWriter).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3191">LUCENE-3191</a>: Added TopDocs.merge, to facilitate merging results from
different shards
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3179">LUCENE-3179</a>: Added OpenBitSet.prevSetBit
<br /><span class="attrib">(Paul Elschot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3210">LUCENE-3210</a>: Made TieredMergePolicy more aggressive in reclaiming
segments with deletions; added new methods
set/getReclaimDeletesWeight to control this.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.3.0.build" href="javascript:toggleList('v3.3.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.3.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1344">LUCENE-1344</a>: Create OSGi bundle using dev-tools/maven.
<br /><span class="attrib">(Nicolas Lalevée, Luca Stancapiano via ryan)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3204">LUCENE-3204</a>: The maven-ant-tasks jar is now included in the source tree;
users of the generate-maven-artifacts target no longer have to manually
place this jar in the Ant classpath.  NOTE: when Ant looks for the
maven-ant-tasks jar, it looks first in its pre-existing classpath, so
any copies it finds will be used instead of the copy included in the
Lucene/Solr source tree.  For this reason, it is recommeded to remove
any copies of the maven-ant-tasks jar in the Ant classpath, e.g. under
~/.ant/lib/ or under the Ant installation's lib/ directory.
<br /><span class="attrib">(Steve Rowe)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.2.0" href="javascript:toggleList('v3.2.0')">Release 3.2.0  [2011-06-03]</a></h3>
<ul id="v3.2.0.list">
  <li><a id="v3.2.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v3.2.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.2.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2953">LUCENE-2953</a>: PriorityQueue's internal heap was made private, as subclassing
with generics can lead to ClassCastException. For advanced use (e.g. in Solr)
a method getHeapArray() was added to retrieve the internal heap array as a
non-generic Object[].
<br /><span class="attrib">(Uwe Schindler, Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1076">LUCENE-1076</a>: IndexWriter.setInfoStream now throws IOException
<br /><span class="attrib">(Mike McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3084">LUCENE-3084</a>: MergePolicy.OneMerge.segments was changed from
SegmentInfos to a List&lt;SegmentInfo&gt;. SegmentInfos itself was changed
to no longer extend Vector&lt;SegmentInfo&gt; (to update code that is using
Vector-API, use the new asList() and asSet() methods returning unmodifiable
collections; modifying SegmentInfos is now only possible through
the explicitely declared methods). IndexWriter.segString() now takes
Iterable&lt;SegmentInfo&gt; instead of List&lt;SegmentInfo&gt;. A simple recompile
should fix this. MergePolicy and SegmentInfos are internal/experimental
APIs not covered by the strict backwards compatibility policy.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.2.0.changes_in_runtime_behavior" href="javascript:toggleList('v3.2.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.2.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3065">LUCENE-3065</a>: When a NumericField is retrieved from a Document loaded
from IndexReader (or IndexSearcher), it will now come back as
NumericField not as a Field with a string-ified version of the
numeric value you had indexed.  Note that this only applies for
newly-indexed Documents; older indices will still return Field
with the string-ified numeric value. If you call Document.get(),
the value comes still back as String, but Document.getFieldable()
returns NumericField instances.
<br /><span class="attrib">(Uwe Schindler, Ryan McKinley,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1076">LUCENE-1076</a>: Changed the default merge policy from
LogByteSizeMergePolicy to TieredMergePolicy, as of Version.LUCENE_32
(passed to IndexWriterConfig), which is able to merge non-contiguous
segments. This means docIDs no longer necessarily stay "in order"
during indexing.  If this is a problem then you can use either of
the LogMergePolicy impls.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.2.0.new_features" href="javascript:toggleList('v3.2.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v3.2.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3082">LUCENE-3082</a>: Added index upgrade tool oal.index.IndexUpgrader
that allows to upgrade all segments to last recent supported index
format without fully optimizing.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1076">LUCENE-1076</a>: Added TieredMergePolicy which is able to merge non-contiguous
segments, which means docIDs no longer necessarily stay "in order".
<br /><span class="attrib">(Mike McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3071">LUCENE-3071</a>: Adding ReversePathHierarchyTokenizer, added skip parameter to
PathHierarchyTokenizer
<br /><span class="attrib">(Olivier Favre via ryan)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1421">LUCENE-1421</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-3102">LUCENE-3102</a>: added CachingCollector which allow you to cache
document IDs and scores encountered during the search, and "replay" them to
another Collector.
<br /><span class="attrib">(Mike McCandless, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3112">LUCENE-3112</a>: Added experimental IndexWriter.add/updateDocuments,
enabling a block of documents to be indexed, atomically, with
guaranteed sequential docIDs.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.2.0.api_changes" href="javascript:toggleList('v3.2.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.2.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3061">LUCENE-3061</a>: IndexWriter's getNextMerge() and merge(OneMerge) are now public
(though @lucene.experimental), allowing for custom MergeScheduler
implementations.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3065">LUCENE-3065</a>: Document.getField() was deprecated, as it throws
ClassCastException when loading lazy fields or NumericFields.
<br /><span class="attrib">(Uwe Schindler, Ryan McKinley, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2027">LUCENE-2027</a>: Directory.touchFile is deprecated and will be removed
in 4.0.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.2.0.optimizations" href="javascript:toggleList('v3.2.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.2.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2990">LUCENE-2990</a>: ArrayUtil/CollectionUtil.*Sort() methods now exit early
on empty or one-element lists/arrays.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2897">LUCENE-2897</a>: Apply deleted terms while flushing a segment.  We still
buffer deleted terms to later apply to past segments.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3126">LUCENE-3126</a>: IndexWriter.addIndexes copies incoming segments into CFS if they
aren't already and MergePolicy allows that.
<br /><span class="attrib">(Shai Erera)</span></li>
    </ol>
  </li>
  <li><a id="v3.2.0.bug_fixes" href="javascript:toggleList('v3.2.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v3.2.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2996">LUCENE-2996</a>: addIndexes(IndexReader) did not flush before adding the new
indexes, causing existing deletions to be applied on the incoming indexes as
well.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3024">LUCENE-3024</a>: Index with more than 2.1B terms was hitting AIOOBE when
seeking TermEnum (eg used by Solr's faceting)
<br /><span class="attrib">(Tom Burton-West, Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3042">LUCENE-3042</a>: When a filter or consumer added Attributes to a TokenStream
chain after it was already (partly) consumed [or clearAttributes(),
captureState(), cloneAttributes(),... was called by the Tokenizer],
the Tokenizer calling clearAttributes() or capturing state after addition
may not do this on the newly added Attribute. This bug affected only
very special use cases of the TokenStream-API, most users would not
have recognized it.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3054">LUCENE-3054</a>: PhraseQuery can in some cases stack overflow in
SorterTemplate.quickSort(). This fix also adds an optimization to
PhraseQuery as term with lower doc freq will also have less positions.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3068">LUCENE-3068</a>: sloppy phrase query failed to match valid documents when multiple
query terms had same position in the query.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3012">LUCENE-3012</a>: Lucene writes the header now for separate norm files (*.sNNN)
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v3.2.0.build" href="javascript:toggleList('v3.2.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.2.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3006">LUCENE-3006</a>: Building javadocs will fail on warnings by default.
Override with -Dfailonjavadocwarning=false
<br /><span class="attrib">(sarowe, gsingers)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3128">LUCENE-3128</a>: "ant eclipse" creates a .project file for easier Eclipse
integration (unless one already exists).
<br /><span class="attrib">(Daniel Serodio via Shai Erera)</span></li>
    </ol>
  </li>
  <li><a id="v3.2.0.test_cases" href="javascript:toggleList('v3.2.0.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v3.2.0.test_cases.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3002">LUCENE-3002</a>: added 'tests.iter.min' to control 'tests.iter' by allowing to
stop iterating if at least 'tests.iter.min' ran and a failure occured.
<br /><span class="attrib">(Shai Erera, Chris Hostetter)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.1.0" href="javascript:toggleList('v3.1.0')">Release 3.1.0  [2011-03-31]</a></h3>
<ul id="v3.1.0.list">
  <li><a id="v3.1.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v3.1.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(18)
    <ol id="v3.1.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2719">LUCENE-2719</a>: Changed API of internal utility class
org.apache.lucene.util.SorterTemplate to support faster quickSort using
pivot values and also merge sort and insertion sort. If you have used
this class, you have to implement two more methods for handling pivots.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1923">LUCENE-1923</a>: Renamed SegmentInfo &amp; SegmentInfos segString method to
toString.  These are advanced APIs and subject to change suddenly.
<br /><span class="attrib">(Tim Smith via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2190">LUCENE-2190</a>: Removed deprecated customScore() and customExplain()
methods from experimental CustomScoreQuery.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2286">LUCENE-2286</a>: Enabled DefaultSimilarity.setDiscountOverlaps by default.
This means that terms with a position increment gap of zero do not
affect the norms calculation by default.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2320">LUCENE-2320</a>: MergePolicy.writer is now of type SetOnce, which allows setting
the IndexWriter for a MergePolicy exactly once. You can change references to
'writer' from <code>writer.doXYZ()</code> to <code>writer.get().doXYZ()</code>
(it is also advisable to add an <code>assert writer != null;</code> before you
access the wrapped IndexWriter.)
<p/>
In addition, MergePolicy only exposes a default constructor, and the one that
took IndexWriter as argument has been removed from all MergePolicy extensions.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2328">LUCENE-2328</a>: SimpleFSDirectory.SimpleFSIndexInput is moved to
FSDirectory.FSIndexInput. Anyone extending this class will have to
fix their code on upgrading.
<br /><span class="attrib">(Earwin Burrfoot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2302">LUCENE-2302</a>: The new interface for term attributes, CharTermAttribute,
now implements CharSequence. This requires the toString() methods of
CharTermAttribute, deprecated TermAttribute, and Token to return only
the term text and no other attribute contents. <a href="http://issues.apache.org/jira/browse/LUCENE-2374">LUCENE-2374</a> implements
an attribute reflection API to no longer rely on toString() for attribute
inspection.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2372">LUCENE-2372</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2389">LUCENE-2389</a>: StandardAnalyzer, KeywordAnalyzer,
PerFieldAnalyzerWrapper, WhitespaceTokenizer are now final.  Also removed
the now obsolete and deprecated Analyzer.setOverridesTokenStreamMethod().
Analyzer and TokenStream base classes now have an assertion in their ctor,
that check subclasses to be final or at least have final implementations
of incrementToken(), tokenStream(), and reusableTokenStream().
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2316">LUCENE-2316</a>: Directory.fileLength contract was clarified - it returns the
actual file's length if the file exists, and throws FileNotFoundException
otherwise. Returning length=0 for a non-existent file is no longer allowed. If
you relied on that, make sure to catch the exception.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2386">LUCENE-2386</a>: IndexWriter no longer performs an empty commit upon new index
creation. Previously, if you passed an empty Directory and set OpenMode to
CREATE*, IndexWriter would make a first empty commit. If you need that
behavior you can call writer.commit()/close() immediately after you create it.
<br /><span class="attrib">(Shai Erera, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2733">LUCENE-2733</a>: Removed public constructors of utility classes with only static
methods to prevent instantiation.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2602">LUCENE-2602</a>: The default (LogByteSizeMergePolicy) merge policy now
takes deletions into account by default.  You can disable this by
calling setCalibrateSizeByDeletes(false) on the merge policy.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2529">LUCENE-2529</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2668">LUCENE-2668</a>: Position increment gap and offset gap of empty
values in multi-valued field has been changed for some cases in index.
If you index empty fields and uses positions/offsets information on that
fields, reindex is recommended.
<br /><span class="attrib">(David Smiley, Koji Sekiguchi)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2804">LUCENE-2804</a>: Directory.setLockFactory new declares throwing an IOException.
<br /><span class="attrib">(Shai Erera, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2837">LUCENE-2837</a>: Added deprecations noting that in 4.0, Searcher and
Searchable are collapsed into IndexSearcher; contrib/remote and
MultiSearcher have been removed.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2854">LUCENE-2854</a>: Deprecated SimilarityDelegator and
Similarity.lengthNorm; the latter is now final, forcing any custom
Similarity impls to cutover to the more general computeNorm
<br /><span class="attrib">(Robert
Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2869">LUCENE-2869</a>: Deprecated Query.getSimilarity: instead of using
"runtime" subclassing/delegation, subclass the Weight instead.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2674">LUCENE-2674</a>: A new idfExplain method was added to Similarity, that
accepts an incoming docFreq.  If you subclass Similarity, make sure
you also override this method on upgrade.
<br /><span class="attrib">(Robert Muir, Mike
McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.1.0.changes_in_runtime_behavior" href="javascript:toggleList('v3.1.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(13)
    <ol id="v3.1.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1923">LUCENE-1923</a>: Made IndexReader.toString() produce something
meaningful
<br /><span class="attrib">(Tim Smith via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2179">LUCENE-2179</a>: CharArraySet.clear() is now functional.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2455">LUCENE-2455</a>: IndexWriter.addIndexes no longer optimizes the target index
before it adds the new ones. Also, the existing segments are not merged and so
the index will not end up with a single segment (unless it was empty before).
In addition, addIndexesNoOptimize was renamed to addIndexes and no longer
invokes a merge on the incoming and target segments, but instead copies the
segments to the target index. You can call maybeMerge or optimize after this
method completes, if you need to.
<p/>
In addition, Directory.copyTo* were removed in favor of copy which takes the
target Directory, source and target files as arguments, and copies the source
file to the target Directory under the target file name.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2663">LUCENE-2663</a>: IndexWriter no longer forcefully clears any existing
locks when create=true.  This was a holdover from when
SimpleFSLockFactory was the default locking implementation, and,
even then it was dangerous since it could mask bugs in IndexWriter's
usage, allowing applications to accidentally open two writers on the
same directory.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2701">LUCENE-2701</a>: maxMergeMBForOptimize and maxMergeDocs constraints set on
LogMergePolicy now affect optimize() as well (as opposed to only regular
merges). This means that you can run optimize() and too large segments won't
be merged.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2753">LUCENE-2753</a>: IndexReader and DirectoryReader .listCommits() now return a List,
guaranteeing the commits are sorted from oldest to latest.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2785">LUCENE-2785</a>: TopScoreDocCollector, TopFieldCollector and
the IndexSearcher search methods that take an int nDocs will now
throw IllegalArgumentException if nDocs is 0.  Instead, you should
use the newly added TotalHitCountCollector.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2790">LUCENE-2790</a>: LogMergePolicy.useCompoundFile's logic now factors in noCFSRatio
to determine whether the passed in segment should be compound.
<br /><span class="attrib">(Shai Erera, Earwin Burrfoot)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2805">LUCENE-2805</a>: IndexWriter now increments the index version on every change to
the index instead of for every commit. Committing or closing the IndexWriter
without any changes to the index will not cause any index version increment.
<br /><span class="attrib">(Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2650">LUCENE-2650</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2825">LUCENE-2825</a>: The behavior of FSDirectory.open has changed. On 64-bit
Windows and Solaris systems that support unmapping, FSDirectory.open returns
MMapDirectory. Additionally the behavior of MMapDirectory has been
changed to enable unmapping by default if supported by the JRE.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2829">LUCENE-2829</a>: Improve the performance of "primary key" lookup use
case (running a TermQuery that matches one document) on a
multi-segment index.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2010">LUCENE-2010</a>: Segments with 100% deleted documents are now removed on
IndexReader or IndexWriter commit.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2960">LUCENE-2960</a>: Allow some changes to IndexWriterConfig to take effect
"live" (after an IW is instantiated), via
IndexWriter.getConfig().setXXX(...)
<br /><span class="attrib">(Shay Banon, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.1.0.api_changes" href="javascript:toggleList('v3.1.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(26)
    <ol id="v3.1.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2076">LUCENE-2076</a>: Rename FSDirectory.getFile -&gt; getDirectory.
<br /><span class="attrib">(George
Aroush via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1260">LUCENE-1260</a>: Change norm encode (float-&gt;byte) and decode
(byte-&gt;float) to be instance methods not static methods.  This way a
custom Similarity can alter how norms are encoded, though they must
still be encoded as a single byte
<br /><span class="attrib">(Johan Kindgren via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2103">LUCENE-2103</a>: NoLockFactory should have a private constructor;
until Lucene 4.0 the default one will be deprecated.
<br /><span class="attrib">(Shai Erera via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2177">LUCENE-2177</a>: Deprecate the Field ctors that take byte[] and Store.
Since the removal of compressed fields, Store can only be YES, so
it's not necessary to specify.
<br /><span class="attrib">(Erik Hatcher via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2200">LUCENE-2200</a>: Several final classes had non-overriding protected
members. These were converted to private and unused protected
constructors removed.
<br /><span class="attrib">(Steven Rowe via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2240">LUCENE-2240</a>: SimpleAnalyzer and WhitespaceAnalyzer now have
Version ctors.
<br /><span class="attrib">(Simon Willnauer via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2259">LUCENE-2259</a>: Add IndexWriter.deleteUnusedFiles, to attempt removing
unused files.  This is only useful on Windows, which prevents
deletion of open files. IndexWriter will eventually remove these
files itself; this method just lets you do so when you know the
files are no longer open by IndexReaders.
<br /><span class="attrib">(luocanrao via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2282">LUCENE-2282</a>: IndexFileNames is exposed as a public class allowing for easier
use by external code. In addition it offers a matchExtension method which
callers can use to query whether a certain file matches a certain extension.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-124">LUCENE-124</a>: Add a TopTermsBoostOnlyBooleanQueryRewrite to MultiTermQuery.
This rewrite method is similar to TopTermsScoringBooleanQueryRewrite, but
only scores terms by their boost values. For example, this can be used
with FuzzyQuery to ensure that exact matches are always scored higher,
because only the boost will be used in scoring.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2015">LUCENE-2015</a>: Add a static method foldToASCII to ASCIIFoldingFilter to
expose its folding logic.
<br /><span class="attrib">(Cédrik Lime via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2294">LUCENE-2294</a>: IndexWriter constructors have been deprecated in favor of a
single ctor which accepts IndexWriterConfig and a Directory. You can set all
the parameters related to IndexWriter on IndexWriterConfig. The different
setter/getter methods were deprecated as well. One should call
writer.getConfig().getXYZ() to query for a parameter XYZ.
Additionally, the setter/getter related to MergePolicy were deprecated as
well. One should interact with the MergePolicy directly.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2320">LUCENE-2320</a>: IndexWriter's MergePolicy configuration was moved to
IndexWriterConfig and the respective methods on IndexWriter were deprecated.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2328">LUCENE-2328</a>: Directory now keeps track itself of the files that are written
but not yet fsynced. The old Directory.sync(String file) method is deprecated
and replaced with Directory.sync(Collection&lt;String&gt; files). Take a look at
FSDirectory to see a sample of how such tracking might look like, if needed
in your custom Directories.
<br /><span class="attrib">(Earwin Burrfoot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2302">LUCENE-2302</a>: Deprecated TermAttribute and replaced by a new
CharTermAttribute. The change is backwards compatible, so
mixed new/old TokenStreams all work on the same char[] buffer
independent of which interface they use. CharTermAttribute
has shorter method names and implements CharSequence and
Appendable. This allows usage like Java's StringBuilder in
addition to direct char[] access. Also terms can directly be
used in places where CharSequence is allowed (e.g. regular
expressions).
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2402">LUCENE-2402</a>: IndexWriter.deleteUnusedFiles now deletes unreferenced commit
points too. If you use an IndexDeletionPolicy which holds onto index commits
(such as SnapshotDeletionPolicy), you can call this method to remove those
commit points when they are not needed anymore (instead of waiting for the
next commit).
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2481">LUCENE-2481</a>: SnapshotDeletionPolicy.snapshot() and release() were replaced
with equivalent ones that take a String (id) as argument. You can pass
whatever ID you want, as long as you use the same one when calling both.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2356">LUCENE-2356</a>: Add IndexWriterConfig.set/getReaderTermIndexDivisor, to
set what IndexWriter passes for termsIndexDivisor to the readers it
opens internally when apply deletions or creating a near-real-time
reader.
<br /><span class="attrib">(Earwin Burrfoot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2167">LUCENE-2167</a>,<a href="http://issues.apache.org/jira/browse/LUCENE-2699">LUCENE-2699</a>,<a href="http://issues.apache.org/jira/browse/LUCENE-2763">LUCENE-2763</a>,<a href="http://issues.apache.org/jira/browse/LUCENE-2847">LUCENE-2847</a>: StandardTokenizer/Analyzer
in common/standard/ now implement the Word Break rules from the Unicode 6.0.0
Text Segmentation algorithm (UAX#29), covering the full range of Unicode code
points, including values from U+FFFF to U+10FFFF
<p/>
ClassicTokenizer/Analyzer retains the old (pre-Lucene 3.1) StandardTokenizer/
Analyzer implementation and behavior.  Only the Unicode Basic Multilingual
Plane (code points from U+0000 to U+FFFF) is covered.
<p/>
UAX29URLEmailTokenizer tokenizes URLs and E-mail addresses according to the
relevant RFCs, in addition to implementing the UAX#29 Word Break rules.
<br /><span class="attrib">(Steven Rowe, Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2778">LUCENE-2778</a>: RAMDirectory now exposes newRAMFile() which allows to override
and return a different RAMFile implementation.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2785">LUCENE-2785</a>: Added TotalHitCountCollector whose sole purpose is to
count the number of hits matching the query.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2846">LUCENE-2846</a>: Deprecated IndexReader.setNorm(int, String, float). This method
is only syntactic sugar for setNorm(int, String, byte), but  using the global
Similarity.getDefault().encodeNormValue().  Use the byte-based method instead
to ensure that the norm is encoded with your Similarity.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2374">LUCENE-2374</a>: Added Attribute reflection API: It's now possible to inspect the
contents of AttributeImpl and AttributeSource using a well-defined API.
This is e.g. used by Solr's AnalysisRequestHandlers to display all attributes
in a structured way.
There are also some backwards incompatible changes in toString() output,
as <a href="http://issues.apache.org/jira/browse/LUCENE-2302">LUCENE-2302</a> introduced the CharSequence interface to CharTermAttribute
leading to changed toString() return values. The new API allows to get a
string representation in a well-defined way using a new method
reflectAsString(). For backwards compatibility reasons, when toString()
was implemented by implementation subclasses, the default implementation of
AttributeImpl.reflectWith() uses toString()s output instead to report the
Attribute's properties. Otherwise, reflectWith() uses Java's reflection
(like toString() did before) to get the attribute properties.
In addition, the mandatory equals() and hashCode() are no longer required
for AttributeImpls, but can still be provided (if needed).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2691">LUCENE-2691</a>: Deprecate IndexWriter.getReader in favor of
IndexReader.open(IndexWriter)
<br /><span class="attrib">(Grant Ingersoll, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2876">LUCENE-2876</a>: Deprecated Scorer.getSimilarity(). If your Scorer uses a Similarity,
it should keep it itself. Fixed Scorers to pass their parent Weight, so that
Scorer.visitSubScorers (<a href="http://issues.apache.org/jira/browse/LUCENE-2590">LUCENE-2590</a>) will work correctly.
<br /><span class="attrib">(Robert Muir, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2900">LUCENE-2900</a>: When opening a near-real-time (NRT) reader
(IndexReader.re/open(IndexWriter)) you can now specify whether
deletes should be applied.  Applying deletes can be costly, and some
expert use cases can handle seeing deleted documents returned.  The
deletes remain buffered so that the next time you open an NRT reader
and pass true, all deletes will be a applied.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1253">LUCENE-1253</a>: LengthFilter (and Solr's KeepWordTokenFilter) now
require up front specification of enablePositionIncrement. Together with
StopFilter they have a common base class (FilteringTokenFilter) that handles
the position increments automatically. Implementors only need to override an
accept() method that filters tokens.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v3.1.0.bug_fixes" href="javascript:toggleList('v3.1.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(23)
    <ol id="v3.1.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2249">LUCENE-2249</a>: ParallelMultiSearcher should shut down thread pool on
close.
<br /><span class="attrib">(Martin Traverso via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2273">LUCENE-2273</a>: FieldCacheImpl.getCacheEntries() used WeakHashMap
incorrectly and lead to ConcurrentModificationException.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2328">LUCENE-2328</a>: Index files fsync tracking moved from
IndexWriter/IndexReader to Directory, and it no longer leaks memory.
<br /><span class="attrib">(Earwin Burrfoot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2074">LUCENE-2074</a>: Reduce buffer size of lexer back to default on reset.
<br /><span class="attrib">(Ruben Laguna, Shai Erera via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2496">LUCENE-2496</a>: Don't throw NPE if IndexWriter is opened with CREATE on
a prior (corrupt) index missing its segments_N file.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2458">LUCENE-2458</a>: QueryParser no longer automatically forms phrase queries,
assuming whitespace tokenization. Previously all CJK queries, for example,
would be turned into phrase queries. The old behavior is preserved with
the matchVersion parameter for previous versions. Additionally, you can
explicitly enable the old behavior with setAutoGeneratePhraseQueries(true)
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2537">LUCENE-2537</a>: FSDirectory.copy() implementation was unsafe and could result in
OOM if a large file was copied.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2580">LUCENE-2580</a>: MultiPhraseQuery throws AIOOBE if number of positions
exceeds number of terms at one position
<br /><span class="attrib">(Jayendra Patil via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2617">LUCENE-2617</a>: Optional clauses of a BooleanQuery were not factored
into coord if the scorer for that segment returned null.  This
can cause the same document to score to differently depending on
what segment it resides in.
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2272">LUCENE-2272</a>: Fix explain in PayloadNearQuery and also fix scoring issue
<br /><span class="attrib">(Peter Keegan via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2732">LUCENE-2732</a>: Fix charset problems in XML loading in
HyphenationCompoundWordTokenFilter.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2802">LUCENE-2802</a>: NRT DirectoryReader returned incorrect values from
getVersion, isOptimized, getCommitUserData, getIndexCommit and isCurrent due
to a mutable reference to the IndexWriters SegmentInfos.
<br /><span class="attrib">(Simon Willnauer, Earwin Burrfoot)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2852">LUCENE-2852</a>: Fixed corner case in RAMInputStream that would hit a
false EOF after seeking to EOF then seeking back to same block you
were just in and then calling readBytes
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2860">LUCENE-2860</a>: Fixed SegmentInfo.sizeInBytes to factor includeDocStores when it
decides whether to return the cached computed size or not.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2584">LUCENE-2584</a>: SegmentInfo.files() could hit ConcurrentModificationException if
called by multiple threads.
<br /><span class="attrib">(Alexander Kanarsky via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2809">LUCENE-2809</a>: Fixed IndexWriter.numDocs to take into account
applied but not yet flushed deletes.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2879">LUCENE-2879</a>: MultiPhraseQuery previously calculated its phrase IDF by summing
internally, it now calls Similarity.idfExplain(Collection, IndexSearcher).
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2693">LUCENE-2693</a>: RAM used by IndexWriter was slightly incorrectly computed.
<br /><span class="attrib">(Jason Rutherglen via Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1846">LUCENE-1846</a>: DateTools now uses the US locale everywhere, so DateTools.round()
is safe also in strange locales.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2891">LUCENE-2891</a>: IndexWriterConfig did not accept -1 in setReaderTermIndexDivisor,
which can be used to prevent loading the terms index into memory.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2937">LUCENE-2937</a>: Encoding a float into a byte (e.g. encoding field norms during
indexing) had an underflow detection bug that caused floatToByte(f)==0 where
f was greater than 0, but slightly less than byteToFloat(1).  This meant that
certain very small field norms (index_boost * length_norm) could have
been rounded down to 0 instead of being rounded up to the smallest
positive number.
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2936">LUCENE-2936</a>: PhraseQuery score explanations were not correctly
identifying matches vs non-matches.
<br /><span class="attrib">(hossman)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2975">LUCENE-2975</a>: A hotspot bug corrupts IndexInput#readVInt()/readVLong() if
the underlying readByte() is inlined (which happens e.g. in MMapDirectory).
The loop was unwinded which makes the hotspot bug disappear.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.1.0.new_features" href="javascript:toggleList('v3.1.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(31)
    <ol id="v3.1.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2128">LUCENE-2128</a>: Parallelized fetching document frequencies during weight
creation.
<br /><span class="attrib">(Israel Tsadok, Simon Willnauer via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2069">LUCENE-2069</a>: Added Unicode 4 support to CharArraySet. Due to the switch
to Java 5, supplementary characters are now lowercased correctly if the
set is created as case insensitive.
CharArraySet now requires a Version argument to preserve
backwards compatibility. If Version &lt; 3.1 is passed to the constructor,
CharArraySet yields the old behavior.
<br /><span class="attrib">(Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2069">LUCENE-2069</a>: Added Unicode 4 support to LowerCaseFilter. Due to the switch
to Java 5, supplementary characters are now lowercased correctly.
LowerCaseFilter now requires a Version argument to preserve
backwards compatibility. If Version &lt; 3.1 is passed to the constructor,
LowerCaseFilter yields the old behavior.
<br /><span class="attrib">(Simon Willnauer, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2034">LUCENE-2034</a>: Added ReusableAnalyzerBase, an abstract subclass of Analyzer
that makes it easier to reuse TokenStreams correctly. This issue also added
StopwordAnalyzerBase, which improves consistency of all Analyzers that use
stopwords, and implement many analyzers in contrib with it.
<br /><span class="attrib">(Simon Willnauer via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2198">LUCENE-2198</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2901">LUCENE-2901</a>: Support protected words in stemming TokenFilters using a
new KeywordAttribute.
<br /><span class="attrib">(Simon Willnauer, Drew Farris via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2183">LUCENE-2183</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2240">LUCENE-2240</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2241">LUCENE-2241</a>: Added Unicode 4 support
to CharTokenizer and its subclasses. CharTokenizer now has new
int-API which is conditionally preferred to the old char-API depending
on the provided Version. Version &lt; 3.1 will use the char-API.
<br /><span class="attrib">(Simon Willnauer via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2247">LUCENE-2247</a>: Added a CharArrayMap&lt;V&gt; for performance improvements
in some stemmers and synonym filters.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2320">LUCENE-2320</a>: Added SetOnce which wraps an object and allows it to be set
exactly once.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2314">LUCENE-2314</a>: Added AttributeSource.copyTo(AttributeSource) that
allows to use cloneAttributes() and this method as a replacement
for captureState()/restoreState(), if the state itself
needs to be inspected/modified.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2293">LUCENE-2293</a>: Expose control over max number of threads that
IndexWriter will allow to run concurrently while indexing
documents (previously this was hardwired to 5), using
IndexWriterConfig.setMaxThreadStates.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2297">LUCENE-2297</a>: Enable turning on reader pooling inside IndexWriter
even when getReader (near-real-timer reader) is not in use, through
IndexWriterConfig.enable/disableReaderPooling.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2331">LUCENE-2331</a>: Add NoMergePolicy which never returns any merges to execute. In
addition, add NoMergeScheduler which never executes any merges. These two are
convenient classes in case you want to disable segment merges by IndexWriter
without tweaking a particular MergePolicy parameters, such as mergeFactor.
MergeScheduler's methods are now public.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2339">LUCENE-2339</a>: Deprecate static method Directory.copy in favor of
Directory.copyTo, and use nio's FileChannel.transferTo when copying
files between FSDirectory instances.
<br /><span class="attrib">(Earwin Burrfoot via Mike
McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2074">LUCENE-2074</a>: Make StandardTokenizer fit for Unicode 4.0, if the
matchVersion parameter is Version.LUCENE_31.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2385">LUCENE-2385</a>: Moved NoDeletionPolicy from benchmark to core. NoDeletionPolicy
can be used to prevent commits from ever getting deleted from the index.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1585">LUCENE-1585</a>: IndexWriter now accepts a PayloadProcessorProvider which can
return a DirPayloadProcessor for a given Directory, which returns a
PayloadProcessor for a given Term. The PayloadProcessor will be used to
process the payloads of the segments as they are merged (e.g. if one wants to
rewrite payloads of external indexes as they are added, or of local ones).
<br /><span class="attrib">(Shai Erera, Michael Busch, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2440">LUCENE-2440</a>: Add support for custom ExecutorService in
ParallelMultiSearcher
<br /><span class="attrib">(Edward Drapkin via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2295">LUCENE-2295</a>: Added a LimitTokenCountAnalyzer / LimitTokenCountFilter
to wrap any other Analyzer and provide the same functionality as
MaxFieldLength provided on IndexWriter.  This patch also fixes a bug
in the offset calculation in CharTokenizer.
<br /><span class="attrib">(Uwe Schindler, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2526">LUCENE-2526</a>: Don't throw NPE from MultiPhraseQuery.toString when
it's empty.
<br /><span class="attrib">(Ross Woolf via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2559">LUCENE-2559</a>: Added SegmentReader.reopen methods
<br /><span class="attrib">(John Wang via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2590">LUCENE-2590</a>: Added Scorer.visitSubScorers, and Scorer.freq.  Along
with a custom Collector these experimental methods make it possible
to gather the hit-count per sub-clause and per document while a
search is running.
<br /><span class="attrib">(Simon Willnauer, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2636">LUCENE-2636</a>: Added MultiCollector which allows running the search with several
Collectors.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2754">LUCENE-2754</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2757">LUCENE-2757</a>: Added a wrapper around MultiTermQueries
to add span support: SpanMultiTermQueryWrapper&lt;Q extends MultiTermQuery&gt;.
Using this wrapper its easy to add fuzzy/wildcard to e.g. a SpanNearQuery.
<br /><span class="attrib">(Robert Muir, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2838">LUCENE-2838</a>: ConstantScoreQuery now directly supports wrapping a Query
instance for stripping off scores. The use of a QueryWrapperFilter
is no longer needed and discouraged for that use case. Directly wrapping
Query improves performance, as out-of-order collection is now supported.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2864">LUCENE-2864</a>: Add getMaxTermFrequency (maximum within-document TF) to
FieldInvertState so that it can be used in Similarity.computeNorm.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2720">LUCENE-2720</a>: Segments now record the code version which created them.
<br /><span class="attrib">(Shai Erera, Mike McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2474">LUCENE-2474</a>: Added expert ReaderFinishedListener API to
IndexReader, to allow apps that maintain external per-segment caches
to evict entries when a segment is finished.
<br /><span class="attrib">(Shay Banon, Yonik
Seeley, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2911">LUCENE-2911</a>: The new StandardTokenizer, UAX29URLEmailTokenizer, and
the ICUTokenizer in contrib now all tag types with a consistent set
of token types (defined in StandardTokenizer). Tokens in the major
CJK types are explicitly marked to allow for custom downstream handling:
&lt;IDEOGRAPHIC&gt;, &lt;HANGUL&gt;, &lt;KATAKANA&gt;, and &lt;HIRAGANA&gt;.
<br /><span class="attrib">(Robert Muir, Steven Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2913">LUCENE-2913</a>: Add missing getters to Numeric* classes.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1810">LUCENE-1810</a>: Added FieldSelectorResult.LATENT to not cache lazy loaded fields
<br /><span class="attrib">(Tim Smith, Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2692">LUCENE-2692</a>: Added several new SpanQuery classes for positional checking
(match is in a range, payload is a specific value)
<br /><span class="attrib">(Grant Ingersoll)</span></li>
    </ol>
  </li>
  <li><a id="v3.1.0.optimizations" href="javascript:toggleList('v3.1.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(23)
    <ol id="v3.1.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2494">LUCENE-2494</a>: Use CompletionService in ParallelMultiSearcher instead of
simple polling for results.
<br /><span class="attrib">(Edward Drapkin, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2075">LUCENE-2075</a>: Terms dict cache is now shared across threads instead
of being stored separately in thread local storage.  Also fixed
terms dict so that the cache is used when seeking the thread local
term enum, which will be important for MultiTermQuery impls that do
lots of seeking
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Robert Muir, Yonik
Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2136">LUCENE-2136</a>: If the multi reader (DirectoryReader or MultiReader)
only has a single sub-reader, delegate all enum requests to it.
This avoid the overhead of using a PQ unnecessarily.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2137">LUCENE-2137</a>: Switch to AtomicInteger for some ref counting
<br /><span class="attrib">(Earwin
Burrfoot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2123">LUCENE-2123</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2261">LUCENE-2261</a>: Move FuzzyQuery rewrite to separate RewriteMode
into MultiTermQuery. The number of fuzzy expansions can be specified with
the maxExpansions parameter to FuzzyQuery.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2164">LUCENE-2164</a>: ConcurrentMergeScheduler has more control over merge
threads.  First, it gives smaller merges higher thread priority than
larges ones.  Second, a new set/getMaxMergeCount setting will pause
the larger merges to allow smaller ones to finish.  The defaults for
these settings are now dynamic, depending the number CPU cores as
reported by Runtime.getRuntime().availableProcessors()
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2169">LUCENE-2169</a>: Improved CharArraySet.copy(), if source set is
also a CharArraySet.
<br /><span class="attrib">(Simon Willnauer via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2084">LUCENE-2084</a>: Change IndexableBinaryStringTools to work on byte[] and char[]
directly, instead of Byte/CharBuffers, and modify CollationKeyFilter to
take advantage of this for faster performance.
<br /><span class="attrib">(Steven Rowe, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2188">LUCENE-2188</a>: Add a utility class for tracking deprecated overridden
methods in non-final subclasses.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2195">LUCENE-2195</a>: Speedup CharArraySet if set is empty.
<br /><span class="attrib">(Simon Willnauer via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2285">LUCENE-2285</a>: Code cleanup.
<br /><span class="attrib">(Shai Erera via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2303">LUCENE-2303</a>: Remove code duplication in Token class by subclassing
TermAttributeImpl, move DEFAULT_TYPE constant to TypeInterface, improve
null-handling for TypeAttribute.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2329">LUCENE-2329</a>: Switch TermsHash* from using a PostingList object per unique
term to parallel arrays, indexed by termID. This reduces garbage collection
overhead significantly, which results in great indexing performance wins
when the available JVM heap space is low. This will become even more
important when the DocumentsWriter RAM buffer is searchable in the future,
because then it will make sense to make the RAM buffers as large as
possible.
<br /><span class="attrib">(Mike McCandless, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2380">LUCENE-2380</a>: The terms field cache methods (getTerms,
getTermsIndex), which replace the older String equivalents
(getStrings, getStringIndex), consume quite a bit less RAM in most
cases.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2410">LUCENE-2410</a>: ~20% speedup on exact (slop=0) PhraseQuery matching.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2531">LUCENE-2531</a>: Fix issue when sorting by a String field that was
causing too many fallbacks to compare-by-value (instead of by-ord).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2574">LUCENE-2574</a>: IndexInput exposes copyBytes(IndexOutput, long) to allow for
efficient copying by sub-classes. Optimized copy is implemented for RAM and FS
streams.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2719">LUCENE-2719</a>: Improved TermsHashPerField's sorting to use a better
quick sort algorithm that dereferences the pivot element not on
every compare call. Also replaced lots of sorting code in Lucene
by the improved SorterTemplate class.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2760">LUCENE-2760</a>: Optimize SpanFirstQuery and SpanPositionRangeQuery.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2770">LUCENE-2770</a>: Make SegmentMerger always work on atomic subreaders,
even when IndexWriter.addIndexes(IndexReader...) is used with
DirectoryReaders or other MultiReaders. This saves lots of memory
during merge of norms.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2824">LUCENE-2824</a>: Optimize BufferedIndexInput to do less bounds checks.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2010">LUCENE-2010</a>: Segments with 100% deleted documents are now removed on
IndexReader or IndexWriter commit.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1472">LUCENE-1472</a>: Removed synchronization from static DateTools methods
by using a ThreadLocal. Also converted DateTools.Resolution to a
Java 5 enum (this should not break backwards).
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v3.1.0.build" href="javascript:toggleList('v3.1.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v3.1.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2124">LUCENE-2124</a>: Moved the JDK-based collation support from contrib/collation
into core, and moved the ICU-based collation support into contrib/icu.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2326">LUCENE-2326</a>: Removed SVN checkouts for backwards tests. The backwards
branch is now included in the svn repository using "svn copy"
after release.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2074">LUCENE-2074</a>: Regenerating StandardTokenizerImpl files now needs
JFlex 1.5 (currently only available on SVN).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1709">LUCENE-1709</a>: Tests are now parallelized by default (except for benchmark). You
can force them to run sequentially by passing -Drunsequential=1 on the command
line. The number of threads that are spawned per CPU defaults to '1'. If you
wish to change that, you can run the tests with -DthreadsPerProcessor=[num].
<br /><span class="attrib">(Robert Muir, Shai Erera, Peter Kofler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2516">LUCENE-2516</a>: Backwards tests are now compiled against released lucene-core.jar
from tarball of previous version. Backwards tests are now packaged together
with src distribution.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2611">LUCENE-2611</a>: Added Ant target to install IntelliJ IDEA configuration:
"ant idea".  See <a href="http://wiki.apache.org/lucene-java/HowtoConfigureIntelliJ">http://wiki.apache.org/lucene-java/HowtoConfigureIntelliJ</a>
<br /><span class="attrib">(Steven Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2657">LUCENE-2657</a>: Switch from using Maven POM templates to full POMs when
generating Maven artifacts
<br /><span class="attrib">(Steven Rowe)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2609">LUCENE-2609</a>: Added jar-test-framework Ant target which packages Lucene's
tests' framework classes.
<br /><span class="attrib">(Drew Farris, Grant Ingersoll, Shai Erera,
Steven Rowe)</span></li>
    </ol>
  </li>
  <li><a id="v3.1.0.test_cases" href="javascript:toggleList('v3.1.0.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(10)
    <ol id="v3.1.0.test_cases.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2037">LUCENE-2037</a> Allow Junit4 tests in our environment
<br /><span class="attrib">(Erick Erickson
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1844">LUCENE-1844</a>: Speed up the unit tests
<br /><span class="attrib">(Mark Miller, Erick Erickson,
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2065">LUCENE-2065</a>: Use Java 5 generics throughout our unit tests.
<br /><span class="attrib">(Kay
Kay via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2155">LUCENE-2155</a>: Fix time and zone dependent localization test failures
in queryparser tests.
<br /><span class="attrib">(Uwe Schindler, Chris Male, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2170">LUCENE-2170</a>: Fix thread starvation problems.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2248">LUCENE-2248</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2251">LUCENE-2251</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2285">LUCENE-2285</a>: Refactor tests to not use
Version.LUCENE_CURRENT, but instead use a global static value
from LuceneTestCase(J4), that contains the release version.
<br /><span class="attrib">(Uwe Schindler, Simon Willnauer, Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2313">LUCENE-2313</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2322">LUCENE-2322</a>: Add VERBOSE to LuceneTestCase(J4) to control
verbosity of tests. If VERBOSE==false (default) tests should not print
anything other than errors to System.(out|err). The setting can be
changed with -Dtests.verbose=true on test invocation.
<br /><span class="attrib">(Shai Erera, Paul Elschot, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2318">LUCENE-2318</a>: Remove inconsistent system property code for retrieving
temp and data directories inside test cases. It is now centralized in
LuceneTestCase(J4). Also changed lots of tests to use
getClass().getResourceAsStream() to retrieve test data. Tests needing
access to "real" files from the test folder itself, can use
LuceneTestCase(J4).getDataFile().
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2398">LUCENE-2398</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2611">LUCENE-2611</a>: Improve tests to work better from IDEs such
as Eclipse and IntelliJ.
<br /><span class="attrib">(Paolo Castagna, Steven Rowe via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2804">LUCENE-2804</a>: add newFSDirectory to LuceneTestCase to create a FSDirectory at
random.
<br /><span class="attrib">(Shai Erera, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v3.1.0.documentation" href="javascript:toggleList('v3.1.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.1.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2579">LUCENE-2579</a>: Fix oal.search's package.html description of abstract
methods.
<br /><span class="attrib">(Santiago M. Mola via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2625">LUCENE-2625</a>: Add a note to IndexReader.termDocs() with additional verbiage
that the TermEnum must be seeked since it is unpositioned.
<br /><span class="attrib">(Adriano Crestani via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2894">LUCENE-2894</a>: Use google-code-prettify for syntax highlighting in javadoc.
<br /><span class="attrib">(Shinichiro Abe, Koji Sekiguchi)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.9.4" href="javascript:toggleList('v2.9.4')">Release 2.9.4 / 3.0.3 [2010-12-03]</a></h3>
<ul id="v2.9.4.list">
  <li><a id="v2.9.4.changes_in_runtime_behavior" href="javascript:toggleList('v2.9.4.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v2.9.4.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2689">LUCENE-2689</a>: NativeFSLockFactory no longer attempts to acquire a
test lock just before the real lock is acquired.
<br /><span class="attrib">(Surinder Pal
Singh Bindra via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2762">LUCENE-2762</a>: Fixed bug in IndexWriter causing it to hold open file
handles against deleted files when compound-file was enabled (the
default) and readers are pooled.  As a result of this the peak
worst-case free disk space required during optimize is now 3X the
index size, when compound file is enabled (else 2X).
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2773">LUCENE-2773</a>: LogMergePolicy accepts a double noCFSRatio (default =
0.1), which means any time a merged segment is greater than 10% of
the index size, it will be left in non-compound format even if
compound format is on.  This change was made to reduce peak
transient disk usage during optimize which increased due to
<a href="http://issues.apache.org/jira/browse/LUCENE-2762">LUCENE-2762</a>.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.4.bug_fixes" href="javascript:toggleList('v2.9.4.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(24)
    <ol id="v2.9.4.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2142">LUCENE-2142</a> (correct fix): FieldCacheImpl.getStringIndex no longer
throws an exception when term count exceeds doc count.
<br /><span class="attrib">(Mike McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2513">LUCENE-2513</a>: when opening writable IndexReader on a not-current
commit, do not overwrite "future" commits.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2536">LUCENE-2536</a>: IndexWriter.rollback was failing to properly rollback
buffered deletions against segments that were flushed
<br /><span class="attrib">(Mark Harwood
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2541">LUCENE-2541</a>: Fixed NumericRangeQuery that returned incorrect results
with endpoints near Long.MIN_VALUE and Long.MAX_VALUE:
NumericUtils.splitRange() overflowed, if
<ul class="bulleted-list">
<li class="bulleted-list">
the range contained a LOWER bound
  that was greater than (Long.MAX_VALUE - (1L &lt;&lt; precisionStep))
</li>
<li class="bulleted-list">
the range contained an UPPER bound
  that was less than (Long.MIN_VALUE + (1L &lt;&lt; precisionStep))
</li>
</ul>
With standard precision steps around 4, this had no effect on
most queries, only those that met the above conditions.
Queries with large precision steps failed more easy. Queries with
precision step &gt;=64 were not affected. Also 32 bit data types int
and float were not affected.
<br /><span class="attrib">(Yonik Seeley, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2593">LUCENE-2593</a>: Fixed certain rare cases where a disk full could lead
to a corrupted index
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2620">LUCENE-2620</a>: Fixed a bug in WildcardQuery where too many asterisks
would result in unbearably slow performance.
<br /><span class="attrib">(Nick Barkas via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2627">LUCENE-2627</a>: Fixed bug in MMapDirectory chunking when a file is an
exact multiple of the chunk size.
<br /><span class="attrib">(Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2634">LUCENE-2634</a>: isCurrent on an NRT reader was failing to return false
if the writer had just committed
<br /><span class="attrib">(Nikolay Zamosenchuk via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2650">LUCENE-2650</a>: Added extra safety to MMapIndexInput clones to prevent accessing
an unmapped buffer if the input is closed
<br /><span class="attrib">(Mike McCandless, Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2384">LUCENE-2384</a>: Reset zzBuffer in StandardTokenizerImpl when lexer is reset.
<br /><span class="attrib">(Ruben Laguna via Uwe Schindler, sub-issue of <a href="http://issues.apache.org/jira/browse/LUCENE-2074">LUCENE-2074</a>)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2658">LUCENE-2658</a>: Exceptions while processing term vectors enabled for multiple
fields could lead to invalid ArrayIndexOutOfBoundsExceptions.
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2235">LUCENE-2235</a>: Implement missing PerFieldAnalyzerWrapper.getOffsetGap().
<br /><span class="attrib">(Javier Godoy via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2328">LUCENE-2328</a>: Fixed memory leak in how IndexWriter/Reader tracked
already sync'd files.
<br /><span class="attrib">(Earwin Burrfoot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2549">LUCENE-2549</a>: Fix TimeLimitingCollector#TimeExceededException to record
the absolute docid.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2533">LUCENE-2533</a>: fix FileSwitchDirectory.listAll to not return dups when
primary &amp; secondary dirs share the same underlying directory.
<br /><span class="attrib">(Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2365">LUCENE-2365</a>: IndexWriter.newestSegment (used normally for testing)
is fixed to return null if there are no segments.
<br /><span class="attrib">(Karthick
Sankarachary via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2730">LUCENE-2730</a>: Fix two rare deadlock cases in IndexWriter
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2744">LUCENE-2744</a>: CheckIndex was stating total number of fields,
not the number that have norms enabled, on the "test: field
norms..." output.
<br /><span class="attrib">(Mark Kristensson via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2759">LUCENE-2759</a>: Fixed two near-real-time cases where doc store files
may be opened for read even though they are still open for write.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2618">LUCENE-2618</a>: Fix rare thread safety issue whereby
IndexWriter.optimize could sometimes return even though the index
wasn't fully optimized
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2767">LUCENE-2767</a>: Fix thread safety issue in addIndexes(IndexReader[])
that could potentially result in index corruption.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2762">LUCENE-2762</a>: Fixed bug in IndexWriter causing it to hold open file
handles against deleted files when compound-file was enabled (the
default) and readers are pooled.  As a result of this the peak
worst-case free disk space required during optimize is now 3X the
index size, when compound file is enabled (else 2X).
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2216">LUCENE-2216</a>: OpenBitSet.hashCode returned different hash codes for
sets that only differed by trailing zeros.
<br /><span class="attrib">(Dawid Weiss, yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2782">LUCENE-2782</a>: Fix rare potential thread hazard with
IndexWriter.commit
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.4.api_changes" href="javascript:toggleList('v2.9.4.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.9.4.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2773">LUCENE-2773</a>: LogMergePolicy accepts a double noCFSRatio (default =
0.1), which means any time a merged segment is greater than 10% of
the index size, it will be left in non-compound format even if
compound format is on.  This change was made to reduce peak
transient disk usage during optimize which increased due to
<a href="http://issues.apache.org/jira/browse/LUCENE-2762">LUCENE-2762</a>.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.4.optimizations" href="javascript:toggleList('v2.9.4.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v2.9.4.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2556">LUCENE-2556</a>: Improve memory usage after cloning TermAttribute.
<br /><span class="attrib">(Adriano Crestani via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2098">LUCENE-2098</a>: Improve the performance of BaseCharFilter, especially for
large documents.
<br /><span class="attrib">(Robin Wojciki, Koji Sekiguchi, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.4.new_features" href="javascript:toggleList('v2.9.4.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.9.4.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2675">LUCENE-2675</a> (2.9.4 only): Add support for Lucene 3.0 stored field files
also in 2.9. The file format did not change, only the version number was
upgraded to mark segments that have no compression. FieldsWriter still only
writes 2.9 segments as they could contain compressed fields. This cross-version
index format compatibility is provided here solely because Lucene 2.9 and 3.0
have the same bugfix level, features, and the same index format with this slight
compression difference. In general, Lucene does not support reading newer
indexes with older library versions.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.4.documentation" href="javascript:toggleList('v2.9.4.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.9.4.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2239">LUCENE-2239</a>: Documented limitations in NIOFSDirectory and MMapDirectory due to
Java NIO behavior when a Thread is interrupted while blocking on IO.
<br /><span class="attrib">(Simon Willnauer, Robert Muir)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.9.3" href="javascript:toggleList('v2.9.3')">Release 2.9.3 / 3.0.2 [2010-06-18]</a></h3>
<ul id="v2.9.3.list">
  <li><a id="v2.9.3.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v2.9.3.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.9.3.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2135">LUCENE-2135</a>: Added FieldCache.purge(IndexReader) method to the
interface.  Anyone implementing FieldCache externally will need to
fix their code to implement this, on upgrading.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.3.changes_in_runtime_behavior" href="javascript:toggleList('v2.9.3.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v2.9.3.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2421">LUCENE-2421</a>: NativeFSLockFactory does not throw LockReleaseFailedException if
it cannot delete the lock file, since obtaining the lock does not fail if the
file is there.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2060">LUCENE-2060</a> (2.9.3 only): Changed ConcurrentMergeScheduler's default for
maxNumThreads from 3 to 1, because in practice we get the most gains
from running a single merge in the backround.  More than one
concurrent merge causes alot of thrashing (though it's possible on
SSD storage that there would be net gains).
<br /><span class="attrib">(Jason Rutherglen, Mike
McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.3.bug_fixes" href="javascript:toggleList('v2.9.3.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(21)
    <ol id="v2.9.3.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2046">LUCENE-2046</a> (2.9.3 only): IndexReader should not see the index as changed, after
IndexWriter.prepareCommit has been called but before
IndexWriter.commit is called.
<br /><span class="attrib">(Peter Keegan via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2119">LUCENE-2119</a>: Don't throw NegativeArraySizeException if you pass
Integer.MAX_VALUE as nDocs to IndexSearcher search methods.
<br /><span class="attrib">(Paul
Taylor via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2142">LUCENE-2142</a>: FieldCacheImpl.getStringIndex no longer throws an
exception when term count exceeds doc count.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2104">LUCENE-2104</a>: NativeFSLock.release() would silently fail if the lock is held by
another thread/process.
<br /><span class="attrib">(Shai Erera via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2283">LUCENE-2283</a>: Use shared memory pool for term vector and stored
fields buffers. This memory will be reclaimed if needed according to
the configured RAM Buffer Size for the IndexWriter.  This also fixes
potentially excessive memory usage when many threads are indexing a
mix of small and large documents.
<br /><span class="attrib">(Tim Smith via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2300">LUCENE-2300</a>: If IndexWriter is pooling reader (because NRT reader
has been obtained), and addIndexes* is run, do not pool the
readers from the external directory.  This is harmless (NRT reader is
correct), but a waste of resources.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2422">LUCENE-2422</a>: Don't reuse byte[] in IndexInput/Output -- it gains
little performance, and ties up possibly large amounts of memory
for apps that index large docs.
<br /><span class="attrib">(Ross Woolf via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2387">LUCENE-2387</a>: Don't hang onto Fieldables from the last doc indexed,
in IndexWriter, nor the Reader in Tokenizer after close is
called.
<br /><span class="attrib">(Ruben Laguna, Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2417">LUCENE-2417</a>: IndexCommit did not implement hashCode() and equals()
consistently. Now they both take Directory and version into consideration. In
addition, all of IndexComnmit methods which threw
UnsupportedOperationException are now abstract.
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2467">LUCENE-2467</a>: Fixed memory leaks in IndexWriter when large documents
are indexed.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2473">LUCENE-2473</a>: Clicking on the "More Results" link in the luceneweb.war
demo resulted in ArrayIndexOutOfBoundsException.
<br /><span class="attrib">(Sami Siren via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2476">LUCENE-2476</a>: If any exception is hit init'ing IW, release the write
lock (previously we only released on IOException).
<br /><span class="attrib">(Tamas Cservenak
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2478">LUCENE-2478</a>: Fix CachingWrapperFilter to not throw NPE when
Filter.getDocIdSet() returns null.
<br /><span class="attrib">(Uwe Schindler, Daniel Noll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2468">LUCENE-2468</a>: Allow specifying how new deletions should be handled in
CachingWrapperFilter and CachingSpanFilter.  By default, new
deletions are ignored in CachingWrapperFilter, since typically this
filter is AND'd with a query that correctly takes new deletions into
account.  This should be a performance gain (higher cache hit rate)
in apps that reopen readers, or use near-real-time reader
(IndexWriter.getReader()), but may introduce invalid search results
(allowing deleted docs to be returned) for certain cases, so a new
expert ctor was added to CachingWrapperFilter to enforce deletions
at a performance cost.  CachingSpanFilter by default recaches if
there are new deletions
<br /><span class="attrib">(Shay Banon via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2299">LUCENE-2299</a>: If you open an NRT reader while addIndexes* is running,
it may miss some segments
<br /><span class="attrib">(Earwin Burrfoot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2397">LUCENE-2397</a>: Don't throw NPE from SnapshotDeletionPolicy.snapshot if
there are no commits yet
<br /><span class="attrib">(Shai Erera)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2424">LUCENE-2424</a>: Fix FieldDoc.toString to actually return its fields
<br /><span class="attrib">(Stephen Green via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2311">LUCENE-2311</a>: Always pass a "fully loaded" (terms index &amp; doc stores)
SegmentsReader to IndexWriter's mergedSegmentWarmer (if set), so
that warming is free to do whatever it needs to.
<br /><span class="attrib">(Earwin Burrfoot
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-3029">LUCENE-3029</a>: Fix corner case when MultiPhraseQuery is used with zero
position-increment tokens that would sometimes assign different
scores to identical docs.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2486">LUCENE-2486</a>: Fixed intermittent FileNotFoundException on doc store
files when a mergedSegmentWarmer is set on IndexWriter.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2130">LUCENE-2130</a>: Fix performance issue when FuzzyQuery runs on a
multi-segment index
<br /><span class="attrib">(Michael McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.3.api_changes" href="javascript:toggleList('v2.9.3.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v2.9.3.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2281">LUCENE-2281</a>: added doBeforeFlush to IndexWriter to allow extensions to perform
operations before flush starts. Also exposed doAfterFlush as protected instead
of package-private.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2356">LUCENE-2356</a>: Add IndexWriter.set/getReaderTermsIndexDivisor, to set
what IndexWriter passes for termsIndexDivisor to the readers it
opens internally when applying deletions or creating a
near-real-time reader.
<br /><span class="attrib">(Earwin Burrfoot via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.3.optimizations" href="javascript:toggleList('v2.9.3.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v2.9.3.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2494">LUCENE-2494</a> (3.0.2 only): Use CompletionService in ParallelMultiSearcher
instead of simple polling for results.
<br /><span class="attrib">(Edward Drapkin, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2135">LUCENE-2135</a>: On IndexReader.close, forcefully evict any entries from
the FieldCache rather than waiting for the WeakHashMap to release
the reference
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2161">LUCENE-2161</a>: Improve concurrency of IndexReader, especially in the
context of near real-time readers.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2360">LUCENE-2360</a>: Small speedup to recycling of reused per-doc RAM in
IndexWriter
<br /><span class="attrib">(Robert Muir, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.3.build" href="javascript:toggleList('v2.9.3.build')">Build</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.9.3.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2488">LUCENE-2488</a> (2.9.3 only): Support build with JDK 1.4 and exclude Java 1.5
contrib modules on request (pass '-Dforce.jdk14.build=true') when
compiling/testing/packaging. This marks the benchmark contrib also
as Java 1.5, as it depends on fast-vector-highlighter.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.9.2" href="javascript:toggleList('v2.9.2')">Release 2.9.2 / 3.0.1 [2010-02-26]</a></h3>
<ul id="v2.9.2.list">
  <li><a id="v2.9.2.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v2.9.2.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.9.2.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2123">LUCENE-2123</a> (3.0.1 only): Removed the protected inner class ScoreTerm
from FuzzyQuery. The change was needed because the comparator of this
class had to be changed in an incompatible way. The class was never
intended to be public.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.2.bug_fixes" href="javascript:toggleList('v2.9.2.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(10)
    <ol id="v2.9.2.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2092">LUCENE-2092</a>: BooleanQuery was ignoring disableCoord in its hashCode
and equals methods, cause bad things to happen when caching
BooleanQueries.
<br /><span class="attrib">(Chris Hostetter, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2095">LUCENE-2095</a>: Fixes: when two threads call IndexWriter.commit() at
the same time, it's possible for commit to return control back to
one of the threads before all changes are actually committed.
<br /><span class="attrib">(Sanne Grinovero via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2132">LUCENE-2132</a> (3.0.1 only): Fix the demo result.jsp to use QueryParser
with a Version argument.
<br /><span class="attrib">(Brian Li via Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2166">LUCENE-2166</a>: Don't incorrectly keep warning about the same immense
term, when IndexWriter.infoStream is on.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2158">LUCENE-2158</a>: At high indexing rates, NRT reader could temporarily
lose deletions.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2182">LUCENE-2182</a>: DEFAULT_ATTRIBUTE_FACTORY was failing to load
implementation class when interface was loaded by a different
class loader.
<br /><span class="attrib">(Uwe Schindler, reported on java-user by Ahmed El-dawy)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2257">LUCENE-2257</a>: Increase max number of unique terms in one segment to
termIndexInterval (default 128) * ~2.1 billion = ~274 billion.
<br /><span class="attrib">(Tom Burton-West via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2260">LUCENE-2260</a>: Fixed AttributeSource to not hold a strong
reference to the Attribute/AttributeImpl classes which prevents
unloading of custom attributes loaded by other classloaders
(e.g. in Solr plugins).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1941">LUCENE-1941</a>: Fix Min/MaxPayloadFunction returns 0 when
only one payload is present.
<br /><span class="attrib">(Erik Hatcher, Mike McCandless
via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2270">LUCENE-2270</a>: Queries consisting of all zero-boost clauses
(for example, text:foo^0) sorted incorrectly and produced
invalid docids.
<br /><span class="attrib">(yonik)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.2.api_changes" href="javascript:toggleList('v2.9.2.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v2.9.2.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1609">LUCENE-1609</a> (3.0.1 only): Restore IndexReader.getTermInfosIndexDivisor
(it was accidentally removed in 3.0.0)
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1972">LUCENE-1972</a> (3.0.1 only): Restore SortField.getComparatorSource
(it was accidentally removed in 3.0.0)
<br /><span class="attrib">(John Wang via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2190">LUCENE-2190</a>: Added a new class CustomScoreProvider to function package
that can be subclassed to provide custom scoring to CustomScoreQuery.
The methods in CustomScoreQuery that did this before were deprecated
and replaced by a method getCustomScoreProvider(IndexReader) that
returns a custom score implementation using the above class. The change
is necessary with per-segment searching, as CustomScoreQuery is
a stateless class (like all other Queries) and does not know about
the currently searched segment. This API works similar to Filter's
getDocIdSet(IndexReader).
<br /><span class="attrib">(Paul chez Jamespot via Mike McCandless,
Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2080">LUCENE-2080</a>: Deprecate Version.LUCENE_CURRENT, as using this constant
will cause backwards compatibility problems when upgrading Lucene. See
the Version javadocs for additional information.
<br /><span class="attrib">(Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.2.optimizations" href="javascript:toggleList('v2.9.2.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v2.9.2.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2086">LUCENE-2086</a>: When resolving deleted terms, do so in term sort order
for better performance
<br /><span class="attrib">(Bogdan Ghidireac via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2123">LUCENE-2123</a> (partly, 3.0.1 only): Fixes a slowdown / memory issue
added by <a href="http://issues.apache.org/jira/browse/LUCENE-504">LUCENE-504</a>.
<br /><span class="attrib">(Uwe Schindler, Robert Muir, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2258">LUCENE-2258</a>: Remove unneeded synchronization in FuzzyTermEnum.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.2.test_cases" href="javascript:toggleList('v2.9.2.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v2.9.2.test_cases.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2114">LUCENE-2114</a>: Change TestFilteredSearch to test on multi-segment
index as well.
<br /><span class="attrib">(Simon Willnauer via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2211">LUCENE-2211</a>: Improves BaseTokenStreamTestCase to use a fake attribute
that checks if clearAttributes() was called correctly.
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2207">LUCENE-2207</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2219">LUCENE-2219</a>: Improve BaseTokenStreamTestCase to check if
end() is implemented correctly.
<br /><span class="attrib">(Koji Sekiguchi, Robert Muir)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.2.documentation" href="javascript:toggleList('v2.9.2.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.9.2.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2114">LUCENE-2114</a>: Improve javadocs of Filter to call out that the
provided reader is per-segment
<br /><span class="attrib">(Simon Willnauer via Mike
McCandless)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v3.0.0" href="javascript:toggleList('v3.0.0')">Release 3.0.0  [2009-11-25]</a></h3>
<ul id="v3.0.0.list">
  <li><a id="v3.0.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v3.0.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v3.0.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1979">LUCENE-1979</a>: Change return type of SnapshotDeletionPolicy#snapshot()
from IndexCommitPoint to IndexCommit. Code that uses this method
needs to be recompiled against Lucene 3.0 in order to work. The
previously deprecated IndexCommitPoint is also removed.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li>o.a.l.Lock.isLocked() is now allowed to throw an IOException.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2030">LUCENE-2030</a>: CachingWrapperFilter and CachingSpanFilter now hide
the internal cache implementation for thread safety, before it was
declared protected.
<br /><span class="attrib">(Peter Lenahan, Uwe Schindler, Simon Willnauer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2053">LUCENE-2053</a>: If you call Thread.interrupt() on a thread inside
Lucene, Lucene will do its best to interrupt the thread.  However,
instead of throwing InterruptedException (which is a checked
exception), you'll get an oal.util.ThreadInterruptedException (an
unchecked exception, subclassing RuntimeException).  The interrupt
status on the thread is cleared when this exception is thrown.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2052">LUCENE-2052</a>: Some methods in Lucene core were changed to accept
Java 5 varargs. This is not a backwards compatibility problem as
long as you not try to override such a method. We left common
overridden methods unchanged and added varargs to constructors,
static, or final methods (MultiSearcher,...).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1558">LUCENE-1558</a>: IndexReader.open(Directory) now opens a readOnly=true
reader, and new IndexSearcher(Directory) does the same.  Note that
this is a change in the default from 2.9, when these methods were
previously deprecated.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1753">LUCENE-1753</a>: Make not yet final TokenStreams final to enforce
decorator pattern.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v3.0.0.changes_in_runtime_behavior" href="javascript:toggleList('v3.0.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.0.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1677">LUCENE-1677</a>: Remove the system property to set SegmentReader class
implementation.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1960">LUCENE-1960</a>: As a consequence of the removal of Field.Store.COMPRESS,
support for this type of fields was removed. Lucene 3.0 is still able
to read indexes with compressed fields, but as soon as merges occur
or the index is optimized, all compressed fields are decompressed
and converted to Field.Store.YES. Because of this, indexes with
compressed fields can suddenly get larger. Also the first merge with
decompression cannot be done in raw mode, it is therefore slower.
This change has no effect for code that uses such old indexes,
they behave as before (fields are automatically decompressed
during read). Indexes converted to Lucene 3.0 format cannot be read
anymore with previous versions.
It is recommended to optimize your indexes after upgrading to convert
to the new format and decompress all fields.
If you want compressed fields, you can use CompressionTools, that
creates compressed byte[] to be added as binary stored field. This
cannot be done automatically, as you also have to decompress such
fields when reading. You have to reindex to do that.
<br /><span class="attrib">(Michael Busch, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2060">LUCENE-2060</a>: Changed ConcurrentMergeScheduler's default for
maxNumThreads from 3 to 1, because in practice we get the most
gains from running a single merge in the background.  More than one
concurrent merge causes a lot of thrashing (though it's possible on
SSD storage that there would be net gains).
<br /><span class="attrib">(Jason Rutherglen,
Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.0.0.api_changes" href="javascript:toggleList('v3.0.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v3.0.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1257">LUCENE-1257</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1984">LUCENE-1984</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1985">LUCENE-1985</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2057">LUCENE-2057</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1833">LUCENE-1833</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2012">LUCENE-2012</a>,
<a href="http://issues.apache.org/jira/browse/LUCENE-1998">LUCENE-1998</a>: Port to Java 1.5:
<ul class="bulleted-list">
<li class="bulleted-list">
Add generics to public and internal APIs (see below).
</li>
<li class="bulleted-list">
Replace new Integer(int), new Double(double),... by static valueOf() calls.
</li>
<li class="bulleted-list">
Replace for-loops with Iterator by foreach loops.
</li>
<li class="bulleted-list">
Replace StringBuffer with StringBuilder.
</li>
<li class="bulleted-list">
Replace o.a.l.util.Parameter by Java 5 enums (see below).
</li>
<li class="bulleted-list">
Add @Override annotations.
</li>
</ul>
<span class="attrib">(Uwe Schindler, Robert Muir, Karl Wettin, Paul Elschot, Kay Kay, Shai Erera,
DM Smith)</span></li>
      <li>Generify Lucene API:
<ul class="bulleted-list">
<li class="bulleted-list">
TokenStream/AttributeSource: Now addAttribute()/getAttribute() return an
  instance of the requested attribute interface and no cast needed anymore
  (<a href="http://issues.apache.org/jira/browse/LUCENE-1855">LUCENE-1855</a>).
</li>
<li class="bulleted-list">
NumericRangeQuery, NumericRangeFilter, and FieldCacheRangeFilter
  now have Integer, Long, Float, Double as type param (<a href="http://issues.apache.org/jira/browse/LUCENE-1857">LUCENE-1857</a>).
</li>
<li class="bulleted-list">
Document.getFields() returns List&lt;Fieldable&gt;.
</li>
<li class="bulleted-list">
Query.extractTerms(Set&lt;Term&gt;)
</li>
<li class="bulleted-list">
CharArraySet and stop word sets in core/contrib
</li>
<li class="bulleted-list">
PriorityQueue (<a href="http://issues.apache.org/jira/browse/LUCENE-1935">LUCENE-1935</a>)
</li>
<li class="bulleted-list">
TopDocCollector
</li>
<li class="bulleted-list">
DisjunctionMaxQuery (<a href="http://issues.apache.org/jira/browse/LUCENE-1984">LUCENE-1984</a>)
</li>
<li class="bulleted-list">
MultiTermQueryWrapperFilter
</li>
<li class="bulleted-list">
CloseableThreadLocal
</li>
<li class="bulleted-list">
MapOfSets
</li>
<li class="bulleted-list">
o.a.l.util.cache package
</li>
<li class="bulleted-list">
lot's of internal APIs of IndexWriter
</li>
</ul>
<span class="attrib">(Uwe Schindler, Michael Busch, Kay Kay, Robert Muir, Adriano Crestani)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1944">LUCENE-1944</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1856">LUCENE-1856</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1957">LUCENE-1957</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1960">LUCENE-1960</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1961">LUCENE-1961</a>,
<a href="http://issues.apache.org/jira/browse/LUCENE-1968">LUCENE-1968</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1970">LUCENE-1970</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1946">LUCENE-1946</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1971">LUCENE-1971</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1975">LUCENE-1975</a>,
<a href="http://issues.apache.org/jira/browse/LUCENE-1972">LUCENE-1972</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1978">LUCENE-1978</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-944">LUCENE-944</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1979">LUCENE-1979</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1973">LUCENE-1973</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-2011">LUCENE-2011</a>:
Remove deprecated methods/constructors/classes:
<ul class="bulleted-list">
<li class="bulleted-list">
Remove all String/File directory paths in IndexReader /
  IndexSearcher / IndexWriter.
</li>
<li class="bulleted-list">
Remove FSDirectory.getDirectory()
</li>
<li class="bulleted-list">
Make FSDirectory abstract.
</li>
<li class="bulleted-list">
Remove Field.Store.COMPRESS (see above).
</li>
<li class="bulleted-list">
Remove Filter.bits(IndexReader) method and make
  Filter.getDocIdSet(IndexReader) abstract.
</li>
<li class="bulleted-list">
Remove old DocIdSetIterator methods and make the new ones abstract.
</li>
<li class="bulleted-list">
Remove some methods in PriorityQueue.
</li>
<li class="bulleted-list">
Remove old TokenStream API and backwards compatibility layer.
</li>
<li class="bulleted-list">
Remove RangeQuery, RangeFilter and ConstantScoreRangeQuery.
</li>
<li class="bulleted-list">
Remove SpanQuery.getTerms().
</li>
<li class="bulleted-list">
Remove ExtendedFieldCache, custom and auto caches, SortField.AUTO.
</li>
<li class="bulleted-list">
Remove old-style custom sort.
</li>
<li class="bulleted-list">
Remove legacy search setting in SortField.
</li>
<li class="bulleted-list">
Remove Hits and all references from core and contrib.
</li>
<li class="bulleted-list">
Remove HitCollector and its TopDocs support implementations.
</li>
<li class="bulleted-list">
Remove term field and accessors in MultiTermQuery
  (and fix Highlighter).
</li>
<li class="bulleted-list">
Remove deprecated methods in BooleanQuery.
</li>
<li class="bulleted-list">
Remove deprecated methods in Similarity.
</li>
<li class="bulleted-list">
Remove BoostingTermQuery.
</li>
<li class="bulleted-list">
Remove MultiValueSource.
</li>
<li class="bulleted-list">
Remove Scorer.explain(int).
</li>
</ul>
...and some other minor ones
<br /><span class="attrib">(Uwe Schindler, Michael Busch, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1925">LUCENE-1925</a>: Make IndexSearcher's subReaders and docStarts members
protected; add expert ctor to directly specify reader, subReaders
and docStarts.
<br /><span class="attrib">(John Wang, Tim Smith via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1945">LUCENE-1945</a>: All public classes that have a close() method now
also implement java.io.Closeable (IndexReader, IndexWriter, Directory,...).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1998">LUCENE-1998</a>: Change all Parameter instances to Java 5 enums. This
is no backwards-break, only a change of the super class. Parameter
was deprecated and will be removed in a later version.
<br /><span class="attrib">(DM Smith, Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v3.0.0.bug_fixes" href="javascript:toggleList('v3.0.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v3.0.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1951">LUCENE-1951</a>: When the text provided to WildcardQuery has no wildcard
characters (ie matches a single term), don't lose the boost and
rewrite method settings.  Also, rewrite to PrefixQuery if the
wildcard is form "foo*", for slightly faster performance.
<br /><span class="attrib">(Robert
Muir via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2013">LUCENE-2013</a>: SpanRegexQuery does not work with QueryScorer.
<br /><span class="attrib">(Benjamin Keil via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2088">LUCENE-2088</a>: addAttribute() should only accept interfaces that
extend Attribute.
<br /><span class="attrib">(Shai Erera, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2045">LUCENE-2045</a>: Fix silly FileNotFoundException hit if you enable
infoStream on IndexWriter and then add an empty document and commit
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2046">LUCENE-2046</a>: IndexReader should not see the index as changed, after
IndexWriter.prepareCommit has been called but before
IndexWriter.commit is called.
<br /><span class="attrib">(Peter Keegan via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v3.0.0.new_features" href="javascript:toggleList('v3.0.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.0.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1933">LUCENE-1933</a>: Provide a convenience AttributeFactory that creates a
Token instance for all basic attributes.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2041">LUCENE-2041</a>: Parallelize the rest of ParallelMultiSearcher. Lots of
code refactoring and Java 5 concurrent support in MultiSearcher.
<br /><span class="attrib">(Joey Surls, Simon Willnauer via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2051">LUCENE-2051</a>: Add CharArraySet.copy() as a simple method to copy
any Set&lt;?&gt; to a CharArraySet that is optimized, if Set&lt;?&gt; is already
an CharArraySet.
<br /><span class="attrib">(Simon Willnauer)</span></li>
    </ol>
  </li>
  <li><a id="v3.0.0.optimizations" href="javascript:toggleList('v3.0.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v3.0.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1183">LUCENE-1183</a>: Optimize Levenshtein Distance computation in
FuzzyQuery.
<br /><span class="attrib">(Cédrik Lime via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2006">LUCENE-2006</a>: Optimization of FieldDocSortedHitQueue to always
use Comparable&lt;?&gt; interface.
<br /><span class="attrib">(Uwe Schindler, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2087">LUCENE-2087</a>: Remove recursion in NumericRangeTermEnum.
<br /><span class="attrib">(Uwe Schindler)</span></li>
    </ol>
  </li>
  <li><a id="v3.0.0.build" href="javascript:toggleList('v3.0.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v3.0.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-486">LUCENE-486</a>: Remove test-&gt;demo dependencies.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2024">LUCENE-2024</a>: Raise build requirements to Java 1.5 and ANT 1.7.0
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.9.1" href="javascript:toggleList('v2.9.1')">Release 2.9.1  [2009-11-06]</a></h3>
<ul id="v2.9.1.list">
  <li><a id="v2.9.1.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v2.9.1.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.9.1.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2002">LUCENE-2002</a>: Add required Version matchVersion argument when
constructing QueryParser or MultiFieldQueryParser and, default (as
of 2.9) enablePositionIncrements to true to match
StandardAnalyzer's 2.9 default
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.1.bug_fixes" href="javascript:toggleList('v2.9.1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v2.9.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1974">LUCENE-1974</a>: Fixed nasty bug in BooleanQuery (when it used
BooleanScorer for scoring), whereby some matching documents fail to
be collected.
<br /><span class="attrib">(Fulin Tang via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1124">LUCENE-1124</a>: Make sure FuzzyQuery always matches the precise term.
<br /><span class="attrib">(stefatwork@gmail.com via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1976">LUCENE-1976</a>: Fix IndexReader.isCurrent() to return the right thing
when the reader is a near real-time reader.
<br /><span class="attrib">(Jake Mannix via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1986">LUCENE-1986</a>: Fix NPE when scoring PayloadNearQuery
<br /><span class="attrib">(Peter Keegan,
Mark Miller via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1992">LUCENE-1992</a>: Fix thread hazard if a merge is committing just as an
exception occurs during sync
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1995">LUCENE-1995</a>: Note in javadocs that IndexWriter.setRAMBufferSizeMB
cannot exceed 2048 MB, and throw IllegalArgumentException if it
does.
<br /><span class="attrib">(Aaron McKee, Yonik Seeley, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2004">LUCENE-2004</a>: Fix Constants.LUCENE_MAIN_VERSION to not be inlined
by client code.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2016">LUCENE-2016</a>: Replace illegal U+FFFF character with the replacement
char (U+FFFD) during indexing, to prevent silent index corruption.
<br /><span class="attrib">(Peter Keegan, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.1.api_changes" href="javascript:toggleList('v2.9.1.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v2.9.1.api_changes.list">
      <li>Un-deprecate search(Weight weight, Filter filter, int n) from
Searchable interface (deprecated by accident).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li>Un-deprecate o.a.l.util.Version constants.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1987">LUCENE-1987</a>: Un-deprecate some ctors of Token, as they will not
be removed in 3.0 and are still useful. Also add some missing
o.a.l.util.Version constants for enabling invalid acronym
settings in StandardAnalyzer to be compatible with the coming
Lucene 3.0.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1973">LUCENE-1973</a>: Un-deprecate IndexSearcher.setDefaultFieldSortScoring,
to allow controlling per-IndexSearcher whether scores are computed
when sorting by field.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2043">LUCENE-2043</a>: Make IndexReader.commit(Map&lt;String,String&gt;) public.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.1.documentation" href="javascript:toggleList('v2.9.1.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v2.9.1.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1955">LUCENE-1955</a>: Fix Hits deprecation notice to point users in right
direction.
<br /><span class="attrib">(Mike McCandless, Mark Miller)</span></li>
      <li>Fix javadoc about score tracking done by search methods in Searcher
and IndexSearcher.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-2008">LUCENE-2008</a>: Javadoc improvements for TokenStream/Tokenizer/Token
<br /><span class="attrib">(Luke Nezda via Mike McCandless)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.9.0" href="javascript:toggleList('v2.9.0')">Release 2.9.0  [2009-09-25]</a></h3>
<ul id="v2.9.0.list">
  <li><a id="v2.9.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v2.9.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v2.9.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1575">LUCENE-1575</a>: Searchable.search(Weight, Filter, int, Sort) no
 longer computes a document score for each hit by default.  If
 document score tracking is still needed, you can call
 IndexSearcher.setDefaultFieldSortScoring(true, true) to enable
 both per-hit and maxScore tracking; however, this is deprecated
 and will be removed in 3.0.
<p/>
 Alternatively, use Searchable.search(Weight, Filter, Collector)
 and pass in a TopFieldCollector instance, using the following code
 sample:
<p/>
 <code><pre>
   TopFieldCollector tfc = TopFieldCollector.create(sort, numHits, fillFields,
                                                    true /* trackDocScores */,
                                                    true /* trackMaxScore */,
                                                    false /* docsInOrder */);
   searcher.search(query, tfc);
   TopDocs results = tfc.topDocs();</pre></code>
<p/>
 Note that your Sort object cannot use SortField.AUTO when you
 directly instantiate TopFieldCollector.
<p/>
 Also, the method search(Weight, Filter, Collector) was added to
 the Searchable interface and the Searcher abstract class to
 replace the deprecated HitCollector versions.  If you either
 implement Searchable or extend Searcher, you should change your
 code to implement this method.  If you already extend
 IndexSearcher, no further changes are needed to use Collector.
<p/>
 Finally, the values Float.NaN and Float.NEGATIVE_INFINITY are not
 valid scores.  Lucene uses these values internally in certain
 places, so if you have hits with such scores, it will cause
 problems.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1687">LUCENE-1687</a>: All methods and parsers from the interface ExtendedFieldCache
 have been moved into FieldCache. ExtendedFieldCache is now deprecated and
 contains only a few declarations for binary backwards compatibility.
 ExtendedFieldCache will be removed in version 3.0. Users of FieldCache and
 ExtendedFieldCache will be able to plug in Lucene 2.9 without recompilation.
 The auto cache (FieldCache.getAuto) is now deprecated. Due to the merge of
 ExtendedFieldCache and FieldCache, FieldCache can now additionally return
 long[] and double[] arrays in addition to int[] and float[] and StringIndex.
<p/>
 The interface changes are only notable for users implementing the interfaces,
 which was unlikely done, because there is no possibility to change
 Lucene's FieldCache implementation.
<br /><span class="attrib">(Grant Ingersoll, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1630">LUCENE-1630</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1771">LUCENE-1771</a>: Weight, previously an interface, is now an abstract
 class. Some of the method signatures have changed, but it should be fairly
 easy to see what adjustments must be made to existing code to sync up
 with the new API. You can find more detail in the API Changes section.
<p/>
 Going forward Searchable will be kept for convenience only and may
 be changed between minor releases without any deprecation
 process. It is not recommended that you implement it, but rather extend
 Searcher.
<br /><span class="attrib">(Shai Erera, Chris Hostetter, Martin Ruckli, Mark Miller via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1422">LUCENE-1422</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1693">LUCENE-1693</a>: The new Attribute based TokenStream API (see below)
 has some backwards breaks in rare cases. We did our best to make the
 transition as easy as possible and you are not likely to run into any problems.
 If your tokenizers still implement next(Token) or next(), the calls are
 automatically wrapped. The indexer and query parser use the new API
 (eg use incrementToken() calls). All core TokenStreams are implemented using
 the new API. You can mix old and new API style TokenFilters/TokenStream.
 Problems only occur when you have done the following:
 You have overridden next(Token) or next() in one of the non-abstract core
 TokenStreams/-Filters. These classes should normally be final, but some
 of them are not. In this case, next(Token)/next() would never be called.
 To fail early with a hard compile/runtime error, the next(Token)/next()
 methods in these TokenStreams/-Filters were made final in this release.
<br /><span class="attrib">(Michael Busch, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1763">LUCENE-1763</a>: MergePolicy now requires an IndexWriter instance to
 be passed upon instantiation. As a result, IndexWriter was removed
 as a method argument from all MergePolicy methods.
<br /><span class="attrib">(Shai Erera via
 Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1748">LUCENE-1748</a>: <a href="http://issues.apache.org/jira/browse/LUCENE-1001">LUCENE-1001</a> introduced PayloadSpans, but this was a back
 compat break and caused custom SpanQuery implementations to fail at runtime
 in a variety of ways. This issue attempts to remedy things by causing
 a compile time break on custom SpanQuery implementations and removing
 the PayloadSpans class, with its functionality now moved to Spans. To
 help in alleviating future back compat pain, Spans has been changed from
 an interface to an abstract class.
<br /><span class="attrib">(Hugh Cayless, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1808">LUCENE-1808</a>: Query.createWeight has been changed from protected to
 public. This will be a back compat break if you have overridden this
 method - but you are likely already affected by the <a href="http://issues.apache.org/jira/browse/LUCENE-1693">LUCENE-1693</a> (make Weight
 abstract rather than an interface) back compat break if you have overridden
 Query.creatWeight, so we have taken the opportunity to make this change.
<br /><span class="attrib">(Tim Smith, Shai Erera via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1708">LUCENE-1708</a> - IndexReader.document() no longer checks if the document is
 deleted. You can call IndexReader.isDeleted(n) prior to calling document(n).
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.0.changes_in_runtime_behavior" href="javascript:toggleList('v2.9.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v2.9.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1424">LUCENE-1424</a>: QueryParser now by default uses constant score auto
 rewriting when it generates a WildcardQuery and PrefixQuery (it
 already does so for TermRangeQuery, as well).  Call
 setMultiTermRewriteMethod(MultiTermQuery.SCORING_BOOLEAN_QUERY_REWRITE)
 to revert to slower BooleanQuery rewriting method.
<br /><span class="attrib">(Mark Miller via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1575">LUCENE-1575</a>: As of 2.9, the core collectors as well as
 IndexSearcher's search methods that return top N results, no
 longer filter documents with scores &lt;= 0.0. If you rely on this
 functionality you can use PositiveScoresOnlyCollector like this:
<p/>
 <code><pre>
   TopDocsCollector tdc = new TopScoreDocCollector(10);
   Collector c = new PositiveScoresOnlyCollector(tdc);
   searcher.search(query, c);
   TopDocs hits = tdc.topDocs();
   ...</pre></code>
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1604">LUCENE-1604</a>: IndexReader.norms(String field) is now allowed to
 return null if the field has no norms, as long as you've
 previously called IndexReader.setDisableFakeNorms(true).  This
 setting now defaults to false (to preserve the fake norms back
 compatible behavior) but in 3.0 will be hardwired to true.
<br /><span class="attrib">(Shon
 Vella via Mike McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1624">LUCENE-1624</a>: If you open IndexWriter with create=true and
 autoCommit=false on an existing index, IndexWriter no longer
 writes an empty commit when it's created.
<br /><span class="attrib">(Paul Taylor via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1593">LUCENE-1593</a>: When you call Sort() or Sort.setSort(String field,
 boolean reverse), the resulting SortField array no longer ends
 with SortField.FIELD_DOC (it was unnecessary as Lucene breaks ties
 internally by docID).
<br /><span class="attrib">(Shai Erera via Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1542">LUCENE-1542</a>: When the first token(s) have 0 position increment,
 IndexWriter used to incorrectly record the position as -1, if no
 payload is present, or Integer.MAX_VALUE if a payload is present.
 This causes positional queries to fail to match.  The bug is now
 fixed, but if your app relies on the buggy behavior then you must
 call IndexWriter.setAllowMinus1Position().  That API is deprecated
 so you must fix your application, and rebuild your index, to not
 rely on this behavior by the 3.0 release of Lucene.
<br /><span class="attrib">(Jonathan
 Mamou, Mark Miller via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1715">LUCENE-1715</a>: Finalizers have been removed from the 4 core classes
 that still had them, since they will cause GC to take longer, thus
 tying up memory for longer, and at best they mask buggy app code.
 DirectoryReader (returned from IndexReader.open) &amp; IndexWriter
 previously released the write lock during finalize.
 SimpleFSDirectory.FSIndexInput closed the descriptor in its
 finalizer, and NativeFSLock released the lock.  It's possible
 applications will be affected by this, but only if the application
 is failing to close reader/writers.
<br /><span class="attrib">(Brian Groose via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1717">LUCENE-1717</a>: Fixed IndexWriter to account for RAM usage of
 buffered deletions.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1727">LUCENE-1727</a>: Ensure that fields are stored &amp; retrieved in the
 exact order in which they were added to the document.  This was
 true in all Lucene releases before 2.3, but was broken in 2.3 and
 2.4, and is now fixed in 2.9.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1678">LUCENE-1678</a>: The addition of Analyzer.reusableTokenStream
 accidentally broke back compatibility of external analyzers that
 subclassed core analyzers that implemented tokenStream but not
 reusableTokenStream.  This is now fixed, such that if
 reusableTokenStream is invoked on such a subclass, that method
 will forcefully fallback to tokenStream.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1801">LUCENE-1801</a>: Token.clear() and Token.clearNoTermBuffer() now also clear
 startOffset, endOffset and type. This is not likely to affect any
 Tokenizer chains, as Tokenizers normally always set these three values.
 This change was made to be conform to the new AttributeImpl.clear() and
 AttributeSource.clearAttributes() to work identical for Token as one for all
 AttributeImpl and the 6 separate AttributeImpls.
<br /><span class="attrib">(Uwe Schindler, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1483">LUCENE-1483</a>: When searching over multiple segments, a new Scorer is now created
 for each segment. Searching has been telescoped out a level and IndexSearcher now
 operates much like MultiSearcher does. The Weight is created only once for the top
 level Searcher, but each Scorer is passed a per-segment IndexReader. This will
 result in doc ids in the Scorer being internal to the per-segment IndexReader. It
 has always been outside of the API to count on a given IndexReader to contain every
 doc id in the index - and if you have been ignoring MultiSearcher in your custom code
 and counting on this fact, you will find your code no longer works correctly. If a
 custom Scorer implementation uses any caches/filters that rely on being based on the
 top level IndexReader, it will need to be updated to correctly use contextless
 caches/filters eg you can't count on the IndexReader to contain any given doc id or
 all of the doc ids.
<br /><span class="attrib">(Mark Miller, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1846">LUCENE-1846</a>: DateTools now uses the US locale to format the numbers in its
 date/time strings instead of the default locale. For most locales there will
 be no change in the index format, as DateFormatSymbols is using ASCII digits.
 The usage of the US locale is important to guarantee correct ordering of
 generated terms.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1860">LUCENE-1860</a>: MultiTermQuery now defaults to
 CONSTANT_SCORE_AUTO_REWRITE_DEFAULT rewrite method (previously it
 was SCORING_BOOLEAN_QUERY_REWRITE).  This means that PrefixQuery
 and WildcardQuery will now produce constant score for all matching
 docs, equal to the boost of the query.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.0.api_changes" href="javascript:toggleList('v2.9.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(38)
    <ol id="v2.9.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1419">LUCENE-1419</a>: Add expert API to set custom indexing chain. This API is
package-protected for now, so we don't have to officially support it.
Yet, it will give us the possibility to try out different consumers
in the chain.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1427">LUCENE-1427</a>: DocIdSet.iterator() is now allowed to throw
IOException.
<br /><span class="attrib">(Paul Elschot, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1422">LUCENE-1422</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1693">LUCENE-1693</a>: New TokenStream API that uses a new class called
AttributeSource instead of the Token class, which is now a utility class that
holds common Token attributes. All attributes that the Token class had have
been moved into separate classes: TermAttribute, OffsetAttribute,
PositionIncrementAttribute, PayloadAttribute, TypeAttribute and FlagsAttribute.
The new API is much more flexible; it allows to combine the Attributes
arbitrarily and also to define custom Attributes. The new API has the same
performance as the old next(Token) approach. For conformance with this new
API Tee-/SinkTokenizer was deprecated and replaced by a new TeeSinkTokenFilter.
<br /><span class="attrib">(Michael Busch, Uwe Schindler; additional contributions and bug fixes by
Daniel Shane, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1467">LUCENE-1467</a>: Add nextDoc() and next(int) methods to OpenBitSetIterator.
These methods can be used to avoid additional calls to doc().
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1468">LUCENE-1468</a>: Deprecate Directory.list(), which sometimes (in
FSDirectory) filters out files that don't look like index files, in
favor of new Directory.listAll(), which does no filtering.  Also,
listAll() will never return null; instead, it throws an IOException
(or subclass).  Specifically, FSDirectory.listAll() will throw the
newly added NoSuchDirectoryException if the directory does not
exist.
<br /><span class="attrib">(Marcel Reutegger, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1546">LUCENE-1546</a>: Add IndexReader.flush(Map commitUserData), allowing
you to record an opaque commitUserData (maps String -&gt; String) into
the commit written by IndexReader.  This matches IndexWriter's
commit methods.
<br /><span class="attrib">(Jason Rutherglen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-652">LUCENE-652</a>: Added org.apache.lucene.document.CompressionTools, to
enable compressing &amp; decompressing binary content, external to
Lucene's indexing.  Deprecated Field.Store.COMPRESS.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1561">LUCENE-1561</a>: Renamed Field.omitTf to Field.omitTermFreqAndPositions
<br /><span class="attrib">(Otis Gospodnetic via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1500">LUCENE-1500</a>: Added new InvalidTokenOffsetsException to Highlighter methods
 to denote issues when offsets in TokenStream tokens exceed the length of the
 provided text.
<br /><span class="attrib">(Mark Harwood)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1575">LUCENE-1575</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1483">LUCENE-1483</a>: HitCollector is now deprecated in favor of
 a new Collector abstract class. For easy migration, people can use
 HitCollectorWrapper which translates (wraps) HitCollector into
 Collector. Note that this class is also deprecated and will be
 removed when HitCollector is removed.  Also TimeLimitedCollector
 is deprecated in favor of the new TimeLimitingCollector which
 extends Collector.
<br /><span class="attrib">(Shai Erera, Mark Miller, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1592">LUCENE-1592</a>: The method TermsEnum.skipTo() was deprecated, because
 it is used nowhere in core/contrib and there is only a very ineffective
 default implementation available. If you want to position a TermEnum
 to another Term, create a new one using IndexReader.terms(Term).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1621">LUCENE-1621</a>: MultiTermQuery.getTerm() has been deprecated as it does
 not make sense for all subclasses of MultiTermQuery. Check individual
 subclasses to see if they support getTerm().
<br /><span class="attrib">(Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1636">LUCENE-1636</a>: Make TokenFilter.input final so it's set only
 once.
<br /><span class="attrib">(Wouter Heijke, Uwe Schindler via Mike McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1658">LUCENE-1658</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1451">LUCENE-1451</a>: Renamed FSDirectory to SimpleFSDirectory
 (but left an FSDirectory base class).  Added an FSDirectory.open
 static method to pick a good default FSDirectory implementation
 given the OS. FSDirectories should now be instantiated using
 FSDirectory.open or with public constructors rather than
 FSDirectory.getDirectory(), which has been deprecated.
<br /><span class="attrib">(Michael McCandless, Uwe Schindler, yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1665">LUCENE-1665</a>: Deprecate SortField.AUTO, to be removed in 3.0.
 Instead, when sorting by field, the application should explicitly
 state the type of the field.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1660">LUCENE-1660</a>: StopFilter, StandardAnalyzer, StopAnalyzer now
 require up front specification of enablePositionIncrement
<br /><span class="attrib">(Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1614">LUCENE-1614</a>: DocIdSetIterator's next() and skipTo() were deprecated in favor
 of the new nextDoc() and advance(). The new methods return the doc Id they
 landed on, saving an extra call to doc() in most cases.
 For easy migration of the code, you can change the calls to next() to
 nextDoc() != DocIdSetIterator.NO_MORE_DOCS and similarly for skipTo().
 However it is advised that you take advantage of the returned doc ID and not
 call doc() following those two.
 Also, doc() was deprecated in favor of docID(). docID() should return -1 or
 NO_MORE_DOCS if nextDoc/advance were not called yet, or NO_MORE_DOCS if the
 iterator has exhausted. Otherwise it should return the current doc ID.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1672">LUCENE-1672</a>: All ctors/opens and other methods using String/File to
 specify the directory in IndexReader, IndexWriter, and IndexSearcher
 were deprecated. You should instantiate the Directory manually before
 and pass it to these classes (<a href="http://issues.apache.org/jira/browse/LUCENE-1451">LUCENE-1451</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1658">LUCENE-1658</a>).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1407">LUCENE-1407</a>: Move RemoteSearchable, RemoteCachingWrapperFilter out
 of Lucene's core into new contrib/remote package.  Searchable no
 longer extends java.rmi.Remote
<br /><span class="attrib">(Simon Willnauer via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1677">LUCENE-1677</a>: The global property
 org.apache.lucene.SegmentReader.class, and
 ReadOnlySegmentReader.class are now deprecated, to be removed in
 3.0.  src/gcj/* has been removed.
<br /><span class="attrib">(Earwin Burrfoot via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1673">LUCENE-1673</a>: Deprecated NumberTools in favour of the new
 NumericRangeQuery and its new indexing format for numeric or
 date values.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1630">LUCENE-1630</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1771">LUCENE-1771</a>: Weight is now an abstract class, and adds
 a scorer(IndexReader, boolean /* scoreDocsInOrder */, boolean /*
 topScorer */) method instead of scorer(IndexReader). IndexSearcher uses
 this method to obtain a scorer matching the capabilities of the Collector
 wrt orderedness of docIDs. Some Scorers (like BooleanScorer) are much more
 efficient if out-of-order documents scoring is allowed by a Collector.
 Collector must now implement acceptsDocsOutOfOrder. If you write a
 Collector which does not care about doc ID orderness, it is recommended
 that you return true.  Weight has a scoresDocsOutOfOrder method, which by
 default returns false.  If you create a Weight which will score documents
 out of order if requested, you should override that method to return true.
 BooleanQuery's setAllowDocsOutOfOrder and getAllowDocsOutOfOrder have been
 deprecated as they are not needed anymore. BooleanQuery will now score docs
 out of order when used with a Collector that can accept docs out of order.
 Finally, Weight#explain now takes a sub-reader and sub-docID, rather than
 a top level reader and docID.
<br /><span class="attrib">(Shai Erera, Chris Hostetter, Martin Ruckli, Mark Miller via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1466">LUCENE-1466</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1906">LUCENE-1906</a>: Added CharFilter and MappingCharFilter, which allows
 chaining &amp; mapping of characters before tokenizers run. CharStream (subclass of
 Reader) is the base class for custom java.io.Reader's, that support offset
 correction. Tokenizers got an additional method correctOffset() that is passed
 down to the underlying CharStream if input is a subclass of CharStream/-Filter.
<br /><span class="attrib">(Koji Sekiguchi via Mike McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1703">LUCENE-1703</a>: Add IndexWriter.waitForMerges.
<br /><span class="attrib">(Tim Smith via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1625">LUCENE-1625</a>: CheckIndex's programmatic API now returns separate
 classes detailing the status of each component in the index, and
 includes more detailed status than previously.
<br /><span class="attrib">(Tim Smith via
 Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1713">LUCENE-1713</a>: Deprecated RangeQuery and RangeFilter and renamed to
 TermRangeQuery and TermRangeFilter. TermRangeQuery is in constant
 score auto rewrite mode by default. The new classes also have new
 ctors taking field and term ranges as Strings (see also
 <a href="http://issues.apache.org/jira/browse/LUCENE-1424">LUCENE-1424</a>).
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1609">LUCENE-1609</a>: The termInfosIndexDivisor must now be specified
 up-front when opening the IndexReader.  Attempts to call
 IndexReader.setTermInfosIndexDivisor will hit an
 UnsupportedOperationException.  This was done to enable removal of
 all synchronization in TermInfosReader, which previously could
 cause threads to pile up in certain cases.
<br /><span class="attrib">(Dan Rosher via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1688">LUCENE-1688</a>: Deprecate static final String stop word array in and
 StopAnalzyer and replace it with an immutable implementation of
 CharArraySet.
<br /><span class="attrib">(Simon Willnauer via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1742">LUCENE-1742</a>: SegmentInfos, SegmentInfo and SegmentReader have been
 made public as expert, experimental APIs.  These APIs may suddenly
 change from release to release
<br /><span class="attrib">(Jason Rutherglen via Mike
 McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1754">LUCENE-1754</a>: QueryWeight.scorer() can return null if no documents
 are going to be matched by the query. Similarly,
 Filter.getDocIdSet() can return null if no documents are going to
 be accepted by the Filter. Note that these 'can' return null,
 however they don't have to and can return a Scorer/DocIdSet which
 does not match / reject all documents.  This is already the
 behavior of some QueryWeight/Filter implementations, and is
 documented here just for emphasis.
<br /><span class="attrib">(Shai Erera via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1705">LUCENE-1705</a>: Added IndexWriter.deleteAllDocuments.
<br /><span class="attrib">(Tim Smith via
 Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1460">LUCENE-1460</a>: Changed TokenStreams/TokenFilters in contrib to
 use the new TokenStream API.
<br /><span class="attrib">(Robert Muir, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1748">LUCENE-1748</a>: <a href="http://issues.apache.org/jira/browse/LUCENE-1001">LUCENE-1001</a> introduced PayloadSpans, but this was a back
 compat break and caused custom SpanQuery implementations to fail at runtime
 in a variety of ways. This issue attempts to remedy things by causing
 a compile time break on custom SpanQuery implementations and removing
 the PayloadSpans class, with its functionality now moved to Spans. To
 help in alleviating future back compat pain, Spans has been changed from
 an interface to an abstract class.
<br /><span class="attrib">(Hugh Cayless, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1808">LUCENE-1808</a>: Query.createWeight has been changed from protected to
 public.
<br /><span class="attrib">(Tim Smith, Shai Erera via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1826">LUCENE-1826</a>: Add constructors that take AttributeSource and
 AttributeFactory to all Tokenizer implementations.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1847">LUCENE-1847</a>: Similarity#idf for both a Term and Term Collection have
 been deprecated. New versions that return an IDFExplanation have been
 added.
<br /><span class="attrib">(Yasoja Seneviratne, Mike McCandless, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1877">LUCENE-1877</a>: Made NativeFSLockFactory the default for
 the new FSDirectory API (open(), FSDirectory subclass ctors).
 All FSDirectory system properties were deprecated and all lock
 implementations use no lock prefix if the locks are stored inside
 the index directory. Because the deprecated String/File ctors of
 IndexWriter and IndexReader (<a href="http://issues.apache.org/jira/browse/LUCENE-1672">LUCENE-1672</a>) and FSDirectory.getDirectory()
 still use the old SimpleFSLockFactory and the new API
 NativeFSLockFactory, we strongly recommend not to mix deprecated
 and new API.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1911">LUCENE-1911</a>: Added a new method isCacheable() to DocIdSet. This method
 should return true, if the underlying implementation does not use disk
 I/O and is fast enough to be directly cached by CachingWrapperFilter.
 OpenBitSet, SortedVIntList, and DocIdBitSet are such candidates.
 The default implementation of the abstract DocIdSet class returns false.
 In this case, CachingWrapperFilter copies the DocIdSetIterator into an
 OpenBitSet for caching.
<br /><span class="attrib">(Uwe Schindler, Thomas Becker)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.0.bug_fixes" href="javascript:toggleList('v2.9.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(26)
    <ol id="v2.9.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1415">LUCENE-1415</a>: MultiPhraseQuery has incorrect hashCode() and equals()
implementation - Leads to Solr Cache misses.
<br /><span class="attrib">(Todd Feak, Mark Miller via yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1327">LUCENE-1327</a>: Fix TermSpans#skipTo() to behave as specified in javadocs
of Terms#skipTo().
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1573">LUCENE-1573</a>: Do not ignore InterruptedException (caused by
Thread.interrupt()) nor enter deadlock/spin loop. Now, an interrupt
will cause a RuntimeException to be thrown.  In 3.0 we will change
public APIs to throw InterruptedException.
<br /><span class="attrib">(Jeremy Volkman via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1590">LUCENE-1590</a>: Fixed stored-only Field instances do not change the
value of omitNorms, omitTermFreqAndPositions in FieldInfo; when you
retrieve such fields they will now have omitNorms=true and
omitTermFreqAndPositions=false (though these values are unused).
<br /><span class="attrib">(Uwe Schindler via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1587">LUCENE-1587</a>: RangeQuery#equals() could consider a RangeQuery
without a collator equal to one with a collator.
<br /><span class="attrib">(Mark Platvoet via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1600">LUCENE-1600</a>: Don't call String.intern unnecessarily in some cases
when loading documents from the index.
<br /><span class="attrib">(P Eger via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1611">LUCENE-1611</a>: Fix case where OutOfMemoryException in IndexWriter
could cause "infinite merging" to happen.
<br /><span class="attrib">(Christiaan Fluit via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1623">LUCENE-1623</a>: Properly handle back-compatibility of 2.3.x indexes that
contain field names with non-ascii characters.
<br /><span class="attrib">(Mike Streeton via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1593">LUCENE-1593</a>: MultiSearcher and ParallelMultiSearcher did not break ties (in
sort) by doc Id in a consistent manner (i.e., if Sort.FIELD_DOC was used vs.
when it wasn't).
<br /><span class="attrib">(Shai Erera via Michael McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1647">LUCENE-1647</a>: Fix case where IndexReader.undeleteAll would cause
 the segment's deletion count to be incorrect.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1542">LUCENE-1542</a>: When the first token(s) have 0 position increment,
 IndexWriter used to incorrectly record the position as -1, if no
 payload is present, or Integer.MAX_VALUE if a payload is present.
 This causes positional queries to fail to match.  The bug is now
 fixed, but if your app relies on the buggy behavior then you must
 call IndexWriter.setAllowMinus1Position().  That API is deprecated
 so you must fix your application, and rebuild your index, to not
 rely on this behavior by the 3.0 release of Lucene.
<br /><span class="attrib">(Jonathan
 Mamou, Mark Miller via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1658">LUCENE-1658</a>: Fixed MMapDirectory to correctly throw IOExceptions
 on EOF, removed numeric overflow possibilities and added support
 for a hack to unmap the buffers on closing IndexInput.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1681">LUCENE-1681</a>: Fix infinite loop caused by a call to DocValues methods
 getMinValue, getMaxValue, getAverageValue.
<br /><span class="attrib">(Simon Willnauer via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1599">LUCENE-1599</a>: Add clone support for SpanQuerys. SpanRegexQuery counts
 on this functionality and does not work correctly without it.
<br /><span class="attrib">(Billow Gao, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1718">LUCENE-1718</a>: Fix termInfosIndexDivisor to carry over to reopened
 readers
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1583">LUCENE-1583</a>: SpanOrQuery skipTo() doesn't always move forwards as Spans
	documentation indicates it should.
<br /><span class="attrib">(Moti Nisenson via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1566">LUCENE-1566</a>: Sun JVM Bug
 <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6478546">http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6478546</a> causes
 invalid OutOfMemoryError when reading too many bytes at once from
 a file on 32bit JVMs that have a large maximum heap size.  This
 fix adds set/getReadChunkSize to FSDirectory so that large reads
 are broken into chunks, to work around this JVM bug.  On 32bit
 JVMs the default chunk size is 100 MB; on 64bit JVMs, which don't
 show the bug, the default is Integer.MAX_VALUE.
<br /><span class="attrib">(Simon Willnauer
 via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1448">LUCENE-1448</a>: Added TokenStream.end() to perform end-of-stream
 operations (ie to return the end offset of the tokenization).
 This is important when multiple fields with the same name are added
 to a document, to ensure offsets recorded in term vectors for all
 of the instances are correct.
<br /><span class="attrib">(Mike McCandless, Mark Miller, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1805">LUCENE-1805</a>: CloseableThreadLocal did not allow a null Object in get(),
 although it does allow it in set(Object). Fix get() to not assert the object
 is not null.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1801">LUCENE-1801</a>: Changed all Tokenizers or TokenStreams in core/contrib)
 that are the source of Tokens to always call
 AttributeSource.clearAttributes() first.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1819">LUCENE-1819</a>: MatchAllDocsQuery.toString(field) should produce output
 that is parsable by the QueryParser.
<br /><span class="attrib">(John Wang, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1836">LUCENE-1836</a>: Fix localization bug in the new query parser and add
 new LocalizedTestCase as base class for localization junit tests.
<br /><span class="attrib">(Robert Muir, Uwe Schindler via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1847">LUCENE-1847</a>: PhraseQuery/TermQuery/SpanQuery use IndexReader specific stats
 in their Weight#explain methods - these stats should be corpus wide.
<br /><span class="attrib">(Yasoja Seneviratne, Mike McCandless, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1885">LUCENE-1885</a>: Fix the bug that NativeFSLock.isLocked() did not work,
 if the lock was obtained by another NativeFSLock(Factory) instance.
 Because of this IndexReader.isLocked() and IndexWriter.isLocked() did
 not work correctly.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1899">LUCENE-1899</a>: Fix O(N^2) CPU cost when setting docIDs in order in an
 OpenBitSet, due to an inefficiency in how the underlying storage is
 reallocated.
<br /><span class="attrib">(Nadav Har'El via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1918">LUCENE-1918</a>: Fixed cases where a ParallelReader would
generate exceptions on being passed to
IndexWriter.addIndexes(IndexReader[]).  First case was when the
ParallelReader was empty.  Second case was when the ParallelReader
used to contain documents with TermVectors, but all such documents
have been deleted.
<br /><span class="attrib">(Christian Kohlschütter via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.0.new_features" href="javascript:toggleList('v2.9.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(36)
    <ol id="v2.9.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1411">LUCENE-1411</a>: Added expert API to open an IndexWriter on a prior
 commit, obtained from IndexReader.listCommits.  This makes it
 possible to rollback changes to an index even after you've closed
 the IndexWriter that made the changes, assuming you are using an
 IndexDeletionPolicy that keeps past commits around.  This is useful
 when building transactional support on top of Lucene.
<br /><span class="attrib">(Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1382">LUCENE-1382</a>: Add an optional arbitrary Map (String -&gt; String)
 "commitUserData" to IndexWriter.commit(), which is stored in the
 segments file and is then retrievable via
 IndexReader.getCommitUserData instance and static methods.
<br /><span class="attrib">(Shalin Shekhar Mangar via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1420">LUCENE-1420</a>: Similarity now has a computeNorm method that allows
 custom Similarity classes to override how norm is computed.  It's
 provided a FieldInvertState instance that contains details from
 inverting the field.  The default impl is boost *
 lengthNorm(numTerms), to be backwards compatible.  Also added
 {set/get}DiscountOverlaps to DefaultSimilarity, to control whether
 overlapping tokens (tokens with 0 position increment) should be
 counted in lengthNorm.
<br /><span class="attrib">(Andrzej Bialecki via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1424">LUCENE-1424</a>: Moved constant score query rewrite capability into
 MultiTermQuery, allowing TermRangeQuery, PrefixQuery and WildcardQuery
 to switch between constant-score rewriting or BooleanQuery
 expansion rewriting via a new setRewriteMethod method.
 Deprecated ConstantScoreRangeQuery
<br /><span class="attrib">(Mark Miller via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1461">LUCENE-1461</a>: Added FieldCacheRangeFilter, a RangeFilter for
 single-term fields that uses FieldCache to compute the filter.  If
 your documents all have a single term for a given field, and you
 need to create many RangeFilters with varying lower/upper bounds,
 then this is likely a much faster way to create the filters than
 RangeFilter.  FieldCacheRangeFilter allows ranges on all data types,
 FieldCache supports (term ranges, byte, short, int, long, float, double).
 However, it comes at the expense of added RAM consumption and slower
 first-time usage due to populating the FieldCache.  It also does not
 support collation
<br /><span class="attrib">(Tim Sturge, Matt Ericson via Mike McCandless and
 Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1296">LUCENE-1296</a>: add protected method CachingWrapperFilter.docIdSetToCache
 to allow subclasses to choose which DocIdSet implementation to use
<br /><span class="attrib">(Paul Elschot via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1390">LUCENE-1390</a>: Added ASCIIFoldingFilter, a Filter that converts
 alphabetic, numeric, and symbolic Unicode characters which are not in
 the first 127 ASCII characters (the "Basic Latin" Unicode block) into
 their ASCII equivalents, if one exists. ISOLatin1AccentFilter, which
 handles a subset of this filter, has been deprecated.
<br /><span class="attrib">(Andi Vajda, Steven Rowe via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1478">LUCENE-1478</a>: Added new SortField constructor allowing you to
 specify a custom FieldCache parser to generate numeric values from
 terms for a field.
<br /><span class="attrib">(Uwe Schindler via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1528">LUCENE-1528</a>: Add support for Ideographic Space to the queryparser.
<br /><span class="attrib">(Luis Alves via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1487">LUCENE-1487</a>: Added FieldCacheTermsFilter, to filter by multiple
 terms on single-valued fields.  The filter loads the FieldCache
 for the field the first time it's called, and subsequent usage of
 that field, even with different Terms in the filter, are fast.
<br /><span class="attrib">(Tim Sturge, Shalin Shekhar Mangar via Mike McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1314">LUCENE-1314</a>: Add clone(), clone(boolean readOnly) and
 reopen(boolean readOnly) to IndexReader.  Cloning an IndexReader
 gives you a new reader which you can make changes to (deletions,
 norms) without affecting the original reader.  Now, with clone or
 reopen you can change the readOnly of the original reader.
<br /><span class="attrib">(Jason
 Rutherglen, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1506">LUCENE-1506</a>: Added FilteredDocIdSet, an abstract class which you
 subclass to implement the "match" method to accept or reject each
 docID.  Unlike ChainedFilter (under contrib/misc),
 FilteredDocIdSet never requires you to materialize the full
 bitset.  Instead, match() is called on demand per docID.
<br /><span class="attrib">(John
 Wang via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1398">LUCENE-1398</a>: Add ReverseStringFilter to contrib/analyzers, a filter
 to reverse the characters in each token.
<br /><span class="attrib">(Koji Sekiguchi via yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1551">LUCENE-1551</a>: Add expert IndexReader.reopen(IndexCommit) to allow
 efficiently opening a new reader on a specific commit, sharing
 resources with the original reader.
<br /><span class="attrib">(Torin Danil via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1434">LUCENE-1434</a>: Added org.apache.lucene.util.IndexableBinaryStringTools,
 to encode byte[] as String values that are valid terms, and
 maintain sort order of the original byte[] when the bytes are
 interpreted as unsigned.
<br /><span class="attrib">(Steven Rowe via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1543">LUCENE-1543</a>: Allow MatchAllDocsQuery to optionally use norms from
 a specific fields to set the score for a document.
<br /><span class="attrib">(Karl Wettin
 via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1586">LUCENE-1586</a>: Add IndexReader.getUniqueTermCount().
<br /><span class="attrib">(Mike
 McCandless via Derek)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1516">LUCENE-1516</a>: Added "near real-time search" to IndexWriter, via a
 new expert getReader() method.  This method returns a reader that
 searches the full index, including any uncommitted changes in the
 current IndexWriter session.  This should result in a faster
 turnaround than the normal approach of commiting the changes and
 then reopening a reader.
<br /><span class="attrib">(Jason Rutherglen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1603">LUCENE-1603</a>: Added new MultiTermQueryWrapperFilter, to wrap any
 MultiTermQuery as a Filter.  Also made some improvements to
 MultiTermQuery: return DocIdSet.EMPTY_DOCIDSET if there are no
 terms in the enum; track the total number of terms it visited
 during rewrite (getTotalNumberOfTerms).  FilteredTermEnum is also
 more friendly to subclassing.
<br /><span class="attrib">(Uwe Schindler via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1605">LUCENE-1605</a>: Added BitVector.subset().
<br /><span class="attrib">(Jeremy Volkman via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1618">LUCENE-1618</a>: Added FileSwitchDirectory that enables files with
 specified extensions to be stored in a primary directory and the
 rest of the files to be stored in the secondary directory.  For
 example, this can be useful for the large doc-store (stored
 fields, term vectors) files in FSDirectory and the rest of the
 index files in a RAMDirectory.
<br /><span class="attrib">(Jason Rutherglen via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1494">LUCENE-1494</a>: Added FieldMaskingSpanQuery which can be used to
 cross-correlate Spans from different fields.
<br /><span class="attrib">(Paul Cowan and Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1634">LUCENE-1634</a>: Add calibrateSizeByDeletes to LogMergePolicy, to take
 deletions into account when considering merges.
<br /><span class="attrib">(Yasuhiro Matsuda
 via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1550">LUCENE-1550</a>: Added new n-gram based String distance measure for spell checking.
 See the Javadocs for NGramDistance.java for a reference paper on why
 this is helpful
<br /><span class="attrib">(Tom Morton via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1470">LUCENE-1470</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1582">LUCENE-1582</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1602">LUCENE-1602</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1673">LUCENE-1673</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1701">LUCENE-1701</a>, <a href="http://issues.apache.org/jira/browse/LUCENE-1712">LUCENE-1712</a>:
 Added NumericRangeQuery and NumericRangeFilter, a fast alternative to
 RangeQuery/RangeFilter for numeric searches. They depend on a specific
 structure of terms in the index that can be created by indexing
 using the new NumericField or NumericTokenStream classes. NumericField
 can only be used for indexing and optionally stores the values as
 string representation in the doc store. Documents returned from
 IndexReader/IndexSearcher will return only the String value using
 the standard Fieldable interface. NumericFields can be sorted on
 and loaded into the FieldCache.
<br /><span class="attrib">(Uwe Schindler, Yonik Seeley,
 Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1405">LUCENE-1405</a>: Added support for Ant resource collections in contrib/ant
 &lt;index&gt; task.
<br /><span class="attrib">(Przemyslaw Sztoch via Erik Hatcher)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1699">LUCENE-1699</a>: Allow setting a TokenStream on Field/Fieldable for indexing
 in conjunction with any other ways to specify stored field values,
 currently binary or string values.
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1701">LUCENE-1701</a>: Made the standard FieldCache.Parsers public and added
 parsers for fields generated using NumericField/NumericTokenStream.
 All standard parsers now also implement Serializable and enforce
 their singleton status.
<br /><span class="attrib">(Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1741">LUCENE-1741</a>: User configurable maximum chunk size in MMapDirectory.
 On 32 bit platforms, the address space can be very fragmented, so
 one big ByteBuffer for the whole file may not fit into address space.
<br /><span class="attrib">(Eks Dev via Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1644">LUCENE-1644</a>: Enable 4 rewrite modes for queries deriving from
 MultiTermQuery (WildcardQuery, PrefixQuery, TermRangeQuery,
 NumericRangeQuery): CONSTANT_SCORE_FILTER_REWRITE first creates a
 filter and then assigns constant score (boost) to docs;
 CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE create a BooleanQuery but
 uses a constant score (boost); SCORING_BOOLEAN_QUERY_REWRITE also
 creates a BooleanQuery but keeps the BooleanQuery's scores;
 CONSTANT_SCORE_AUTO_REWRITE tries to pick the most performant
 constant-score rewrite method.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1448">LUCENE-1448</a>: Added TokenStream.end(), to perform end-of-stream
 operations.  This is currently used to fix offset problems when
 multiple fields with the same name are added to a document.
<br /><span class="attrib">(Mike McCandless, Mark Miller, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1776">LUCENE-1776</a>: Add an option to not collect payloads for an ordered
 SpanNearQuery. Payloads were not lazily loaded in this case as
 the javadocs implied. If you have payloads and want to use an ordered
 SpanNearQuery that does not need to use the payloads, you can
 disable loading them with a new constructor switch.
<br /><span class="attrib">(Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1341">LUCENE-1341</a>: Added PayloadNearQuery to enable SpanNearQuery functionality
 with payloads
<br /><span class="attrib">(Peter Keegan, Grant Ingersoll, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1790">LUCENE-1790</a>: Added PayloadTermQuery to enable scoring of payloads
 based on the maximum payload seen for a document.
 Slight refactoring of Similarity and other payload queries
<br /><span class="attrib">(Grant Ingersoll, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1749">LUCENE-1749</a>: Addition of FieldCacheSanityChecker utility, and
 hooks to use it in all existing Lucene Tests.  This class can
 be used by any application to inspect the FieldCache and provide
 diagnostic information about the possibility of inconsistent
 FieldCache usage.  Namely: FieldCache entries for the same field
 with different datatypes or parsers; and FieldCache entries for
 the same field in both a reader, and one of it's (descendant) sub
 readers.
<br /><span class="attrib">(Chris Hostetter, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1789">LUCENE-1789</a>: Added utility class
 oal.search.function.MultiValueSource to ease the transition to
 segment based searching for any apps that directly call
 oal.search.function.* APIs.  This class wraps any other
 ValueSource, but takes care when composite (multi-segment) are
 passed to not double RAM usage in the FieldCache.
<br /><span class="attrib">(Chris
 Hostetter, Mark Miller, Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.0.optimizations" href="javascript:toggleList('v2.9.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(13)
    <ol id="v2.9.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1427">LUCENE-1427</a>: Fixed QueryWrapperFilter to not waste time computing
 scores of the query, since they are just discarded.  Also, made it
 more efficient (single pass) by not creating &amp; populating an
 intermediate OpenBitSet
<br /><span class="attrib">(Paul Elschot, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1443">LUCENE-1443</a>: Performance improvement for OpenBitSetDISI.inPlaceAnd()
<br /><span class="attrib">(Paul Elschot via yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1484">LUCENE-1484</a>: Remove synchronization of IndexReader.document() by
 using CloseableThreadLocal internally.
<br /><span class="attrib">(Jason Rutherglen via Mike
 McCandless)</span>.
<p/>
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1124">LUCENE-1124</a>: Short circuit FuzzyQuery.rewrite when input token length
 is small compared to minSimilarity.
<br /><span class="attrib">(Timo Nentwig, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1316">LUCENE-1316</a>: MatchAllDocsQuery now avoids the synchronized
 IndexReader.isDeleted() call per document, by directly accessing
 the underlying deleteDocs BitVector.  This improves performance
 with non-readOnly readers, especially in a multi-threaded
 environment.
<br /><span class="attrib">(Todd Feak, Yonik Seeley, Jason Rutherglen via Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1483">LUCENE-1483</a>: When searching over multiple segments we now visit
 each sub-reader one at a time.  This speeds up warming, since
 FieldCache entries (if required) can be shared across reopens for
 those segments that did not change, and also speeds up searches
 that sort by relevance or by field values.
<br /><span class="attrib">(Mark Miller, Mike
 McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1575">LUCENE-1575</a>: The new Collector class decouples collect() from
 score computation.  Collector.setScorer is called to establish the
 current Scorer in-use per segment.  Collectors that require the
 score should then call Scorer.score() per hit inside
 collect().
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1596">LUCENE-1596</a>: MultiTermDocs speedup when set with
 MultiTermDocs.seek(MultiTermEnum)
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1653">LUCENE-1653</a>: Avoid creating a Calendar in every call to
 DateTools#dateToString, DateTools#timeToString and
 DateTools#round.
<br /><span class="attrib">(Shai Erera via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1688">LUCENE-1688</a>: Deprecate static final String stop word array and
 replace it with an immutable implementation of CharArraySet.
 Removes conversions between Set and array.
<br /><span class="attrib">(Simon Willnauer via Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1754">LUCENE-1754</a>: BooleanQuery.queryWeight.scorer() will return null if
 it won't match any documents (e.g. if there are no required and
 optional scorers, or not enough optional scorers to satisfy
 minShouldMatch).
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1607">LUCENE-1607</a>: To speed up string interning for commonly used
 strings, the StringHelper.intern() interface was added with a
 default implementation that uses a lockless cache.
<br /><span class="attrib">(Earwin Burrfoot, yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1800">LUCENE-1800</a>: QueryParser should use reusable TokenStreams.
<br /><span class="attrib">(yonik)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.0.documentation" href="javascript:toggleList('v2.9.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(9)
    <ol id="v2.9.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1908">LUCENE-1908</a>: Scoring documentation imrovements in Similarity javadocs.
<br /><span class="attrib">(Mark Miller, Shai Erera, Ted Dunning, Jiri Kuhn, Marvin Humphrey, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1872">LUCENE-1872</a>: NumericField javadoc improvements
<br /><span class="attrib">(Michael McCandless, Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1875">LUCENE-1875</a>: Make TokenStream.end javadoc less confusing.
<br /><span class="attrib">(Uwe Schindler)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1862">LUCENE-1862</a>: Rectified duplicate package level javadocs for
 o.a.l.queryParser and o.a.l.analysis.cn.
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1886">LUCENE-1886</a>: Improved hyperlinking in key Analysis javadocs
<br /><span class="attrib">(Bernd Fondermann via Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1884">LUCENE-1884</a>: massive javadoc and comment cleanup, primarily dealing with
 typos.
<br /><span class="attrib">(Robert Muir via Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1898">LUCENE-1898</a>: Switch changes to use bullets rather than numbers and
 update changes-to-html script to handle the new format.
<br /><span class="attrib">(Steven Rowe, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1900">LUCENE-1900</a>: Improve Searchable Javadoc.
<br /><span class="attrib">(Nadav Har'El, Doron Cohen, Marvin Humphrey, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1896">LUCENE-1896</a>: Improve Similarity#queryNorm javadocs.
<br /><span class="attrib">(Jiri Kuhn, Mark Miller)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.0.build" href="javascript:toggleList('v2.9.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v2.9.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1440">LUCENE-1440</a>: Add new targets to build.xml that allow downloading
 and executing the junit testcases from an older release for
 backwards-compatibility testing.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1446">LUCENE-1446</a>: Add compatibility tag to common-build.xml and run
 backwards-compatibility tests in the nightly build.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1529">LUCENE-1529</a>: Properly test "drop-in" replacement of jar with
 backwards-compatibility tests.
<br /><span class="attrib">(Mike McCandless, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1851">LUCENE-1851</a>: Change 'javacc' and 'clean-javacc' targets to build
 and clean contrib/surround files.
<br /><span class="attrib">(Luis Alves via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1854">LUCENE-1854</a>: tar task should use longfile="gnu" to avoid false file
 name length warnings.
<br /><span class="attrib">(Mark Miller)</span></li>
    </ol>
  </li>
  <li><a id="v2.9.0.test_cases" href="javascript:toggleList('v2.9.0.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v2.9.0.test_cases.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1791">LUCENE-1791</a>: Enhancements to the QueryUtils and CheckHits utility
 classes to wrap IndexReaders and Searchers in MultiReaders or
 MultiSearcher when possible to help exercise more edge cases.
<br /><span class="attrib">(Chris Hostetter, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1852">LUCENE-1852</a>: Fix localization test failures.
<br /><span class="attrib">(Robert Muir via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1843">LUCENE-1843</a>: Refactored all tests that use assertAnalyzesTo() &amp; others
 in core and contrib to use a new BaseTokenStreamTestCase
 base class. Also rewrote some tests to use this general analysis assert
 functions instead of own ones (e.g. TestMappingCharFilter).
 The new base class also tests tokenization with the TokenStream.next()
 backwards layer enabled (using Token/TokenWrapper as attribute
 implementation) and disabled (default for Lucene 3.0)
<br /><span class="attrib">(Uwe Schindler, Robert Muir)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1836">LUCENE-1836</a>: Added a new LocalizedTestCase as base class for localization
 junit tests.
<br /><span class="attrib">(Robert Muir, Uwe Schindler via Michael Busch)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.4.1" href="javascript:toggleList('v2.4.1')">Release 2.4.1  [2009-03-09]</a></h3>
<ul id="v2.4.1.list">
  <li><a id="v2.4.1.api_changes" href="javascript:toggleList('v2.4.1.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.4.1.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1186">LUCENE-1186</a>: Add Analyzer.close() to free internal ThreadLocal
resources.
<br /><span class="attrib">(Christian Kohlschütter via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.4.1.bug_fixes" href="javascript:toggleList('v2.4.1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(15)
    <ol id="v2.4.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1452">LUCENE-1452</a>: Fixed silent data-loss case whereby binary fields are
truncated to 0 bytes during merging if the segments being merged
are non-congruent (same field name maps to different field
numbers).  This bug was introduced with <a href="http://issues.apache.org/jira/browse/LUCENE-1219">LUCENE-1219</a>.
<br /><span class="attrib">(Andrzej
Bialecki via Mike McCandless)</span>.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1429">LUCENE-1429</a>: Don't throw incorrect IllegalStateException from
IndexWriter.close() if you've hit an OOM when autoCommit is true.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1474">LUCENE-1474</a>: If IndexReader.flush() is called twice when there were
pending deletions, it could lead to later false AssertionError
during IndexReader.open.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1430">LUCENE-1430</a>: Fix false AlreadyClosedException from IndexReader.open
(masking an actual IOException) that takes String or File path.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1442">LUCENE-1442</a>: Multiple-valued NOT_ANALYZED fields can double-count
token offsets.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1453">LUCENE-1453</a>: Ensure IndexReader.reopen()/clone() does not result in
incorrectly closing the shared FSDirectory. This bug would only
happen if you use IndexReader.open() with a File or String argument.
The returned readers are wrapped by a FilterIndexReader that
correctly handles closing of directory after reopen()/clone().
<br /><span class="attrib">(Mark Miller, Uwe Schindler, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1457">LUCENE-1457</a>: Fix possible overflow bugs during binary
searches.
<br /><span class="attrib">(Mark Miller via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1459">LUCENE-1459</a>: Fix CachingWrapperFilter to not throw exception if
both bits() and getDocIdSet() methods are called.
<br /><span class="attrib">(Matt Jones via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1519">LUCENE-1519</a>: Fix int overflow bug during segment merging.
<br /><span class="attrib">(Deepak
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1521">LUCENE-1521</a>: Fix int overflow bug when flushing segment.
<br /><span class="attrib">(Shon Vella via Mike McCandless)</span>.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1544">LUCENE-1544</a>: Fix deadlock in IndexWriter.addIndexes(IndexReader[]).
<br /><span class="attrib">(Mike McCandless via Doug Sale)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1547">LUCENE-1547</a>: Fix rare thread safety issue if two threads call
IndexWriter commit() at the same time.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1465">LUCENE-1465</a>: NearSpansOrdered returns payloads from first possible match
rather than the correct, shortest match; Payloads could be returned even
if the max slop was exceeded; The wrong payload could be returned in
certain situations.
<br /><span class="attrib">(Jonathan Mamou, Greg Shackles, Mark Miller)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1186">LUCENE-1186</a>: Add Analyzer.close() to free internal ThreadLocal
resources.
<br /><span class="attrib">(Christian Kohlschütter via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1552">LUCENE-1552</a>: Fix IndexWriter.addIndexes(IndexReader[]) to properly
rollback IndexWriter's internal state on hitting an
exception.
<br /><span class="attrib">(Scott Garland via Mike McCandless)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.4.0" href="javascript:toggleList('v2.4.0')">Release 2.4.0  [2008-10-08]</a></h3>
<ul id="v2.4.0.list">
  <li><a id="v2.4.0.changes_in_backwards_compatibility_policy" href="javascript:toggleList('v2.4.0.changes_in_backwards_compatibility_policy')">Changes in backwards compatibility policy</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.4.0.changes_in_backwards_compatibility_policy.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1340">LUCENE-1340</a>: In a minor change to Lucene's backward compatibility
policy, we are now allowing the Fieldable interface to have
changes, within reason, and made on a case-by-case basis.  If an
application implements it's own Fieldable, please be aware of
this.  Otherwise, no need to be concerned.  This is in effect for
all 2.X releases, starting with 2.4.  Also note, that in all
likelihood, Fieldable will be changed in 3.0.
</li>
    </ol>
  </li>
  <li><a id="v2.4.0.changes_in_runtime_behavior" href="javascript:toggleList('v2.4.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v2.4.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1151">LUCENE-1151</a>: Fix StandardAnalyzer to not mis-identify host names
(eg lucene.apache.org) as an ACRONYM.  To get back to the pre-2.4
backwards compatible, but buggy, behavior, you can either call
StandardAnalyzer.setDefaultReplaceInvalidAcronym(false) (static
method), or, set system property
org.apache.lucene.analysis.standard.StandardAnalyzer.replaceInvalidAcronym
to "false" on JVM startup.  All StandardAnalyzer instances created
after that will then show the pre-2.4 behavior.  Alternatively,
you can call setReplaceInvalidAcronym(false) to change the
behavior per instance of StandardAnalyzer.  This backwards
compatibility will be removed in 3.0 (hardwiring the value to
true).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1044">LUCENE-1044</a>: IndexWriter with autoCommit=true now commits (such
that a reader can see the changes) far less often than it used to.
Previously, every flush was also a commit.  You can always force a
commit by calling IndexWriter.commit().  Furthermore, in 3.0,
autoCommit will be hardwired to false (IndexWriter constructors
that take an autoCommit argument have been deprecated)
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1335">LUCENE-1335</a>: IndexWriter.addIndexes(Directory[]) and
addIndexesNoOptimize no longer allow the same Directory instance
to be passed in more than once.  Internally, IndexWriter uses
Directory and segment name to uniquely identify segments, so
adding the same Directory more than once was causing duplicates
which led to problems
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1396">LUCENE-1396</a>: Improve PhraseQuery.toString() so that gaps in the
positions are indicated with a ? and multiple terms at the same
position are joined with a |.
<br /><span class="attrib">(Andrzej Bialecki via Mike
McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.4.0.api_changes" href="javascript:toggleList('v2.4.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(26)
    <ol id="v2.4.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1084">LUCENE-1084</a>: Changed all IndexWriter constructors to take an
explicit parameter for maximum field size.  Deprecated all the
pre-existing constructors; these will be removed in release 3.0.
NOTE: these new constructors set autoCommit to false.
<br /><span class="attrib">(Steven
Rowe via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-584">LUCENE-584</a>: Changed Filter API to return a DocIdSet instead of a
java.util.BitSet. This allows using more efficient data structures
for Filters and makes them more flexible. This deprecates
Filter.bits(), so all filters that implement this outside
the Lucene code base will need to be adapted. See also the javadocs
of the Filter class.
<br /><span class="attrib">(Paul Elschot, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1044">LUCENE-1044</a>: Added IndexWriter.commit() which flushes any buffered
adds/deletes and then commits a new segments file so readers will
see the changes.  Deprecate IndexWriter.flush() in favor of
IndexWriter.commit().
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-325">LUCENE-325</a>: Added IndexWriter.expungeDeletes methods, which
consult the MergePolicy to find merges necessary to merge away all
deletes from the index.  This should be a somewhat lower cost
operation than optimize.
<br /><span class="attrib">(John Wang via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1233">LUCENE-1233</a>: Return empty array instead of null when no fields
match the specified name in these methods in Document:
getFieldables, getFields, getValues, getBinaryValues.
<br /><span class="attrib">(Stefan
Trcek vai Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1234">LUCENE-1234</a>: Make BoostingSpanScorer protected.
<br /><span class="attrib">(Andi Vajda via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-510">LUCENE-510</a>: The index now stores strings as true UTF-8 bytes
(previously it was Java's modified UTF-8).  If any text, either
stored fields or a token, has illegal UTF-16 surrogate characters,
these characters are now silently replaced with the Unicode
replacement character U+FFFD.  This is a change to the index file
format.
<br /><span class="attrib">(Marvin Humphrey via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-852">LUCENE-852</a>: Let the SpellChecker caller specify IndexWriter mergeFactor
and RAM buffer size.
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1290">LUCENE-1290</a>: Deprecate org.apache.lucene.search.Hits, Hit and HitIterator
and remove all references to these classes from the core. Also update demos
and tutorials.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1288">LUCENE-1288</a>: Add getVersion() and getGeneration() to IndexCommit.
getVersion() returns the same value that IndexReader.getVersion()
returns when the reader is opened on the same commit.
<br /><span class="attrib">(Jason
Rutherglen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1311">LUCENE-1311</a>: Added IndexReader.listCommits(Directory) static
method to list all commits in a Directory, plus IndexReader.open
methods that accept an IndexCommit and open the index as of that
commit.  These methods are only useful if you implement a custom
DeletionPolicy that keeps more than the last commit around.
<br /><span class="attrib">(Jason Rutherglen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1325">LUCENE-1325</a>: Added IndexCommit.isOptimized().
<br /><span class="attrib">(Shalin Shekhar
Mangar via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1324">LUCENE-1324</a>: Added TokenFilter.reset().
<br /><span class="attrib">(Shai Erera via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1340">LUCENE-1340</a>: Added Fieldable.omitTf() method to skip indexing term
frequency, positions and payloads.  This saves index space, and
indexing/searching time.
<br /><span class="attrib">(Eks Dev via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1219">LUCENE-1219</a>: Add basic reuse API to Fieldable for binary fields:
getBinaryValue/Offset/Length(); currently only lazy fields reuse
the provided byte[] result to getBinaryValue.
<br /><span class="attrib">(Eks Dev via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1334">LUCENE-1334</a>: Add new constructor for Term: Term(String fieldName)
which defaults term text to "".
<br /><span class="attrib">(DM Smith via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1333">LUCENE-1333</a>: Added Token.reinit(*) APIs to re-initialize (reuse) a
Token.  Also added term() method to return a String, with a
performance penalty clearly documented.  Also implemented
hashCode() and equals() in Token, and fixed all core and contrib
analyzers to use the re-use APIs.
<br /><span class="attrib">(DM Smith via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1329">LUCENE-1329</a>: Add optional readOnly boolean when opening an
IndexReader.  A readOnly reader is not allowed to make changes
(deletions, norms) to the index; in exchanged, the isDeleted
method, often a bottleneck when searching with many threads, is
not synchronized.  The default for readOnly is still false, but in
3.0 the default will become true.
<br /><span class="attrib">(Jason Rutherglen via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1367">LUCENE-1367</a>: Add IndexCommit.isDeleted().
<br /><span class="attrib">(Shalin Shekhar Mangar
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1061">LUCENE-1061</a>: Factored out all "new XXXQuery(...)" in
QueryParser.java into protected methods newXXXQuery(...) so that
subclasses can create their own subclasses of each Query type.
<br /><span class="attrib">(John Wang via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-753">LUCENE-753</a>: Added new Directory implementation
org.apache.lucene.store.NIOFSDirectory, which uses java.nio's
FileChannel to do file reads.  On most non-Windows platforms, with
many threads sharing a single searcher, this may yield sizable
improvement to query throughput when compared to FSDirectory,
which only allows a single thread to read from an open file at a
time.
<br /><span class="attrib">(Jason Rutherglen via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1371">LUCENE-1371</a>: Added convenience method TopDocs Searcher.search(Query query, int n).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1356">LUCENE-1356</a>: Allow easy extensions of TopDocCollector by turning
constructor and fields from package to protected.
<br /><span class="attrib">(Shai Erera
via Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1375">LUCENE-1375</a>: Added convenience method IndexCommit.getTimestamp,
which is equivalent to
getDirectory().fileModified(getSegmentsFileName()).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1366">LUCENE-1366</a>: Rename Field.Index options to be more accurate:
TOKENIZED becomes ANALYZED;  UN_TOKENIZED becomes NOT_ANALYZED;
NO_NORMS becomes NOT_ANALYZED_NO_NORMS and a new ANALYZED_NO_NORMS
is added.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1131">LUCENE-1131</a>: Added numDeletedDocs method to IndexReader
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
    </ol>
  </li>
  <li><a id="v2.4.0.bug_fixes" href="javascript:toggleList('v2.4.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(16)
    <ol id="v2.4.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1134">LUCENE-1134</a>: Fixed BooleanQuery.rewrite to only optimize a single
clause query if minNumShouldMatch&lt;=0.
<br /><span class="attrib">(Shai Erera via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1169">LUCENE-1169</a>: Fixed bug in IndexSearcher.search(): searching with
a filter might miss some hits because scorer.skipTo() is called
without checking if the scorer is already at the right position.
scorer.skipTo(scorer.doc()) is not a NOOP, it behaves as
scorer.next().
<br /><span class="attrib">(Eks Dev, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1182">LUCENE-1182</a>: Added scorePayload to SimilarityDelegator
<br /><span class="attrib">(Andi Vajda via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1213">LUCENE-1213</a>: MultiFieldQueryParser was ignoring slop in case
of a single field phrase.
<br /><span class="attrib">(Trejkaz via Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1228">LUCENE-1228</a>: IndexWriter.commit() was not updating the index version and as
result IndexReader.reopen() failed to sense index changes.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1267">LUCENE-1267</a>: Added numDocs() and maxDoc() to IndexWriter;
deprecated docCount().
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1274">LUCENE-1274</a>: Added new prepareCommit() method to IndexWriter,
which does phase 1 of a 2-phase commit (commit() does phase 2).
This is needed when you want to update an index as part of a
transaction involving external resources (eg a database).  Also
deprecated abort(), renaming it to rollback().
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1003">LUCENE-1003</a>: Stop RussianAnalyzer from removing numbers.
<br /><span class="attrib">(TUSUR OpenTeam, Dmitry Lihachev via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1152">LUCENE-1152</a>: SpellChecker fix around clearIndex and indexDictionary
methods, plus removal of IndexReader reference.
<br /><span class="attrib">(Naveen Belkale via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1046">LUCENE-1046</a>: Removed dead code in SpellChecker
<br /><span class="attrib">(Daniel Naber via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1189">LUCENE-1189</a>: Fixed the QueryParser to handle escaped characters within
quoted terms correctly.
<br /><span class="attrib">(Tomer Gabel via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1299">LUCENE-1299</a>: Fixed NPE in SpellChecker when IndexReader is not null and field is
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1303">LUCENE-1303</a>: Fixed BoostingTermQuery's explanation to be marked as a Match
depending only upon the non-payload score part, regardless of the effect of
the payload on the score. Prior to this, score of a query containing a BTQ
differed from its explanation.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1310">LUCENE-1310</a>: Fixed SloppyPhraseScorer to work also for terms repeating more
than twice in the query.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1351">LUCENE-1351</a>: ISOLatin1AccentFilter now cleans additional ligatures
<br /><span class="attrib">(Cedrik Lime via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1383">LUCENE-1383</a>: Workaround a nasty "leak" in Java's builtin
ThreadLocal, to prevent Lucene from causing unexpected
OutOfMemoryError in certain situations (notably J2EE
applications).
<br /><span class="attrib">(Chris Lu via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.4.0.new_features" href="javascript:toggleList('v2.4.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(20)
    <ol id="v2.4.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1137">LUCENE-1137</a>: Added Token.set/getFlags() accessors for passing more information about a Token through the analysis
process.  The flag is not indexed/stored and is thus only used by analysis.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1147">LUCENE-1147</a>: Add -segment option to CheckIndex tool so you can
check only a specific segment or segments in your index.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1045">LUCENE-1045</a>: Reopened this issue to add support for short and bytes.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-584">LUCENE-584</a>: Added new data structures to o.a.l.util, such as
OpenBitSet and SortedVIntList. These extend DocIdSet and can
directly be used for Filters with the new Filter API. Also changed
the core Filters to use OpenBitSet instead of java.util.BitSet.
<br /><span class="attrib">(Paul Elschot, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-494">LUCENE-494</a>: Added QueryAutoStopWordAnalyzer to allow for the automatic removal, from a query of frequently occurring terms.
This Analyzer is not intended for use during indexing.
<br /><span class="attrib">(Mark Harwood via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1044">LUCENE-1044</a>: Change Lucene to properly "sync" files after
committing, to ensure on a machine or OS crash or power cut, even
with cached writes, the index remains consistent.  Also added
explicit commit() method to IndexWriter to force a commit without
having to close.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-997">LUCENE-997</a>: Add search timeout (partial) support.
A TimeLimitedCollector was added to allow limiting search time.
It is a partial solution since timeout is checked only when
collecting a hit, and therefore a search for rare words in a
huge index might not stop within the specified time.
<br /><span class="attrib">(Sean Timm via Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1184">LUCENE-1184</a>: Allow SnapshotDeletionPolicy to be re-used across
close/re-open of IndexWriter while still protecting an open
snapshot
<br /><span class="attrib">(Tim Brennan via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1194">LUCENE-1194</a>: Added IndexWriter.deleteDocuments(Query) to delete
documents matching the specified query.  Also added static unlock
and isLocked methods (deprecating the ones in IndexReader).
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1201">LUCENE-1201</a>: Add IndexReader.getIndexCommit() method.
<br /><span class="attrib">(Tim Brennan
via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-550">LUCENE-550</a>:  Added InstantiatedIndex implementation.  Experimental
Index store similar to MemoryIndex but allows for multiple documents
in memory.
<br /><span class="attrib">(Karl Wettin via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-400">LUCENE-400</a>: Added word based n-gram filter (in contrib/analyzers) called ShingleFilter and an Analyzer wrapper
that wraps another Analyzer's token stream with a ShingleFilter
<br /><span class="attrib">(Sebastian Kirsch, Steve Rowe via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1166">LUCENE-1166</a>: Decomposition tokenfilter for languages like German and Swedish
<br /><span class="attrib">(Thomas Peuss via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1187">LUCENE-1187</a>: ChainedFilter and BooleanFilter now work with new Filter API
and DocIdSetIterator-based filters. Backwards-compatibility with old
BitSet-based filters is ensured.
<br /><span class="attrib">(Paul Elschot via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1295">LUCENE-1295</a>: Added new method to MoreLikeThis for retrieving interesting terms and made retrieveTerms(int) public.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1298">LUCENE-1298</a>: MoreLikeThis can now accept a custom Similarity
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1297">LUCENE-1297</a>: Allow other string distance measures for the SpellChecker
<br /><span class="attrib">(Thomas Morton via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1001">LUCENE-1001</a>: Provide access to Payloads via Spans.  All existing Span Query implementations in Lucene implement.
<br /><span class="attrib">(Mark Miller, Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1354">LUCENE-1354</a>: Provide programmatic access to CheckIndex
<br /><span class="attrib">(Grant Ingersoll, Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1279">LUCENE-1279</a>: Add support for Collators to RangeFilter/Query and Query Parser.
<br /><span class="attrib">(Steve Rowe via Grant Ingersoll)</span></li>
    </ol>
  </li>
  <li><a id="v2.4.0.optimizations" href="javascript:toggleList('v2.4.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v2.4.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-705">LUCENE-705</a>: When building a compound file, use
RandomAccessFile.setLength() to tell the OS/filesystem to
pre-allocate space for the file.  This may improve fragmentation
in how the CFS file is stored, and allows us to detect an upcoming
disk full situation before actually filling up the disk.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1120">LUCENE-1120</a>: Speed up merging of term vectors by bulk-copying the
raw bytes for each contiguous range of non-deleted documents.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1185">LUCENE-1185</a>: Avoid checking if the TermBuffer 'scratch' in
SegmentTermEnum is null for every call of scanTo().
<br /><span class="attrib">(Christian Kohlschuetter via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1217">LUCENE-1217</a>: Internal to Field.java, use isBinary instead of
runtime type checking for possible speedup of binaryValue().
<br /><span class="attrib">(Eks Dev via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1183">LUCENE-1183</a>: Optimized TRStringDistance class (in contrib/spell) that uses
less memory than the previous version.
<br /><span class="attrib">(Cédrik LIME via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1195">LUCENE-1195</a>: Improve term lookup performance by adding a LRU cache to the
TermInfosReader. In performance experiments the speedup was about 25% on
average on mid-size indexes with ~500,000 documents for queries with 3
terms and about 7% on larger indexes with ~4.3M documents.
<br /><span class="attrib">(Michael Busch)</span></li>
    </ol>
  </li>
  <li><a id="v2.4.0.documentation" href="javascript:toggleList('v2.4.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v2.4.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1236">LUCENE-1236</a>:  Added some clarifying remarks to EdgeNGram*.java
<br /><span class="attrib">(Hiroaki Kawai via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1157">LUCENE-1157</a> and <a href="http://issues.apache.org/jira/browse/LUCENE-1256">LUCENE-1256</a>: HTML changes log, created automatically
from CHANGES.txt. This HTML file is currently visible only via developers page.
<br /><span class="attrib">(Steven Rowe via Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1349">LUCENE-1349</a>: Fieldable can now be changed without breaking backward compatibility rules (within reason.  See the note at
  the top of this file and also on Fieldable.java).
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1873">LUCENE-1873</a>: Update documentation to reflect current Contrib area status.
<br /><span class="attrib">(Steven Rowe, Mark Miller)</span></li>
    </ol>
  </li>
  <li><a id="v2.4.0.build" href="javascript:toggleList('v2.4.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v2.4.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1153">LUCENE-1153</a>: Added JUnit JAR to new lib directory.  Updated build to rely on local JUnit instead of ANT/lib.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1202">LUCENE-1202</a>: Small fixes to the way Clover is used to work better
with contribs.  Of particular note: a single clover db is used
regardless of whether tests are run globally or in the specific
contrib directories.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1353">LUCENE-1353</a>: Javacc target in contrib/miscellaneous for
generating the precedence query parser.
</li>
    </ol>
  </li>
  <li><a id="v2.4.0.test_cases" href="javascript:toggleList('v2.4.0.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v2.4.0.test_cases.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1238">LUCENE-1238</a>: Fixed intermittent failures of TestTimeLimitedCollector.testTimeoutMultiThreaded.
Within this fix, "greedy" flag was added to TimeLimitedCollector, to allow the wrapped
collector to collect also the last doc, after allowed-tTime passed.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1348">LUCENE-1348</a>: relax TestTimeLimitedCollector to not fail due to
timeout exceeded (just because test machine is very busy).
</li>
    </ol>
  </li>
</ul>
<h3><a id="v2.3.2" href="javascript:toggleList('v2.3.2')">Release 2.3.2  [2008-05-06]</a></h3>
<ul id="v2.3.2.list">
  <li><a id="v2.3.2.bug_fixes" href="javascript:toggleList('v2.3.2.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(12)
    <ol id="v2.3.2.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1191">LUCENE-1191</a>: On hitting OutOfMemoryError in any index-modifying
methods in IndexWriter, do not commit any further changes to the
index to prevent risk of possible corruption.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1197">LUCENE-1197</a>: Fixed issue whereby IndexWriter would flush by RAM
too early when TermVectors were in use.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1198">LUCENE-1198</a>: Don't corrupt index if an exception happens inside
DocumentsWriter.init
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1199">LUCENE-1199</a>: Added defensive check for null indexReader before
calling close in IndexModifier.close()
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1200">LUCENE-1200</a>: Fix rare deadlock case in addIndexes* when
ConcurrentMergeScheduler is in use
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1208">LUCENE-1208</a>: Fix deadlock case on hitting an exception while
processing a document that had triggered a flush
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1210">LUCENE-1210</a>: Fix deadlock case on hitting an exception while
starting a merge when using ConcurrentMergeScheduler
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1222">LUCENE-1222</a>: Fix IndexWriter.doAfterFlush to always be called on
flush
<br /><span class="attrib">(Mark Ferguson via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1226">LUCENE-1226</a>: Fixed IndexWriter.addIndexes(IndexReader[]) to commit
successfully created compound files.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1150">LUCENE-1150</a>: Re-expose StandardTokenizer's constants publicly;
this was accidentally lost with <a href="http://issues.apache.org/jira/browse/LUCENE-966">LUCENE-966</a>.
<br /><span class="attrib">(Nicolas Lalevée via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1262">LUCENE-1262</a>: Fixed bug in BufferedIndexReader.refill whereby on
hitting an exception in readInternal, the buffer is incorrectly
filled with stale bytes such that subsequent calls to readByte()
return incorrect results.
<br /><span class="attrib">(Trejkaz via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1270">LUCENE-1270</a>: Fixed intermittent case where IndexWriter.close()
would hang after IndexWriter.addIndexesNoOptimize had been
called.
<br /><span class="attrib">(Stu Hood via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.3.2.build" href="javascript:toggleList('v2.3.2.build')">Build</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.3.2.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1230">LUCENE-1230</a>: Include *pom.xml* in source release files.
<br /><span class="attrib">(Michael Busch)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.3.1" href="javascript:toggleList('v2.3.1')">Release 2.3.1  [2008-02-22]</a></h3>
<ul id="v2.3.1.list">
  <li><a id="v2.3.1.bug_fixes" href="javascript:toggleList('v2.3.1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v2.3.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1168">LUCENE-1168</a>: Fixed corruption cases when autoCommit=false and
documents have mixed term vectors
<br /><span class="attrib">(Suresh Guvvala via Mike
McCandless)</span>.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1171">LUCENE-1171</a>: Fixed some cases where OOM errors could cause
deadlock in IndexWriter
<br /><span class="attrib">(Mike McCandless)</span>.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1173">LUCENE-1173</a>: Fixed corruption case when autoCommit=false and bulk
merging of stored fields is used
<br /><span class="attrib">(Yonik via Mike McCandless)</span>.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1163">LUCENE-1163</a>: Fixed bug in CharArraySet.contains(char[] buffer, int
offset, int len) that was ignoring offset and thus giving the
wrong answer.
<br /><span class="attrib">(Thomas Peuss via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1177">LUCENE-1177</a>: Fix rare case where IndexWriter.optimize might do too
many merges at the end.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1176">LUCENE-1176</a>: Fix corruption case when documents with no term
vector fields are added before documents with term vector fields.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1179">LUCENE-1179</a>: Fixed assert statement that was incorrectly
preventing Fields with empty-string field name from working.
<br /><span class="attrib">(Sergey Kabashnyuk via Mike McCandless)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.3.0" href="javascript:toggleList('v2.3.0')">Release 2.3.0  [2008-01-23]</a></h3>
<ul id="v2.3.0.list">
  <li><a id="v2.3.0.changes_in_runtime_behavior" href="javascript:toggleList('v2.3.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v2.3.0.changes_in_runtime_behavior.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-994">LUCENE-994</a>: Defaults for IndexWriter have been changed to maximize
out-of-the-box indexing speed.  First, IndexWriter now flushes by
RAM usage (16 MB by default) instead of a fixed doc count (call
IndexWriter.setMaxBufferedDocs to get backwards compatible
behavior).  Second, ConcurrentMergeScheduler is used to run merges
using background threads (call IndexWriter.setMergeScheduler(new
SerialMergeScheduler()) to get backwards compatible behavior).
Third, merges are chosen based on size in bytes of each segment
rather than document count of each segment (call
IndexWriter.setMergePolicy(new LogDocMergePolicy()) to get
backwards compatible behavior).
<p/>
NOTE: users of ParallelReader must change back all of these
defaults in order to ensure the docIDs "align" across all parallel
indices.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1045">LUCENE-1045</a>: SortField.AUTO didn't work with long. When detecting
the field type for sorting automatically, numbers used to be
interpreted as int, then as float, if parsing the number as an int
failed. Now the detection checks for int, then for long,
then for float.
<br /><span class="attrib">(Daniel Naber)</span></li>
    </ol>
  </li>
  <li><a id="v2.3.0.api_changes" href="javascript:toggleList('v2.3.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v2.3.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-843">LUCENE-843</a>: Added IndexWriter.setRAMBufferSizeMB(...) to have
IndexWriter flush whenever the buffered documents are using more
than the specified amount of RAM.  Also added new APIs to Token
that allow one to set a char[] plus offset and length to specify a
token (to avoid creating a new String() for each Token).
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-963">LUCENE-963</a>: Add setters to Field to allow for re-using a single
Field instance during indexing.  This is a sizable performance
gain, especially for small documents.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-969">LUCENE-969</a>: Add new APIs to Token, TokenStream and Analyzer to
permit re-using of Token and TokenStream instances during
indexing.  Changed Token to use a char[] as the store for the
termText instead of String.  This gives faster tokenization
performance (~10-15%).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-847">LUCENE-847</a>: Factored MergePolicy, which determines which merges
should take place and when, as well as MergeScheduler, which
determines when the selected merges should actually run, out of
IndexWriter.  The default merge policy is now
LogByteSizeMergePolicy (see <a href="http://issues.apache.org/jira/browse/LUCENE-845">LUCENE-845</a>) and the default merge
scheduler is now ConcurrentMergeScheduler (see
<a href="http://issues.apache.org/jira/browse/LUCENE-870">LUCENE-870</a>).
<br /><span class="attrib">(Steven Parkes via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1052">LUCENE-1052</a>: Add IndexReader.setTermInfosIndexDivisor(int) method
that allows you to reduce memory usage of the termInfos by further
sub-sampling (over the termIndexInterval that was used during
indexing) which terms are loaded into memory.
<br /><span class="attrib">(Chuck Williams,
Doug Cutting via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-743">LUCENE-743</a>: Add IndexReader.reopen() method that re-opens an
existing IndexReader (see New features -&gt; 8.)
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1062">LUCENE-1062</a>: Add setData(byte[] data),
setData(byte[] data, int offset, int length), getData(), getOffset()
and clone() methods to o.a.l.index.Payload. Also add the field name
as arg to Similarity.scorePayload().
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-982">LUCENE-982</a>: Add IndexWriter.optimize(int maxNumSegments) method to
"partially optimize" an index down to maxNumSegments segments.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1080">LUCENE-1080</a>: Changed Token.DEFAULT_TYPE to be public.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1064">LUCENE-1064</a>: Changed TopDocs constructor to be public.
<br /><span class="attrib">(Shai Erera via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1079">LUCENE-1079</a>: DocValues cleanup: constructor now has no params,
and getInnerArray() now throws UnsupportedOperationException
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1089">LUCENE-1089</a>: Added PriorityQueue.insertWithOverflow, which returns
the Object (if any) that was bumped from the queue to allow
re-use.
<br /><span class="attrib">(Shai Erera via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1101">LUCENE-1101</a>: Token reuse 'contract' (defined <a href="http://issues.apache.org/jira/browse/LUCENE-969">LUCENE-969</a>)
modified so it is token producer's responsibility
to call Token.clear().
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1118">LUCENE-1118</a>: Changed StandardAnalyzer to skip too-long (default &gt;
255 characters) tokens.  You can increase this limit by calling
StandardAnalyzer.setMaxTokenLength(...).
<br /><span class="attrib">(Michael McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.3.0.bug_fixes" href="javascript:toggleList('v2.3.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(28)
    <ol id="v2.3.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-933">LUCENE-933</a>: QueryParser fixed to not produce empty sub
BooleanQueries "()" even if the Analyzer produced no
tokens for input.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-955">LUCENE-955</a>: Fixed SegmentTermPositions to work correctly with the
first term in the dictionary.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-951">LUCENE-951</a>: Fixed NullPointerException in MultiLevelSkipListReader
that was thrown after a call of TermPositions.seek().
<br /><span class="attrib">(Rich Johnson via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-938">LUCENE-938</a>: Fixed cases where an unhandled exception in
IndexWriter's methods could cause deletes to be lost.
<br /><span class="attrib">(Steven Parkes via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-962">LUCENE-962</a>: Fixed case where an unhandled exception in
IndexWriter.addDocument or IndexWriter.updateDocument could cause
unreferenced files in the index to not be deleted
<br /><span class="attrib">(Steven Parkes via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-957">LUCENE-957</a>: RAMDirectory fixed to properly handle directories
larger than Integer.MAX_VALUE.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-781">LUCENE-781</a>: MultiReader fixed to not throw NPE if isCurrent(),
isOptimized() or getVersion() is called. Separated MultiReader
into two classes: MultiSegmentReader extends IndexReader, is
package-protected and is created automatically by IndexReader.open()
in case the index has multiple segments. The public MultiReader
now extends MultiSegmentReader and is intended to be used by users
who want to add their own subreaders.
<br /><span class="attrib">(Daniel Naber, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-970">LUCENE-970</a>: FilterIndexReader now implements isOptimized(). Before
a call of isOptimized() would throw a NPE.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-832">LUCENE-832</a>: ParallelReader fixed to not throw NPE if isCurrent(),
isOptimized() or getVersion() is called.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-948">LUCENE-948</a>: Fix FNFE exception caused by stale NFS client
directory listing caches when writers on different machines are
sharing an index over NFS and using a custom deletion policy
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-978">LUCENE-978</a>: Ensure TermInfosReader, FieldsReader, and FieldsReader
close any streams they had opened if an exception is hit in the
constructor.
<br /><span class="attrib">(Ning Li via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-985">LUCENE-985</a>: If an extremely long term is in a doc (&gt; 16383 chars),
we now throw an IllegalArgumentException saying the term is too
long, instead of cryptic ArrayIndexOutOfBoundsException.
<br /><span class="attrib">(Karl
Wettin via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-991">LUCENE-991</a>: The explain() method of BoostingTermQuery had errors
when no payloads were present on a document.
<br /><span class="attrib">(Peter Keegan via
Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-992">LUCENE-992</a>: Fixed IndexWriter.updateDocument to be atomic again
(this was broken by <a href="http://issues.apache.org/jira/browse/LUCENE-843">LUCENE-843</a>).
<br /><span class="attrib">(Ning Li via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1008">LUCENE-1008</a>: Fixed corruption case when document with no term
vector fields is added after documents with term vector fields.
This bug was introduced with <a href="http://issues.apache.org/jira/browse/LUCENE-843">LUCENE-843</a>.
<br /><span class="attrib">(Grant Ingersoll via
Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1006">LUCENE-1006</a>: Fixed QueryParser to accept a "" field value (zero
length quoted string.)
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1010">LUCENE-1010</a>: Fixed corruption case when document with no term
vector fields is added after documents with term vector fields.
This case is hit during merge and would cause an EOFException.
This bug was introduced with <a href="http://issues.apache.org/jira/browse/LUCENE-984">LUCENE-984</a>.
<br /><span class="attrib">(Andi Vajda via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1009">LUCENE-1009</a>: Fix merge slowdown with LogByteSizeMergePolicy when
autoCommit=false and documents are using stored fields and/or term
vectors.
<br /><span class="attrib">(Mark Miller via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1011">LUCENE-1011</a>: Fixed corruption case when two or more machines,
sharing an index over NFS, can be writers in quick succession.
<br /><span class="attrib">(Patrick Kimber via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1028">LUCENE-1028</a>: Fixed Weight serialization for few queries:
DisjunctionMaxQuery, ValueSourceQuery, CustomScoreQuery.
Serialization check added for all queries.
<br /><span class="attrib">(Kyle Maxwell via Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1048">LUCENE-1048</a>: Fixed incorrect behavior in Lock.obtain(...) when the
timeout argument is very large (eg Long.MAX_VALUE).  Also added
Lock.LOCK_OBTAIN_WAIT_FOREVER constant to never timeout.
<br /><span class="attrib">(Nikolay
Diakov via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1050">LUCENE-1050</a>: Throw LockReleaseFailedException in
Simple/NativeFSLockFactory if we fail to delete the lock file when
releasing the lock.
<br /><span class="attrib">(Nikolay Diakov via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1071">LUCENE-1071</a>: Fixed SegmentMerger to correctly set payload bit in
the merged segment.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1042">LUCENE-1042</a>: Remove throwing of IOException in getTermFreqVector(int, String, TermVectorMapper) to be consistent
with other getTermFreqVector calls.  Also removed the throwing of the other IOException in that method to be consistent.
<br /><span class="attrib">(Karl Wettin via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1096">LUCENE-1096</a>: Fixed Hits behavior when hits' docs are deleted
along with iterating the hits. Deleting docs already retrieved
now works seamlessly. If docs not yet retrieved are deleted
(e.g. from another thread), and then, relying on the initial
Hits.length(), an application attempts to retrieve more hits
than actually exist , a ConcurrentMidificationException
is thrown.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1068">LUCENE-1068</a>: Changed StandardTokenizer to fix an issue with it marking
  the type of some tokens incorrectly.  This is done by adding a new flag named
  replaceInvalidAcronym which defaults to false, the current, incorrect behavior.  Setting
  this flag to true fixes the problem.  This flag is a temporary fix and is already
  marked as being deprecated.  3.x will implement the correct approach.  (Shai Erera via Grant Ingersoll)
  <a href="http://issues.apache.org/jira/browse/LUCENE-1140">LUCENE-1140</a>: Fixed NPE caused by 1068
<br /><span class="attrib">(Alexei Dets via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-749">LUCENE-749</a>: ChainedFilter behavior fixed when logic of
first filter is ANDNOT.
<br /><span class="attrib">(Antonio Bruno via Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-508">LUCENE-508</a>: Make sure SegmentTermEnum.prev() is accurate (= last
term) after next() returns false.
<br /><span class="attrib">(Steven Tamm via Mike
McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.3.0.new_features" href="javascript:toggleList('v2.3.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v2.3.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-906">LUCENE-906</a>: Elision filter for French.
<br /><span class="attrib">(Mathieu Lecarme via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-960">LUCENE-960</a>: Added a SpanQueryFilter and related classes to allow for
not only filtering, but knowing where in a Document a Filter matches
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-868">LUCENE-868</a>: Added new Term Vector access features.  New callback
mechanism allows application to define how and where to read Term
Vectors from disk. This implementation contains several extensions
of the new abstract TermVectorMapper class.  The new API should be
back-compatible.  No changes in the actual storage of Term Vectors
has taken place.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1038">LUCENE-1038</a>: Added setDocumentNumber() method to TermVectorMapper
to provide information about what document is being accessed.
<br /><span class="attrib">(Karl Wettin via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-975">LUCENE-975</a>: Added PositionBasedTermVectorMapper that allows for
position based lookup of term vector information.
See item #3 above (<a href="http://issues.apache.org/jira/browse/LUCENE-868">LUCENE-868</a>).
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1011">LUCENE-1011</a>: Added simple tools (all in org.apache.lucene.store)
to verify that locking is working properly.  LockVerifyServer runs
a separate server to verify locks.  LockStressTest runs a simple
tool that rapidly obtains and releases locks.
VerifyingLockFactory is a LockFactory that wraps any other
LockFactory and consults the LockVerifyServer whenever a lock is
obtained or released, throwing an exception if an illegal lock
obtain occurred.
<br /><span class="attrib">(Patrick Kimber via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1015">LUCENE-1015</a>: Added FieldCache extension (ExtendedFieldCache) to
support doubles and longs.  Added support into SortField for sorting
on doubles and longs as well.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1020">LUCENE-1020</a>: Created basic index checking &amp; repair tool
(o.a.l.index.CheckIndex).  When run without -fix it does a
detailed test of all segments in the index and reports summary
information and any errors it hit.  With -fix it will remove
segments that had errors.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-743">LUCENE-743</a>: Add IndexReader.reopen() method that re-opens an
existing IndexReader by only loading those portions of an index
that have changed since the reader was (re)opened. reopen() can
be significantly faster than open(), depending on the amount of
index changes. SegmentReader, MultiSegmentReader, MultiReader,
and ParallelReader implement reopen().
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1040">LUCENE-1040</a>: CharArraySet useful for efficiently checking
set membership of text specified by char[].
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1073">LUCENE-1073</a>: Created SnapshotDeletionPolicy to facilitate taking a
live backup of an index without pausing indexing.
<br /><span class="attrib">(Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1019">LUCENE-1019</a>: CustomScoreQuery enhanced to support multiple
ValueSource queries.
<br /><span class="attrib">(Kyle Maxwell via Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1095">LUCENE-1095</a>: Added an option to StopFilter to increase
positionIncrement of the token succeeding a stopped token.
Disabled by default. Similar option added to QueryParser
to consider token positions when creating PhraseQuery
and MultiPhraseQuery. Disabled by default (so by default
the query parser ignores position increments).
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1380">LUCENE-1380</a>: Added TokenFilter for setting position increment in special cases related to the ShingleFilter
<br /><span class="attrib">(Mck SembWever, Steve Rowe, Karl Wettin via Grant Ingersoll)</span></li>
    </ol>
  </li>
  <li><a id="v2.3.0.optimizations" href="javascript:toggleList('v2.3.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(14)
    <ol id="v2.3.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-937">LUCENE-937</a>: CachingTokenFilter now uses an iterator to access the
Tokens that are cached in the LinkedList. This increases performance
significantly, especially when the number of Tokens is large.
<br /><span class="attrib">(Mark Miller via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-843">LUCENE-843</a>: Substantial optimizations to improve how IndexWriter
uses RAM for buffering documents and to speed up indexing (2X-8X
faster).  A single shared hash table now records the in-memory
postings per unique term and is directly flushed into a single
segment.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-892">LUCENE-892</a>: Fixed extra "buffer to buffer copy" that sometimes
takes place when using compound files.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-959">LUCENE-959</a>: Remove synchronization in Document
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-963">LUCENE-963</a>: Add setters to Field to allow for re-using a single
Field instance during indexing.  This is a sizable performance
gain, especially for small documents.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-939">LUCENE-939</a>: Check explicitly for boundary conditions in FieldInfos
and don't rely on exceptions.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-966">LUCENE-966</a>: Very substantial speedups (~6X faster) for
StandardTokenizer (StandardAnalyzer) by using JFlex instead of
JavaCC to generate the tokenizer.
<br /><span class="attrib">(Stanislaw Osinski via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-969">LUCENE-969</a>: Changed core tokenizers &amp; filters to re-use Token and
TokenStream instances when possible to improve tokenization
performance (~10-15%).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-871">LUCENE-871</a>: Speedup ISOLatin1AccentFilter
<br /><span class="attrib">(Ian Boston via Mike
McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-986">LUCENE-986</a>: Refactored SegmentInfos from IndexReader into the new
subclass DirectoryIndexReader. SegmentReader and MultiSegmentReader
now extend DirectoryIndexReader and are the only IndexReader
implementations that use SegmentInfos to access an index and
acquire a write lock for index modifications.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1007">LUCENE-1007</a>: Allow flushing in IndexWriter to be triggered by
either RAM usage or document count or both (whichever comes
first), by adding symbolic constant DISABLE_AUTO_FLUSH to disable
one of the flush triggers.
<br /><span class="attrib">(Ning Li via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1043">LUCENE-1043</a>: Speed up merging of stored fields by bulk-copying the
raw bytes for each contiguous range of non-deleted documents.
<br /><span class="attrib">(Robert Engels via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-693">LUCENE-693</a>: Speed up nested conjunctions (~2x) that match many
documents, and a slight performance increase for top level
conjunctions.
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1098">LUCENE-1098</a>: Make inner class StandardAnalyzer.SavedStreams static
and final.
<br /><span class="attrib">(Nathan Beyer via Michael Busch)</span></li>
    </ol>
  </li>
  <li><a id="v2.3.0.documentation" href="javascript:toggleList('v2.3.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v2.3.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1051">LUCENE-1051</a>: Generate separate javadocs for core, demo and contrib
classes, as well as an unified view. Also add an appropriate menu
structure to the website.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-746">LUCENE-746</a>: Fix error message in AnalyzingQueryParser.getPrefixQuery.
<br /><span class="attrib">(Ronnie Kolehmainen via Michael Busch)</span></li>
    </ol>
  </li>
  <li><a id="v2.3.0.build" href="javascript:toggleList('v2.3.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(8)
    <ol id="v2.3.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-908">LUCENE-908</a>: Improvements and simplifications for how the MANIFEST
file and the META-INF dir are created.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-935">LUCENE-935</a>: Various improvements for the maven artifacts. Now the
artifacts also include the sources as .jar files.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li>Added apply-patch target to top-level build.  Defaults to looking for
a patch in ${basedir}/../patches with name specified by -Dpatch.name.
Can also specify any location by -Dpatch.file property on the command
line.  This should be helpful for easy application of patches, but it
is also a step towards integrating automatic patch application with
JIRA and Hudson, and is thus subject to change.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-935">LUCENE-935</a>: Defined property "m2.repository.url" to allow setting
the url to a maven remote repository to deploy to.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1051">LUCENE-1051</a>: Include javadocs in the maven artifacts.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1055">LUCENE-1055</a>: Remove gdata-server from build files and its sources
from trunk.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-935">LUCENE-935</a>: Allow to deploy maven artifacts to a remote m2 repository
via scp and ssh authentication.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1123">LUCENE-1123</a>: Allow overriding the specification version for
MANIFEST.MF
<br /><span class="attrib">(Michael Busch)</span></li>
    </ol>
  </li>
  <li><a id="v2.3.0.test_cases" href="javascript:toggleList('v2.3.0.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v2.3.0.test_cases.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-766">LUCENE-766</a>: Test adding two fields with the same name but different
term vector setting.
<br /><span class="attrib">(Nicolas Lalevée via Doron Cohen)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.2.0" href="javascript:toggleList('v2.2.0')">Release 2.2.0  [2007-06-19]</a></h3>
<ul id="v2.2.0.list">
  <li><a id="v2.2.0.changes_in_runtime_behavior" href="javascript:toggleList('v2.2.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(none)
    <ol id="v2.2.0.changes_in_runtime_behavior.list">
    </ol>
  </li>
  <li><a id="v2.2.0.api_changes" href="javascript:toggleList('v2.2.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(13)
    <ol id="v2.2.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-793">LUCENE-793</a>: created new exceptions and added them to throws clause
for many methods (all subclasses of IOException for backwards
compatibility): index.StaleReaderException,
index.CorruptIndexException, store.LockObtainFailedException.
This was done to better call out the possible root causes of an
IOException from these methods.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-811">LUCENE-811</a>: make SegmentInfos class, plus a few methods from related
classes, package-private again (they were unnecessarily made public
as part of <a href="http://issues.apache.org/jira/browse/LUCENE-701">LUCENE-701</a>).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-710">LUCENE-710</a>: added optional autoCommit boolean to IndexWriter
constructors.  When this is false, index changes are not committed
until the writer is closed.  This gives explicit control over when
a reader will see the changes.  Also added optional custom
deletion policy to explicitly control when prior commits are
removed from the index.  This is intended to allow applications to
share an index over NFS by customizing when prior commits are
deleted.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-818">LUCENE-818</a>: changed most public methods of IndexWriter,
IndexReader (and its subclasses), FieldsReader and RAMDirectory to
throw AlreadyClosedException if they are accessed after being
closed.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-834">LUCENE-834</a>: Changed some access levels for certain Span classes to allow them
to be overridden.  They have been marked expert only and not for public
consumption.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-796">LUCENE-796</a>: Removed calls to super.* from various get*Query methods in
MultiFieldQueryParser, in order to allow sub-classes to override them.
<br /><span class="attrib">(Steven Parkes via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-857">LUCENE-857</a>: Removed caching from QueryFilter and deprecated QueryFilter
in favour of QueryWrapperFilter or QueryWrapperFilter + CachingWrapperFilter
combination when caching is desired.
<br /><span class="attrib">(Chris Hostetter, Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-869">LUCENE-869</a>: Changed FSIndexInput and FSIndexOutput to inner classes of FSDirectory
to enable extensibility of these classes.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-580">LUCENE-580</a>: Added the public method reset() to TokenStream. This method does
nothing by default, but may be overwritten by subclasses to support consuming
the TokenStream more than once.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-580">LUCENE-580</a>: Added a new constructor to Field that takes a TokenStream as
argument, available as tokenStreamValue(). This is useful to avoid the need of
"dummy analyzers" for pre-analyzed fields.
<br /><span class="attrib">(Karl Wettin, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-730">LUCENE-730</a>: Added the new methods to BooleanQuery setAllowDocsOutOfOrder() and
getAllowDocsOutOfOrder(). Deprecated the methods setUseScorer14() and
getUseScorer14(). The optimization patch <a href="http://issues.apache.org/jira/browse/LUCENE-730">LUCENE-730</a> (see Optimizations-&gt;3.)
improves performance for certain queries but results in scoring out of docid
order. This patch reverse this change, so now by default hit docs are scored
in docid order if not setAllowDocsOutOfOrder(true) is explicitly called.
This patch also enables the tests in QueryUtils again that check for docid
order.
<br /><span class="attrib">(Paul Elschot, Doron Cohen, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-888">LUCENE-888</a>: Added Directory.openInput(File path, int bufferSize)
to optionally specify the size of the read buffer.  Also added
BufferedIndexInput.setBufferSize(int) to change the buffer size.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-923">LUCENE-923</a>: Make SegmentTermPositionVector package-private. It does not need
to be public because it implements the public interface TermPositionVector.
<br /><span class="attrib">(Michael Busch)</span></li>
    </ol>
  </li>
  <li><a id="v2.2.0.bug_fixes" href="javascript:toggleList('v2.2.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(24)
    <ol id="v2.2.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-804">LUCENE-804</a>: Fixed build.xml to pack a fully compilable src dist.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-813">LUCENE-813</a>: Leading wildcard fixed to work with trailing wildcard.
Query parser modified to create a prefix query only for the case
that there is a single trailing wildcard (and no additional wildcard
or '?' in the query text).
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-812">LUCENE-812</a>: Add no-argument constructors to NativeFSLockFactory
and SimpleFSLockFactory.  This enables all 4 builtin LockFactory
implementations to be specified via the System property
org.apache.lucene.store.FSDirectoryLockFactoryClass.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-821">LUCENE-821</a>: The new single-norm-file introduced by <a href="http://issues.apache.org/jira/browse/LUCENE-756">LUCENE-756</a>
failed to reduce the number of open descriptors since it was still
opened once per field with norms.
<br /><span class="attrib">(yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-823">LUCENE-823</a>: Make sure internal file handles are closed when
hitting an exception (eg disk full) while flushing deletes in
IndexWriter's mergeSegments, and also during
IndexWriter.addIndexes.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-825">LUCENE-825</a>: If directory is removed after
FSDirectory.getDirectory() but before IndexReader.open you now get
a FileNotFoundException like Lucene pre-2.1 (before this fix you
got an NPE).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-800">LUCENE-800</a>: Removed backslash from the TERM_CHAR list in the queryparser,
because the backslash is the escape character. Also changed the ESCAPED_CHAR
list to contain all possible characters, because every character that
follows a backslash should be considered as escaped.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-372">LUCENE-372</a>: QueryParser.parse() now ensures that the entire input string
is consumed. Now a ParseException is thrown if a query contains too many
closing parentheses.
<br /><span class="attrib">(Andreas Neumann via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-814">LUCENE-814</a>: javacc build targets now fix line-end-style of generated files.
Now also deleting all javacc generated files before calling javacc.
<br /><span class="attrib">(Steven Parkes, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-829">LUCENE-829</a>: close readers in contrib/benchmark.
<br /><span class="attrib">(Karl Wettin, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-828">LUCENE-828</a>: Minor fix for Term's equal().
<br /><span class="attrib">(Paul Cowan via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-846">LUCENE-846</a>: Fixed: if IndexWriter is opened with autoCommit=false,
and you call addIndexes, and hit an exception (eg disk full) then
when IndexWriter rolls back its internal state this could corrupt
the instance of IndexWriter (but, not the index itself) by
referencing already deleted segments.  This bug was only present
in 2.2 (trunk), ie was never released.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-736">LUCENE-736</a>: Sloppy phrase query with repeating terms matches wrong docs.
For example query "B C B"~2 matches the doc "A B C D E".
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-789">LUCENE-789</a>: Fixed: custom similarity is ignored when using MultiSearcher (problem reported
by Alexey Lef). Now the similarity applied by MultiSearcer.setSimilarity(sim) is being used.
Note that as before this fix, creating a multiSearcher from Searchers for whom custom similarity
was set has no effect - it is masked by the similarity of the MultiSearcher. This is as
designed, because MultiSearcher operates on Searchables (not Searchers).
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-880">LUCENE-880</a>: Fixed DocumentWriter to close the TokenStreams after it
has written the postings. Then the resources associated with the
TokenStreams can safely be released.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-883">LUCENE-883</a>: consecutive calls to Spellchecker.indexDictionary()
won't insert terms twice anymore.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-881">LUCENE-881</a>: QueryParser.escape() now also escapes the characters
'|' and '&amp;' which are part of the queryparser syntax.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-886">LUCENE-886</a>: Spellchecker clean up: exceptions aren't printed to STDERR
anymore and ignored, but re-thrown. Some javadoc improvements.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-698">LUCENE-698</a>: FilteredQuery now takes the query boost into account for
scoring.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-763">LUCENE-763</a>: Spellchecker: LuceneDictionary used to skip first word in
enumeration.
<br /><span class="attrib">(Christian Mallwitz via Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-903">LUCENE-903</a>: FilteredQuery explanation inaccuracy with boost.
Explanation tests now "deep" check the explanation details.
<br /><span class="attrib">(Chris Hostetter, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-912">LUCENE-912</a>: DisjunctionMaxScorer first skipTo(target) call ignores the
skip target param and ends up at the first match.
<br /><span class="attrib">(Sudaakeran B. via Chris Hostetter &amp; Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-913">LUCENE-913</a>: Two consecutive score() calls return different
scores for Boolean Queries.
<br /><span class="attrib">(Michael Busch, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1013">LUCENE-1013</a>: Fix IndexWriter.setMaxMergeDocs to work "out of the
box", again, by moving set/getMaxMergeDocs up from
LogDocMergePolicy into LogMergePolicy.  This fixes the API
breakage (non backwards compatible change) caused by <a href="http://issues.apache.org/jira/browse/LUCENE-994">LUCENE-994</a>.
<br /><span class="attrib">(Yonik Seeley via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.2.0.new_features" href="javascript:toggleList('v2.2.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(9)
    <ol id="v2.2.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-759">LUCENE-759</a>: Added two n-gram-producing TokenFilters.
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-822">LUCENE-822</a>: Added FieldSelector capabilities to Searchable for use with
RemoteSearcher, and other Searchable implementations.
<br /><span class="attrib">(Mark Miller, Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-755">LUCENE-755</a>: Added the ability to store arbitrary binary metadata in the posting list.
These metadata are called Payloads. For every position of a Token one Payload in the form
of a variable length byte array can be stored in the prox file.
Remark: The APIs introduced with this feature are in experimental state and thus
        contain appropriate warnings in the javadocs.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-834">LUCENE-834</a>: Added BoostingTermQuery which can boost scores based on the
values of a payload (see #3 above.)
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-834">LUCENE-834</a>: Similarity has a new method for scoring payloads called
scorePayloads that can be overridden to take advantage of payload
storage (see #3 above)
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-834">LUCENE-834</a>: Added isPayloadAvailable() onto TermPositions interface and
implemented it in the appropriate places
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-853">LUCENE-853</a>: Added RemoteCachingWrapperFilter to enable caching of Filters
on the remote side of the RMI connection.
<br /><span class="attrib">(Matt Ericson via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-446">LUCENE-446</a>: Added Solr's search.function for scores based on field
values, plus CustomScoreQuery for simple score (post) customization.
<br /><span class="attrib">(Yonik Seeley, Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-1058">LUCENE-1058</a>: Added new TeeTokenFilter (like the UNIX 'tee' command) and SinkTokenizer which can be used to share tokens between two or more
Fields such that the other Fields do not have to go through the whole Analysis process over again.  For instance, if you have two
Fields that share all the same analysis steps except one lowercases tokens and the other does not, you can coordinate the operations
between the two using the TeeTokenFilter and the SinkTokenizer.  See TeeSinkTokenTest.java for examples.
<br /><span class="attrib">(Grant Ingersoll, Michael Busch, Yonik Seeley)</span></li>
    </ol>
  </li>
  <li><a id="v2.2.0.optimizations" href="javascript:toggleList('v2.2.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(7)
    <ol id="v2.2.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-761">LUCENE-761</a>: The proxStream is now cloned lazily in SegmentTermPositions
when nextPosition() is called for the first time. This allows using instances
of SegmentTermPositions instead of SegmentTermDocs without additional costs.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-431">LUCENE-431</a>: RAMInputStream and RAMOutputStream extend IndexInput and
IndexOutput directly now. This avoids further buffering and thus avoids
unnecessary array copies.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-730">LUCENE-730</a>: Updated BooleanScorer2 to make use of BooleanScorer in some
cases and possibly improve scoring performance.  Documents can now be
delivered out-of-order as they are scored (e.g. to HitCollector).
N.B. A bit of code had to be disabled in QueryUtils in order for
TestBoolean2 test to keep passing.
<br /><span class="attrib">(Paul Elschot via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-882">LUCENE-882</a>: Spellchecker doesn't store the ngrams anymore but only indexes
them to keep the spell index small.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-430">LUCENE-430</a>: Delay allocation of the buffer after a clone of BufferedIndexInput.
Together with <a href="http://issues.apache.org/jira/browse/LUCENE-888">LUCENE-888</a> this will allow to adjust the buffer size
dynamically.
<br /><span class="attrib">(Paul Elschot, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-888">LUCENE-888</a>: Increase buffer sizes inside CompoundFileWriter and
BufferedIndexOutput.  Also increase buffer size in
BufferedIndexInput, but only when used during merging.  Together,
these increases yield 10-18% overall performance gain vs the
previous 1K defaults.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-866">LUCENE-866</a>: Adds multi-level skip lists to the posting lists. This speeds
up most queries that use skipTo(), especially on big indexes with large posting
lists. For average AND queries the speedup is about 20%, for queries that
contain very frequent and very unique terms the speedup can be over 80%.
<br /><span class="attrib">(Michael Busch)</span></li>
    </ol>
  </li>
  <li><a id="v2.2.0.documentation" href="javascript:toggleList('v2.2.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(6)
    <ol id="v2.2.0.documentation.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-791">LUCENE 791</a> &amp;&amp; <a href="http://issues.apache.org/jira/browse/INFRA-1173">INFRA-1173</a>: Infrastructure moved the Wiki to
<a href="http://wiki.apache.org/lucene-java/">http://wiki.apache.org/lucene-java/</a>   Updated the links in the docs and
wherever else I found references.
<br /><span class="attrib">(Grant Ingersoll, Joe Schaefer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-807">LUCENE-807</a>: Fixed the javadoc for ScoreDocComparator.compare() to be
consistent with java.util.Comparator.compare(): Any integer is allowed to
be returned instead of only -1/0/1.
<br /><span class="attrib">(Paul Cowan via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-875">LUCENE-875</a>: Solved javadoc warnings &amp; errors under jdk1.4.
Solved javadoc errors under jdk5 (jars in path for gdata).
Made "javadocs" target depend on "build-contrib" for first downloading
contrib jars configured for dynamic downloaded. (Note: when running
behind firewall, a firewall prompt might pop up)
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-740">LUCENE-740</a>: Added SNOWBALL-LICENSE.txt to the snowball package and a
remark about the license to NOTICE.TXT.
<br /><span class="attrib">(Steven Parkes via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-925">LUCENE-925</a>: Added analysis package javadocs.
<br /><span class="attrib">(Grant Ingersoll and Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-926">LUCENE-926</a>: Added document package javadocs.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
    </ol>
  </li>
  <li><a id="v2.2.0.build" href="javascript:toggleList('v2.2.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(10)
    <ol id="v2.2.0.build.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-802">LUCENE-802</a>: Added LICENSE.TXT and NOTICE.TXT to Lucene jars.
<br /><span class="attrib">(Steven Parkes via Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-885">LUCENE-885</a>: "ant test" now includes all contrib tests.  The new
"ant test-core" target can be used to run only the Core (non
contrib) tests.
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-900">LUCENE-900</a>: "ant test" now enables Java assertions (in Lucene packages).
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-894">LUCENE-894</a>: Add custom build file for binary distributions that includes
targets to build the demos.
<br /><span class="attrib">(Chris Hostetter, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-904">LUCENE-904</a>: The "package" targets in build.xml now also generate .md5
checksum files.
<br /><span class="attrib">(Chris Hostetter, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-907">LUCENE-907</a>: Include LICENSE.TXT and NOTICE.TXT in the META-INF dirs of
demo war, demo jar, and the contrib jars.
<br /><span class="attrib">(Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-909">LUCENE-909</a>: Demo targets for running the demo.
<br /><span class="attrib">(Doron Cohen)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-908">LUCENE-908</a>: Improves content of MANIFEST file and makes it customizable
for the contribs. Adds SNOWBALL-LICENSE.txt to META-INF of the snowball
jar and makes sure that the lucli jar contains LICENSE.txt and NOTICE.txt.
<br /><span class="attrib">(Chris Hostetter, Michael Busch)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-930">LUCENE-930</a>: Various contrib building improvements to ensure contrib
dependencies are met, and test compilation errors fail the build.
<br /><span class="attrib">(Steven Parkes, Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-622">LUCENE-622</a>: Add ant target and pom.xml files for building maven artifacts
of the Lucene core and the contrib modules.
<br /><span class="attrib">(Sami Siren, Karl Wettin, Michael Busch)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v2.1.0" href="javascript:toggleList('v2.1.0')">Release 2.1.0  [2007-02-17]</a></h3>
<ul id="v2.1.0.list">
  <li><a id="v2.1.0.changes_in_runtime_behavior" href="javascript:toggleList('v2.1.0.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(9)
    <ol id="v2.1.0.changes_in_runtime_behavior.list">
      <li>'s' and 't' have been removed from the list of default stopwords
in StopAnalyzer (also used in by StandardAnalyzer). Having e.g. 's'
as a stopword meant that 's-class' led to the same results as 'class'.
Note that this problem still exists for 'a', e.g. in 'a-class' as
'a' continues to be a stopword.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-478">LUCENE-478</a>: Updated the list of Unicode code point ranges for CJK
(now split into CJ and K) in StandardAnalyzer.
<br /><span class="attrib">(John Wang and
Steven Rowe via Otis Gospodnetic)</span></li>
      <li>Modified some CJK Unicode code point ranges in StandardTokenizer.jj,
and added a few more of them to increase CJK character coverage.
Also documented some of the ranges.
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-489">LUCENE-489</a>: Add support for leading wildcard characters (*, ?) to
QueryParser.  Default is to disallow them, as before.
<br /><span class="attrib">(Steven Parkes via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-703">LUCENE-703</a>: QueryParser changed to default to use of ConstantScoreRangeQuery
for range queries. Added useOldRangeQuery property to QueryParser to allow
selection of old RangeQuery class if required.
<br /><span class="attrib">(Mark Harwood)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-543">LUCENE-543</a>: WildcardQuery now performs a TermQuery if the provided term
does not contain a wildcard character (? or *), when previously a
StringIndexOutOfBoundsException was thrown.
<br /><span class="attrib">(Michael Busch via Erik Hatcher)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-726">LUCENE-726</a>: Removed the use of deprecated doc.fields() method and
Enumeration.
<br /><span class="attrib">(Michael Busch via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-436">LUCENE-436</a>: Removed finalize() in TermInfosReader and SegmentReader,
and added a call to enumerators.remove() in TermInfosReader.close().
The finalize() overrides were added to help with a pre-1.4.2 JVM bug
that has since been fixed, plus we no longer support pre-1.4.2 JVMs.
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-771">LUCENE-771</a>: The default location of the write lock is now the
index directory, and is named simply "write.lock" (without a big
digest prefix).  The system properties "org.apache.lucene.lockDir"
nor "java.io.tmpdir" are no longer used as the global directory
for storing lock files, and the LOCK_DIR field of FSDirectory is
now deprecated.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.1.0.new_features" href="javascript:toggleList('v2.1.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(15)
    <ol id="v2.1.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-503">LUCENE-503</a>: New ThaiAnalyzer and ThaiWordFilter in contrib/analyzers
<br /><span class="attrib">(Samphan Raruenrom via Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-545">LUCENE-545</a>: New FieldSelector API and associated changes to
IndexReader and implementations.  New Fieldable interface for use
with the lazy field loading mechanism.
<br /><span class="attrib">(Grant Ingersoll and Chuck
Williams via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-676">LUCENE-676</a>: Move Solr's PrefixFilter to Lucene core.
<br /><span class="attrib">(Yura
Smolsky, Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-678">LUCENE-678</a>: Added NativeFSLockFactory, which implements locking
using OS native locking (via java.nio.*).
<br /><span class="attrib">(Michael McCandless via
Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-544">LUCENE-544</a>: Added the ability to specify different boosts for
different fields when using MultiFieldQueryParser
<br /><span class="attrib">(Matt Ericson
via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-528">LUCENE-528</a>: New IndexWriter.addIndexesNoOptimize() that doesn't
optimize the index when adding new segments, only performing
merges as needed.
<br /><span class="attrib">(Ning Li via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-573">LUCENE-573</a>: QueryParser now allows backslash escaping in
quoted terms and phrases.
<br /><span class="attrib">(Michael Busch via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-716">LUCENE-716</a>: QueryParser now allows specification of Unicode
characters in terms via a unicode escape of the form \uXXXX
<br /><span class="attrib">(Michael Busch via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-709">LUCENE-709</a>: Added RAMDirectory.sizeInBytes(), IndexWriter.ramSizeInBytes()
and IndexWriter.flushRamSegments(), allowing applications to
control the amount of memory used to buffer documents.
<br /><span class="attrib">(Chuck Williams via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-723">LUCENE-723</a>: QueryParser now parses *:* as MatchAllDocsQuery
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-741">LUCENE-741</a>: Command-line utility for modifying or removing norms
on fields in an existing index.  This is mostly based on <a href="http://issues.apache.org/jira/browse/LUCENE-496">LUCENE-496</a>
and lives in contrib/miscellaneous.
<br /><span class="attrib">(Chris Hostetter, Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-759">LUCENE-759</a>: Added NGramTokenizer and EdgeNGramTokenizer classes and
their passing unit tests.
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-565">LUCENE-565</a>: Added methods to IndexWriter to more efficiently
handle updating documents (the "delete then add" use case).  This
is intended to be an eventual replacement for the existing
IndexModifier.  Added IndexWriter.flush() (renamed from
flushRamSegments()) to flush all pending updates (held in RAM), to
the Directory.
<br /><span class="attrib">(Ning Li via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-762">LUCENE-762</a>: Added in SIZE and SIZE_AND_BREAK FieldSelectorResult options
which allow one to retrieve the size of a field without retrieving the
actual field.
<br /><span class="attrib">(Chuck Williams via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-799">LUCENE-799</a>: Properly handle lazy, compressed fields.
<br /><span class="attrib">(Mike Klaas via Grant Ingersoll)</span></li>
    </ol>
  </li>
  <li><a id="v2.1.0.api_changes" href="javascript:toggleList('v2.1.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(19)
    <ol id="v2.1.0.api_changes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-438">LUCENE-438</a>: Remove "final" from Token, implement Cloneable, allow
changing of termText via setTermText().
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li>org.apache.lucene.analysis.nl.WordlistLoader has been deprecated
and is supposed to be replaced with the WordlistLoader class in
package org.apache.lucene.analysis
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-609">LUCENE-609</a>: Revert return type of Document.getField(s) to Field
for backward compatibility, added new Document.getFieldable(s)
for access to new lazy loaded fields.
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-608">LUCENE-608</a>: Document.fields() has been deprecated and a new method
Document.getFields() has been added that returns a List instead of
an Enumeration
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-605">LUCENE-605</a>: New Explanation.isMatch() method and new ComplexExplanation
subclass allows explain methods to produce Explanations which model
"matching" independent of having a positive value.
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-621">LUCENE-621</a>: New static methods IndexWriter.setDefaultWriteLockTimeout
and IndexWriter.setDefaultCommitLockTimeout for overriding default
timeout values for all future instances of IndexWriter (as well
as for any other classes that may reference the static values,
ie: IndexReader).
<br /><span class="attrib">(Michael McCandless via Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-638">LUCENE-638</a>: FSDirectory.list() now only returns the directory's
Lucene-related files. Thanks to this change one can now construct
a RAMDirectory from a file system directory that contains files
not related to Lucene.
<br /><span class="attrib">(Simon Willnauer via Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-635">LUCENE-635</a>: Decoupling locking implementation from Directory
implementation.  Added set/getLockFactory to Directory and moved
all locking code into subclasses of abstract class LockFactory.
FSDirectory and RAMDirectory still default to their prior locking
implementations, but now you can mix &amp; match, for example using
SingleInstanceLockFactory (ie, in memory locking) locking with an
FSDirectory.  Note that now you must call setDisableLocks before
the instantiation a FSDirectory if you wish to disable locking
for that Directory.
<br /><span class="attrib">(Michael McCandless, Jeff Patterson via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-657">LUCENE-657</a>: Made FuzzyQuery non-final and inner ScoreTerm protected.
<br /><span class="attrib">(Steven Parkes via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-701">LUCENE-701</a>: Lockless commits: a commit lock is no longer required
when a writer commits and a reader opens the index.  This includes
a change to the index file format (see docs/fileformats.html for
details).  It also removes all APIs associated with the commit
lock &amp; its timeout.  Readers are now truly read-only and do not
block one another on startup.  This is the first step to getting
Lucene to work correctly over NFS (second step is
<a href="http://issues.apache.org/jira/browse/LUCENE-710">LUCENE-710</a>).
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-722">LUCENE-722</a>: DEFAULT_MIN_DOC_FREQ was misspelled DEFALT_MIN_DOC_FREQ
in Similarity's MoreLikeThis class. The misspelling has been
replaced by the correct spelling.
<br /><span class="attrib">(Andi Vajda via Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-738">LUCENE-738</a>: Reduce the size of the file that keeps track of which
documents are deleted when the number of deleted documents is
small.  This changes the index file format and cannot be
read by previous versions of Lucene.
<br /><span class="attrib">(Doron Cohen via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-756">LUCENE-756</a>: Maintain all norms in a single .nrm file to reduce the
number of open files and file descriptors for the non-compound index
format.  This changes the index file format, but maintains the
ability to read and update older indices. The first segment merge
on an older format index will create a single .nrm file for the new
segment.
<br /><span class="attrib">(Doron Cohen via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-732">LUCENE-732</a>: DateTools support has been added to QueryParser, with
setters for both the default Resolution, and per-field Resolution.
For backwards compatibility, DateField is still used if no Resolutions
are specified.
<br /><span class="attrib">(Michael Busch via Chris Hostetter)</span></li>
      <li>Added isOptimized() method to IndexReader.
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-773">LUCENE-773</a>: Deprecate the FSDirectory.getDirectory(*) methods that
take a boolean "create" argument.  Instead you should use
IndexWriter's "create" argument to create a new index.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-780">LUCENE-780</a>: Add a static Directory.copy() method to copy files
from one Directory to another.
<br /><span class="attrib">(Jiri Kuhn via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-773">LUCENE-773</a>: Added Directory.clearLock(String name) to forcefully
remove an old lock.  The default implementation is to ask the
lockFactory (if non null) to clear the lock.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-795">LUCENE-795</a>: Directory.renameFile() has been deprecated as it is
not used anymore inside Lucene.
<br /><span class="attrib">(Daniel Naber)</span></li>
    </ol>
  </li>
  <li><a id="v2.1.0.bug_fixes" href="javascript:toggleList('v2.1.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(32)
    <ol id="v2.1.0.bug_fixes.list">
      <li>Fixed the web application demo (built with "ant war-demo") which
didn't work because it used a QueryParser method that had
been removed
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-583">LUCENE-583</a>: ISOLatin1AccentFilter fails to preserve positionIncrement
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-575">LUCENE-575</a>: SpellChecker min score is incorrectly changed by suggestSimilar
<br /><span class="attrib">(Karl Wettin via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-587">LUCENE-587</a>: Explanation.toHtml was producing malformed HTML
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li>Fix to allow MatchAllDocsQuery to be used with RemoteSearcher
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-601">LUCENE-601</a>: RAMDirectory and RAMFile made Serializable
<br /><span class="attrib">(Karl Wettin via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-557">LUCENE-557</a>: Fixes to BooleanQuery and FilteredQuery so that the score
Explanations match up with the real scores.
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-607">LUCENE-607</a>: ParallelReader's TermEnum fails to advance properly to
new fields
<br /><span class="attrib">(Chuck Williams, Christian Kohlschuetter via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-610">LUCENE-610</a>,<a href="http://issues.apache.org/jira/browse/LUCENE-611">LUCENE-611</a>: Simple syntax changes to allow compilation with ecj:
disambiguate inner class scorer's use of doc() in BooleanScorer2,
other test code changes.
<br /><span class="attrib">(DM Smith via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-451">LUCENE-451</a>: All core query types now use ComplexExplanations so that
boosts of zero don't confuse the BooleanWeight explain method.
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-593">LUCENE-593</a>: Fixed LuceneDictionary's inner Iterator
<br /><span class="attrib">(Kåre Fiedler Christiansen via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-641">LUCENE-641</a>: fixed an off-by-one bug with IndexWriter.setMaxFieldLength()
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-659">LUCENE-659</a>: Make PerFieldAnalyzerWrapper delegate getPositionIncrementGap()
to the correct analyzer for the field.
<br /><span class="attrib">(Chuck Williams via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-650">LUCENE-650</a>: Fixed NPE in Locale specific String Sort when Document
has no value.
<br /><span class="attrib">(Oliver Hutchison via Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-683">LUCENE-683</a>: Fixed data corruption when reading lazy loaded fields.
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-678">LUCENE-678</a>: Fixed bug in NativeFSLockFactory which caused the same
lock to be shared between different directories.
<br /><span class="attrib">(Michael McCandless via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-690">LUCENE-690</a>: Fixed thread unsafe use of IndexInput by lazy loaded fields.
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-696">LUCENE-696</a>: Fix bug when scorer for DisjunctionMaxQuery has skipTo()
called on it before next().
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-569">LUCENE-569</a>: Fixed SpanNearQuery bug, for 'inOrder' queries it would fail
to recognize ordered spans if they overlapped with unordered spans.
<br /><span class="attrib">(Paul Elschot via Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-706">LUCENE-706</a>: Updated fileformats.xml|html concerning the docdelta value
in the frequency file.
<br /><span class="attrib">(Johan Stuyts, Doron Cohen via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-715">LUCENE-715</a>: Fixed private constructor in IndexWriter.java to
properly release the acquired write lock if there is an
IOException after acquiring the write lock but before finishing
instantiation.
<br /><span class="attrib">(Matthew Bogosian via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-651">LUCENE-651</a>: Multiple different threads requesting the same
FieldCache entry (often for Sorting by a field) at the same
time caused multiple generations of that entry, which was
detrimental to performance and memory use.
<br /><span class="attrib">(Oliver Hutchison via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-717">LUCENE-717</a>: Fixed build.xml not to fail when there is no lib dir.
<br /><span class="attrib">(Doron Cohen via Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-728">LUCENE-728</a>: Removed duplicate/old MoreLikeThis and SimilarityQueries
classes from contrib/similarity, as their new home is under
contrib/queries.
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-669">LUCENE-669</a>: Do not double-close the RandomAccessFile in
FSIndexInput/Output during finalize().  Besides sending an
IOException up to the GC, this may also be the cause intermittent
"The handle is invalid" IOExceptions on Windows when trying to
close readers or writers.
<br /><span class="attrib">(Michael Busch via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-702">LUCENE-702</a>: Fix IndexWriter.addIndexes(*) to not corrupt the index
on any exceptions (eg disk full).  The semantics of these methods
is now transactional: either all indices are merged or none are.
Also fixed IndexWriter.mergeSegments (called outside of
addIndexes(*) by addDocument, optimize, flushRamSegments) and
IndexReader.commit() (called by close) to clean up and keep the
instance state consistent to what's actually in the index
<br /><span class="attrib">(Mike
McCandless)</span>.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-129">LUCENE-129</a>: Change finalizers to do "try {...} finally
{super.finalize();}" to make sure we don't miss finalizers in
classes above us.
<br /><span class="attrib">(Esmond Pitt via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-754">LUCENE-754</a>: Fix a problem introduced by <a href="http://issues.apache.org/jira/browse/LUCENE-651">LUCENE-651</a>, causing
IndexReaders to hang around forever, in addition to not
fixing the original FieldCache performance problem.
<br /><span class="attrib">(Chris Hostetter, Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-140">LUCENE-140</a>: Fix IndexReader.deleteDocument(int docNum) to
correctly raise ArrayIndexOutOfBoundsException when docNum is too
large.  Previously, if docNum was only slightly too large (within
the same multiple of 8, ie, up to 7 ints beyond maxDoc), no
exception would be raised and instead the index would become
silently corrupted.  The corruption then only appears much later,
in mergeSegments, when the corrupted segment is merged with
segment(s) after it.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-768">LUCENE-768</a>: Fix case where an Exception during deleteDocument,
undeleteAll or setNorm in IndexReader could leave the reader in a
state where close() fails to release the write lock.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li>Remove "tvp" from known index file extensions because it is
never used.
<br /><span class="attrib">(Nicolas Lalevée via Bernhard Messer)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-767">LUCENE-767</a>: Change how SegmentReader.maxDoc() is computed to not
rely on file length check and instead use the SegmentInfo's
docCount that's already stored explicitly in the index.  This is a
defensive bug fix (ie, there is no known problem seen "in real
life" due to this, just a possible future problem).
<br /><span class="attrib">(Chuck
Williams via Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.1.0.optimizations" href="javascript:toggleList('v2.1.0.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(16)
    <ol id="v2.1.0.optimizations.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-586">LUCENE-586</a>: TermDocs.skipTo() is now more efficient for
multi-segment indexes.  This will improve the performance of many
types of queries against a non-optimized index.
<br /><span class="attrib">(Andrew Hudson
via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-623">LUCENE-623</a>: RAMDirectory.close now nulls out its reference to all
internal "files", allowing them to be GCed even if references to the
RAMDirectory itself still exist.
<br /><span class="attrib">(Nadav Har'El via Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-629">LUCENE-629</a>: Compressed fields are no longer uncompressed and
recompressed during segment merges (e.g. during indexing or
optimizing), thus improving performance .
<br /><span class="attrib">(Michael Busch via Otis
Gospodnetic)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-388">LUCENE-388</a>: Improve indexing performance when maxBufferedDocs is
large by keeping a count of buffered documents rather than
counting after each document addition.
<br /><span class="attrib">(Doron Cohen, Paul Smith,
Yonik Seeley)</span></li>
      <li>Modified TermScorer.explain to use TermDocs.skipTo() instead of
looping through docs.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-672">LUCENE-672</a>: New indexing segment merge policy flushes all
buffered docs to their own segment and delays a merge until
mergeFactor segments of a certain level have been accumulated.
This increases indexing performance in the presence of deleted
docs or partially full segments as well as enabling future
optimizations.
<p/>
NOTE: this also fixes an "under-merging" bug whereby it is
possible to get far too many segments in your index (which will
drastically slow down search, risks exhausting file descriptor
limit, etc.).  This can happen when the number of buffered docs
at close, plus the number of docs in the last non-ram segment is
greater than mergeFactor.
<br /><span class="attrib">(Ning Li, Yonik Seeley)</span></li>
      <li>Lazy loaded fields unnecessarily retained an extra copy of loaded
String data.
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-443">LUCENE-443</a>: ConjunctionScorer performance increase.  Speed up
any BooleanQuery with more than one mandatory clause.
<br /><span class="attrib">(Abdul Chaudhry, Paul Elschot via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-365">LUCENE-365</a>: DisjunctionSumScorer performance increase of
~30%. Speeds up queries with optional clauses.
<br /><span class="attrib">(Paul Elschot via
Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-695">LUCENE-695</a>: Optimized BufferedIndexInput.readBytes() for medium
size buffers, which will speed up merging and retrieving binary
and compressed fields.
<br /><span class="attrib">(Nadav Har'El via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-687">LUCENE-687</a>: Lazy skipping on proximity file speeds up most
queries involving term positions, including phrase queries.
<br /><span class="attrib">(Michael Busch via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-714">LUCENE-714</a>: Replaced 2 cases of manual for-loop array copying
with calls to System.arraycopy instead, in DocumentWriter.java.
<br /><span class="attrib">(Nicolas Lalevee via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-729">LUCENE-729</a>: Non-recursive skipTo and next implementation of
TermDocs for a MultiReader.  The old implementation could
recurse up to the number of segments in the index.
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-739">LUCENE-739</a>: Improve segment merging performance by reusing
the norm array across different fields and doing bulk writes
of norms of segments with no deleted docs.
<br /><span class="attrib">(Michael Busch via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-745">LUCENE-745</a>: Add BooleanQuery.clauses(), allowing direct access
to the List of clauses and replaced the internal synchronized Vector
with an unsynchronized List.
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-750">LUCENE-750</a>: Remove finalizers from FSIndexOutput and move the
FSIndexInput finalizer to the actual file so all clones don't
register a new finalizer.
<br /><span class="attrib">(Yonik Seeley)</span></li>
    </ol>
  </li>
  <li><a id="v2.1.0.test_cases" href="javascript:toggleList('v2.1.0.test_cases')">Test Cases</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v2.1.0.test_cases.list">
      <li>Added TestTermScorer.java
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li>Added TestWindowsMMap.java
<br /><span class="attrib">(Benson Margulies via Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-744">LUCENE-744</a> Append the user.name property onto the temporary directory
that is created so it doesn't interfere with other users.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
    </ol>
  </li>
  <li><a id="v2.1.0.documentation" href="javascript:toggleList('v2.1.0.documentation')">Documentation</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v2.1.0.documentation.list">
      <li>Added style sheet to xdocs named lucene.css and included in the
Anakia VSL descriptor.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li>Added scoring.xml document into xdocs.  Updated Similarity.java
scoring formula.(Grant Ingersoll and Steve Rowe.  Updates from:
Michael McCandless, Doron Cohen, Chris Hostetter, Doug Cutting).
<a href="http://issues.apache.org/jira/browse/LUCENE-664">Issue 664</a>.
</li>
      <li>Added javadocs for FieldSelectorResult.java.
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li>Moved xdocs directory to src/site/src/documentation/content/xdocs per
<a href="http://issues.apache.org/jira/browse/LUCENE-707">Issue 707</a>.  Site now builds using Forrest, just like the other Lucene
siblings.  See <a href="http://wiki.apache.org/jakarta-lucene/HowToUpdateTheWebsite">http://wiki.apache.org/jakarta-lucene/HowToUpdateTheWebsite</a>
for info on updating the website.
<br /><span class="attrib">(Grant Ingersoll with help from Steve Rowe,
Chris Hostetter, Doug Cutting, Otis Gospodnetic, Yonik Seeley)</span></li>
      <li>Added in Developer and System Requirements sections under Resources
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-713">LUCENE-713</a> Updated the Term Vector section of File Formats to include
documentation on how Offset and Position info are stored in the TVF file.
<br /><span class="attrib">(Grant Ingersoll, Samir Abdou)</span></li>
      <li>Added in link to Clover Test Code Coverage Reports under the Develop
section in Resources
<br /><span class="attrib">(Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-748">LUCENE-748</a>: Added details for semantics of IndexWriter.close on
hitting an Exception.
<br /><span class="attrib">(Jed Wesley-Smith via Mike McCandless)</span></li>
      <li>Added some text about what is contained in releases.
<br /><span class="attrib">(Eric Haszlakiewicz via Grant Ingersoll)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-758">LUCENE-758</a>: Fix javadoc to clarify that RAMDirectory(Directory)
makes a full copy of the starting Directory.
<br /><span class="attrib">(Mike McCandless)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-764">LUCENE-764</a>: Fix javadocs to detail temporary space requirements
for IndexWriter's optimize(), addIndexes(*) and addDocument(...)
methods.
<br /><span class="attrib">(Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.1.0.build" href="javascript:toggleList('v2.1.0.build')">Build</a>&nbsp;&nbsp;&nbsp;(3)
    <ol id="v2.1.0.build.list">
      <li>Added in clover test code coverage per <a href="http://issues.apache.org/jira/browse/LUCENE-721">LUCENE-721</a>
To enable clover code coverage, you must have clover.jar in the ANT
classpath and specify -Drun.clover=true on the command line.
<br /><span class="attrib">(Michael Busch and Grant Ingersoll)</span></li>
      <li>Added a sysproperty in common-build.xml per <a href="http://issues.apache.org/jira/browse/LUCENE-752">Lucene 752</a> to map java.io.tmpdir to
${build.dir}/test just like the tempDir sysproperty.
</li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-757">LUCENE-757</a> Added new target named init-dist that does setup for
distribution of both binary and source distributions.  Called by package
and package-*-src
</li>
    </ol>
  </li>
</ul>
<h3><a id="v2.0.0" href="javascript:toggleList('v2.0.0')">Release 2.0.0  [2006-05-26]</a></h3>
<ul id="v2.0.0.list">
  <li><a id="v2.0.0.api_changes" href="javascript:toggleList('v2.0.0.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(4)
    <ol id="v2.0.0.api_changes.list">
      <li>All deprecated methods and fields have been removed, except
DateField, which will still be supported for some time
so Lucene can read its date fields from old indexes
<br /><span class="attrib">(Yonik Seeley &amp; Grant Ingersoll)</span></li>
      <li>DisjunctionSumScorer is no longer public.
<br /><span class="attrib">(Paul Elschot via Otis Gospodnetic)</span></li>
      <li>Creating a Field with both an empty name and an empty value
now throws an IllegalArgumentException
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-301">LUCENE-301</a>: Added new IndexWriter({String,File,Directory},
Analyzer) constructors that do not take a boolean "create"
argument.  These new constructors will create a new index if
necessary, else append to the existing one.
<br /><span class="attrib">(Dan Armbrust via
Mike McCandless)</span></li>
    </ol>
  </li>
  <li><a id="v2.0.0.new_features" href="javascript:toggleList('v2.0.0.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v2.0.0.new_features.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-496">LUCENE-496</a>: Command line tool for modifying the field norms of an
existing index; added to contrib/miscellaneous.
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-577">LUCENE-577</a>: SweetSpotSimilarity added to contrib/miscellaneous.
<br /><span class="attrib">(Chris Hostetter)</span></li>
    </ol>
  </li>
  <li><a id="v2.0.0.bug_fixes" href="javascript:toggleList('v2.0.0.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(16)
    <ol id="v2.0.0.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-330">LUCENE-330</a>: Fix issue of FilteredQuery not working properly within
BooleanQuery.
<br /><span class="attrib">(Paul Elschot via Erik Hatcher)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-515">LUCENE-515</a>: Make ConstantScoreRangeQuery and ConstantScoreQuery work
with RemoteSearchable.
<br /><span class="attrib">(Philippe Laflamme via Yonik Seeley)</span></li>
      <li>Added methods to get/set writeLockTimeout and commitLockTimeout in
IndexWriter. These could be set in Lucene 1.4 using a system property.
This feature had been removed without adding the corresponding
getter/setter methods.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-413">LUCENE-413</a>: Fixed ArrayIndexOutOfBoundsException exceptions
when using SpanQueries.
<br /><span class="attrib">(Paul Elschot via Yonik Seeley)</span></li>
      <li>Implemented FilterIndexReader.getVersion() and isCurrent()
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-540">LUCENE-540</a>: Fixed a bug with IndexWriter.addIndexes(Directory[])
that sometimes caused the index order of documents to change.
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-526">LUCENE-526</a>: Fixed a bug in FieldSortedHitQueue that caused
subsequent String sorts with different locales to sort identically.
<br /><span class="attrib">(Paul Cowan via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-541">LUCENE-541</a>: Add missing extractTerms() to DisjunctionMaxQuery
<br /><span class="attrib">(Stefan Will via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-514">LUCENE-514</a>: Added getTermArrays() and extractTerms() to
MultiPhraseQuery
<br /><span class="attrib">(Eric Jain &amp; Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-512">LUCENE-512</a>: Fixed ClassCastException in ParallelReader.getTermFreqVectors
<br /><span class="attrib">(frederic via Yonik)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-352">LUCENE-352</a>: Fixed bug in SpanNotQuery that manifested as
NullPointerException when "exclude" query was not a SpanTermQuery.
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-572">LUCENE-572</a>: Fixed bug in SpanNotQuery hashCode, was ignoring exclude clause
<br /><span class="attrib">(Chris Hostetter)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-561">LUCENE-561</a>: Fixed some ParallelReader bugs. NullPointerException if the reader
didn't know about the field yet, reader didn't keep track if it had deletions,
and deleteDocument calls could circumvent synchronization on the subreaders.
<br /><span class="attrib">(Chuck Williams via Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-556">LUCENE-556</a>: Added empty extractTerms() implementation to MatchAllDocsQuery and
ConstantScoreQuery in order to allow their use with a MultiSearcher.
<br /><span class="attrib">(Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-546">LUCENE-546</a>: Removed 2GB file size limitations for RAMDirectory.
<br /><span class="attrib">(Peter Royal, Michael Chan, Yonik Seeley)</span></li>
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-485">LUCENE-485</a>: Don't hold commit lock while removing obsolete index
files.
<br /><span class="attrib">(Luc Vanlerberghe via cutting)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v1.9.1" href="javascript:toggleList('v1.9.1')">Release 1.9.1  [2006-03-02]</a></h3>
<ul id="v1.9.1.list">
  <li><a id="v1.9.1.bug_fixes" href="javascript:toggleList('v1.9.1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v1.9.1.bug_fixes.list">
      <li><a href="http://issues.apache.org/jira/browse/LUCENE-511">LUCENE-511</a>: Fix a bug in the BufferedIndexOutput optimization
introduced in 1.9-final.
<br /><span class="attrib">(Shay Banon &amp; Steven Tamm via cutting)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v1.9_final" href="javascript:toggleList('v1.9_final')">Release 1.9 final  [2006-02-27]</a></h3>
<ul id="v1.9_final.list">
      <li>Note that this release is mostly but not 100% source compatible with
the previous release of Lucene (1.4.3). In other words, you should
make sure your application compiles with this version of Lucene before
you replace the old Lucene JAR with the new one.  Many methods have
been deprecated in anticipation of release 2.0, so deprecation
warnings are to be expected when upgrading from 1.4.3 to 1.9.
</li>
  </li>
  <li><a id="v1.9_final.bug_fixes" href="javascript:toggleList('v1.9_final.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v1.9_final.bug_fixes.list">
      <li>The fix that made IndexWriter.setMaxBufferedDocs(1) work had negative
effects on indexing performance and has thus been reverted. The
argument for setMaxBufferedDocs(int) must now at least be 2, otherwise
an exception is thrown.
<br /><span class="attrib">(Daniel Naber)</span></li>
    </ol>
  </li>
  <li><a id="v1.9_final.optimizations" href="javascript:toggleList('v1.9_final.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v1.9_final.optimizations.list">
      <li>Optimized BufferedIndexOutput.writeBytes() to use
System.arraycopy() in more cases, rather than copying byte-by-byte.
<br /><span class="attrib">(Lukas Zapletal via Cutting)</span></li>
    </ol>
  </li>
</ul>
<h3><a id="v1.9_rc1" href="javascript:toggleList('v1.9_rc1')">Release 1.9 RC1  [2006-02-21]</a></h3>
<ul id="v1.9_rc1.list">
  <li><a id="v1.9_rc1.requirements" href="javascript:toggleList('v1.9_rc1.requirements')">Requirements</a>&nbsp;&nbsp;&nbsp;(1)
    <ol id="v1.9_rc1.requirements.list">
      <li>To compile and use Lucene you now need Java 1.4 or later.
</li>
    </ol>
  </li>
  <li><a id="v1.9_rc1.changes_in_runtime_behavior" href="javascript:toggleList('v1.9_rc1.changes_in_runtime_behavior')">Changes in runtime behavior</a>&nbsp;&nbsp;&nbsp;(9)
    <ol id="v1.9_rc1.changes_in_runtime_behavior.list">
      <li>FuzzyQuery can no longer throw a TooManyClauses exception. If a
FuzzyQuery expands to more than BooleanQuery.maxClauseCount
terms only the BooleanQuery.maxClauseCount most similar terms
go into the rewritten query and thus the exception is avoided.
<br /><span class="attrib">(Christoph)</span></li>
      <li>Changed system property from "org.apache.lucene.lockdir" to
"org.apache.lucene.lockDir", so that its casing follows the existing
pattern used in other Lucene system properties.
<br /><span class="attrib">(Bernhard)</span></li>
      <li>The terms of RangeQueries and FuzzyQueries are now converted to
lowercase by default (as it has been the case for PrefixQueries
and WildcardQueries before). Use setLowercaseExpandedTerms(false)
to disable that behavior but note that this also affects
PrefixQueries and WildcardQueries.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>Document frequency that is computed when MultiSearcher is used is now
computed correctly and "globally" across subsearchers and indices, while
before it used to be computed locally to each index, which caused
ranking across multiple indices not to be equivalent.
<br /><span class="attrib">(Chuck Williams, Wolf Siberski via Otis, <a href="http://issues.apache.org/jira/browse/LUCENE-295">bug #31841&nbsp;[LUCENE-295]</a>)</span></li>
      <li>When opening an IndexWriter with create=true, Lucene now only deletes
its own files from the index directory (looking at the file name suffixes
to decide if a file belongs to Lucene). The old behavior was to delete
all files.
<br /><span class="attrib">(Daniel Naber and Bernhard Messer, <a href="http://issues.apache.org/jira/browse/LUCENE-385">bug #34695&nbsp;[LUCENE-385]</a>)</span></li>
      <li>The version of an IndexReader, as returned by getCurrentVersion()
and getVersion() doesn't start at 0 anymore for new indexes. Instead, it
is now initialized by the system time in milliseconds.
<br /><span class="attrib">(Bernhard Messer via Daniel Naber)</span></li>
      <li>Several default values cannot be set via system properties anymore, as
this has been considered inappropriate for a library like Lucene. For
most properties there are set/get methods available in IndexWriter which
you should use instead. This affects the following properties:
See IndexWriter for getter/setter methods:
  org.apache.lucene.writeLockTimeout, org.apache.lucene.commitLockTimeout,
  org.apache.lucene.minMergeDocs, org.apache.lucene.maxMergeDocs,
  org.apache.lucene.maxFieldLength, org.apache.lucene.termIndexInterval,
  org.apache.lucene.mergeFactor,
See BooleanQuery for getter/setter methods:
  org.apache.lucene.maxClauseCount
See FSDirectory for getter/setter methods:
  disableLuceneLocks
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>Fixed FieldCacheImpl to use user-provided IntParser and FloatParser,
instead of using Integer and Float classes for parsing.
<br /><span class="attrib">(Yonik Seeley via Otis Gospodnetic)</span></li>
      <li>Expert level search routines returning TopDocs and TopFieldDocs
no longer normalize scores.  This also fixes bugs related to
MultiSearchers and score sorting/normalization.
<br /><span class="attrib">(Luc Vanlerberghe via Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-469">LUCENE-469</a>)</span></li>
    </ol>
  </li>
  <li><a id="v1.9_rc1.new_features" href="javascript:toggleList('v1.9_rc1.new_features')">New features</a>&nbsp;&nbsp;&nbsp;(33)
    <ol id="v1.9_rc1.new_features.list">
      <li>Added support for stored compressed fields (<a href="http://issues.apache.org/jira/browse/LUCENE-274">patch #31149&nbsp;[LUCENE-274]</a>)
<br /><span class="attrib">(Bernhard Messer via Christoph)</span></li>
      <li>Added support for binary stored fields (<a href="http://issues.apache.org/jira/browse/LUCENE-229">patch #29370&nbsp;[LUCENE-229]</a>)
<br /><span class="attrib">(Drew Farris and Bernhard Messer via Christoph)</span></li>
      <li>Added support for position and offset information in term vectors
(<a href="http://issues.apache.org/jira/browse/LUCENE-95">patch #18927&nbsp;[LUCENE-95]</a>).
<br /><span class="attrib">(Grant Ingersoll &amp; Christoph)</span></li>
      <li>A new class DateTools has been added. It allows you to format dates
in a readable format adequate for indexing. Unlike the existing
DateField class DateTools can cope with dates before 1970 and it
forces you to specify the desired date resolution (e.g. month, day,
second, ...) which can make RangeQuerys on those fields more efficient.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>QueryParser now correctly works with Analyzers that can return more
than one token per position. For example, a query "+fast +car"
would be parsed as "+fast +(car automobile)" if the Analyzer
returns "car" and "automobile" at the same position whenever it
finds "car" (<a href="http://issues.apache.org/jira/browse/LUCENE-133">Patch #23307&nbsp;[LUCENE-133]</a>).
<br /><span class="attrib">(Pierrick Brihaye, Daniel Naber)</span></li>
      <li>Permit unbuffered Directory implementations (e.g., using mmap).
InputStream is replaced by the new classes IndexInput and
BufferedIndexInput.  OutputStream is replaced by the new classes
IndexOutput and BufferedIndexOutput.  InputStream and OutputStream
are now deprecated and FSDirectory is now subclassable.
<br /><span class="attrib">(cutting)</span></li>
      <li>Add native Directory and TermDocs implementations that work under
GCJ.  These require GCC 3.4.0 or later and have only been tested
on Linux.  Use 'ant gcj' to build demo applications.
<br /><span class="attrib">(cutting)</span></li>
      <li>Add MMapDirectory, which uses nio to mmap input files.  This is
still somewhat slower than FSDirectory.  However it uses less
memory per query term, since a new buffer is not allocated per
term, which may help applications which use, e.g., wildcard
queries.  It may also someday be faster.
<br /><span class="attrib">(cutting &amp; Paul Elschot)</span></li>
      <li>Added javadocs-internal to build.xml - <a href="http://issues.apache.org/jira/browse/LUCENE-250">bug #30360&nbsp;[LUCENE-250]</a>
<br /><span class="attrib">(Paul Elschot via Otis)</span></li>
      <li>Added RangeFilter, a more generically useful filter than DateFilter.
<br /><span class="attrib">(Chris M Hostetter via Erik)</span></li>
      <li>Added NumberTools, a utility class indexing numeric fields.
<br /><span class="attrib">(adapted from code contributed by Matt Quail; committed by Erik)</span></li>
      <li>Added public static IndexReader.main(String[] args) method.
IndexReader can now be used directly at command line level
to list and optionally extract the individual files from an existing
compound index file.
<br /><span class="attrib">(adapted from code contributed by Garrett Rooney; committed by Bernhard)</span></li>
      <li>Add IndexWriter.setTermIndexInterval() method.  See javadocs.
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Added LucenePackage, whose static get() method returns java.util.Package,
which lets the caller get the Lucene version information specified in
the Lucene Jar.
<br /><span class="attrib">(Doug Cutting via Otis)</span></li>
      <li>Added Hits.iterator() method and corresponding HitIterator and Hit objects.
This provides standard java.util.Iterator iteration over Hits.
Each call to the iterator's next() method returns a Hit object.
<br /><span class="attrib">(Jeremy Rayner via Erik)</span></li>
      <li>Add ParallelReader, an IndexReader that combines separate indexes
over different fields into a single virtual index.
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Add IntParser and FloatParser interfaces to FieldCache, so that
fields in arbitrarily formats can be cached as ints and floats.
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Added class org.apache.lucene.index.IndexModifier which combines
IndexWriter and IndexReader, so you can add and delete documents without
worrying about synchronization/locking issues.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>Lucene can now be used inside an unsigned applet, as Lucene's access
to system properties will not cause a SecurityException anymore.
<br /><span class="attrib">(Jon Schuster via Daniel Naber, <a href="http://issues.apache.org/jira/browse/LUCENE-369">bug #34359&nbsp;[LUCENE-369]</a>)</span></li>
      <li>Added a new class MatchAllDocsQuery that matches all documents.
<br /><span class="attrib">(John Wang via Daniel Naber, <a href="http://issues.apache.org/jira/browse/LUCENE-389">bug #34946&nbsp;[LUCENE-389]</a>)</span></li>
      <li>Added ability to omit norms on a per field basis to decrease
index size and memory consumption when there are many indexed fields.
See Field.setOmitNorms()
<br /><span class="attrib">(Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-448">LUCENE-448</a>)</span></li>
      <li>Added NullFragmenter to contrib/highlighter, which is useful for
highlighting entire documents or fields.
<br /><span class="attrib">(Erik Hatcher)</span></li>
      <li>Added regular expression queries, RegexQuery and SpanRegexQuery.
Note the same term enumeration caveats apply with these queries as
apply to WildcardQuery and other term expanding queries.
These two new queries are not currently supported via QueryParser.
<br /><span class="attrib">(Erik Hatcher)</span></li>
      <li>Added ConstantScoreQuery which wraps a filter and produces a score
equal to the query boost for every matching document.
<br /><span class="attrib">(Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-383">LUCENE-383</a>)</span></li>
      <li>Added ConstantScoreRangeQuery which produces a constant score for
every document in the range.  One advantage over a normal RangeQuery
is that it doesn't expand to a BooleanQuery and thus doesn't have a maximum
number of terms the range can cover.  Both endpoints may also be open.
<br /><span class="attrib">(Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-383">LUCENE-383</a>)</span></li>
      <li>Added ability to specify a minimum number of optional clauses that
must match in a BooleanQuery.  See BooleanQuery.setMinimumNumberShouldMatch().
<br /><span class="attrib">(Paul Elschot, Chris Hostetter via Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-395">LUCENE-395</a>)</span></li>
      <li>Added DisjunctionMaxQuery which provides the maximum score across its clauses.
It's very useful for searching across multiple fields.
<br /><span class="attrib">(Chuck Williams via Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-323">LUCENE-323</a>)</span></li>
      <li>New class ISOLatin1AccentFilter that replaces accented characters in the ISO
Latin 1 character set by their unaccented equivalent.
<br /><span class="attrib">(Sven Duzont via Erik Hatcher)</span></li>
      <li>New class KeywordAnalyzer. "Tokenizes" the entire stream as a single token.
This is useful for data like zip codes, ids, and some product names.
<br /><span class="attrib">(Erik Hatcher)</span></li>
      <li>Copied LengthFilter from contrib area to core. Removes words that are too
long and too short from the stream.
<br /><span class="attrib">(David Spencer via Otis and Daniel)</span></li>
      <li>Added getPositionIncrementGap(String fieldName) to Analyzer.  This allows
custom analyzers to put gaps between Field instances with the same field
name, preventing phrase or span queries crossing these boundaries.  The
default implementation issues a gap of 0, allowing the default token
position increment of 1 to put the next field's first token into a
successive position.
<br /><span class="attrib">(Erik Hatcher, with advice from Yonik)</span></li>
      <li>StopFilter can now ignore case when checking for stop words.
<br /><span class="attrib">(Grant Ingersoll via Yonik, <a href="http://issues.apache.org/jira/browse/LUCENE-248">LUCENE-248</a>)</span></li>
      <li>Add TopDocCollector and TopFieldDocCollector.  These simplify the
implementation of hit collectors that collect only the
top-scoring or top-sorting hits.
</li>
    </ol>
  </li>
  <li><a id="v1.9_rc1.api_changes" href="javascript:toggleList('v1.9_rc1.api_changes')">API Changes</a>&nbsp;&nbsp;&nbsp;(5)
    <ol id="v1.9_rc1.api_changes.list">
      <li>Several methods and fields have been deprecated. The API documentation
contains information about the recommended replacements. It is planned
that most of the deprecated methods and fields will be removed in
Lucene 2.0.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>The Russian and the German analyzers have been moved to contrib/analyzers.
Also, the WordlistLoader class has been moved one level up in the
hierarchy and is now org.apache.lucene.analysis.WordlistLoader
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>The API contained methods that declared to throw an IOException
but that never did this. These declarations have been removed. If
your code tries to catch these exceptions you might need to remove
those catch clauses to avoid compile errors.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>Add a serializable Parameter Class to standardize parameter enum
classes in BooleanClause and Field.
<br /><span class="attrib">(Christoph)</span></li>
      <li>Added rewrite methods to all SpanQuery subclasses that nest other SpanQuerys.
This allows custom SpanQuery subclasses that rewrite (for term expansion, for
example) to nest within the built-in SpanQuery classes successfully.
</li>
    </ol>
  </li>
  <li><a id="v1.9_rc1.bug_fixes" href="javascript:toggleList('v1.9_rc1.bug_fixes')">Bug fixes</a>&nbsp;&nbsp;&nbsp;(24)
    <ol id="v1.9_rc1.bug_fixes.list">
      <li>The JSP demo page (src/jsp/results.jsp) now properly closes the
IndexSearcher it opens.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>Fixed a bug in IndexWriter.addIndexes(IndexReader[] readers) that
prevented deletion of obsolete segments.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Fix in FieldInfos to avoid the return of an extra blank field in
IndexReader.getFieldNames() (<a href="http://issues.apache.org/jira/browse/LUCENE-102">Patch #19058&nbsp;[LUCENE-102]</a>).
<br /><span class="attrib">(Mark Harwood via Bernhard)</span></li>
      <li>Some combinations of BooleanQuery and MultiPhraseQuery (formerly
PhrasePrefixQuery) could provoke UnsupportedOperationException
(<a href="http://issues.apache.org/jira/browse/LUCENE-337">bug #33161&nbsp;[LUCENE-337]</a>).
<br /><span class="attrib">(Rhett Sutphin via Daniel Naber)</span></li>
      <li>Small bug in skipTo of ConjunctionScorer that caused NullPointerException
if skipTo() was called without prior call to next() fixed.
<br /><span class="attrib">(Christoph)</span></li>
      <li>Disable Similiarty.coord() in the scoring of most automatically
generated boolean queries.  The coord() score factor is
appropriate when clauses are independently specified by a user,
but is usually not appropriate when clauses are generated
automatically, e.g., by a fuzzy, wildcard or range query.  Matches
on such automatically generated queries are no longer penalized
for not matching all terms.
<br /><span class="attrib">(Doug Cutting, <a href="http://issues.apache.org/jira/browse/LUCENE-346">Patch #33472&nbsp;[LUCENE-346]</a>)</span></li>
      <li>Getting a lock file with Lock.obtain(long) was supposed to wait for
a given amount of milliseconds, but this didn't work.
<br /><span class="attrib">(John Wang via Daniel Naber, <a href="http://issues.apache.org/jira/browse/LUCENE-353">Bug #33799&nbsp;[LUCENE-353]</a>)</span></li>
      <li>Fix FSDirectory.createOutput() to always create new files.
Previously, existing files were overwritten, and an index could be
corrupted when the old version of a file was longer than the new.
Now any existing file is first removed.
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Fix BooleanQuery containing nested SpanTermQuery's, which previously
could return an incorrect number of hits.
<br /><span class="attrib">(Reece Wilton via Erik Hatcher, <a href="http://issues.apache.org/jira/browse/LUCENE-393">Bug #35157&nbsp;[LUCENE-393]</a>)</span></li>
      <li>Fix NullPointerException that could occur with a MultiPhraseQuery
inside a BooleanQuery.
<br /><span class="attrib">(Hans Hjelm and Scotty Allen via Daniel Naber, <a href="http://issues.apache.org/jira/browse/LUCENE-404">Bug #35626&nbsp;[LUCENE-404]</a>)</span></li>
      <li>Fixed SnowballFilter to pass through the position increment from
the original token.
<br /><span class="attrib">(Yonik Seeley via Erik Hatcher, <a href="http://issues.apache.org/jira/browse/LUCENE-437">LUCENE-437</a>)</span></li>
      <li>Added Unicode range of Korean characters to StandardTokenizer,
grouping contiguous characters into a token rather than one token
per character.  This change also changes the token type to "&lt;CJ&gt;"
for Chinese and Japanese character tokens (previously it was "&lt;CJK&gt;").
<br /><span class="attrib">(Cheolgoo Kang via Otis and Erik, <a href="http://issues.apache.org/jira/browse/LUCENE-444">LUCENE-444</a> and <a href="http://issues.apache.org/jira/browse/LUCENE-461">LUCENE-461</a>)</span></li>
      <li>FieldsReader now looks at FieldInfo.storeOffsetWithTermVector and
FieldInfo.storePositionWithTermVector and creates the Field with
correct TermVector parameter.
<br /><span class="attrib">(Frank Steinmann via Bernhard, <a href="http://issues.apache.org/jira/browse/LUCENE-455">LUCENE-455</a>)</span></li>
      <li>Fixed WildcardQuery to prevent "cat" matching "ca??".
<br /><span class="attrib">(Xiaozheng Ma via Bernhard, <a href="http://issues.apache.org/jira/browse/LUCENE-306">LUCENE-306</a>)</span></li>
      <li>Fixed a bug where MultiSearcher and ParallelMultiSearcher could
change the sort order when sorting by string for documents without
a value for the sort field.
<br /><span class="attrib">(Luc Vanlerberghe via Yonik, <a href="http://issues.apache.org/jira/browse/LUCENE-453">LUCENE-453</a>)</span></li>
      <li>Fixed a sorting problem with MultiSearchers that can lead to
missing or duplicate docs due to equal docs sorting in an arbitrary order.
<br /><span class="attrib">(Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-456">LUCENE-456</a>)</span></li>
      <li>A single hit using the expert level sorted search methods
resulted in the score not being normalized.
<br /><span class="attrib">(Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-462">LUCENE-462</a>)</span></li>
      <li>Fixed inefficient memory usage when loading an index into RAMDirectory.
<br /><span class="attrib">(Volodymyr Bychkoviak via Bernhard, <a href="http://issues.apache.org/jira/browse/LUCENE-475">LUCENE-475</a>)</span></li>
      <li>Corrected term offsets returned by ChineseTokenizer.
<br /><span class="attrib">(Ray Tsang via Erik Hatcher, <a href="http://issues.apache.org/jira/browse/LUCENE-324">LUCENE-324</a>)</span></li>
      <li>Fixed MultiReader.undeleteAll() to correctly update numDocs.
<br /><span class="attrib">(Robert Kirchgessner via Doug Cutting, <a href="http://issues.apache.org/jira/browse/LUCENE-479">LUCENE-479</a>)</span></li>
      <li>Race condition in IndexReader.getCurrentVersion() and isCurrent()
fixed by acquiring the commit lock.
<br /><span class="attrib">(Luc Vanlerberghe via Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-481">LUCENE-481</a>)</span></li>
      <li>IndexWriter.setMaxBufferedDocs(1) didn't have the expected effect,
this has now been fixed.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>Fixed QueryParser when called with a date in local form like
"[1/16/2000 TO 1/18/2000]". This query did not include the documents
of 1/18/2000, i.e. the last day was not included.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>Removed sorting constraint that threw an exception if there were
not yet any values for the sort field
<br /><span class="attrib">(Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-374">LUCENE-374</a>)</span></li>
    </ol>
  </li>
  <li><a id="v1.9_rc1.optimizations" href="javascript:toggleList('v1.9_rc1.optimizations')">Optimizations</a>&nbsp;&nbsp;&nbsp;(11)
    <ol id="v1.9_rc1.optimizations.list">
      <li>Disk usage (peak requirements during indexing and optimization)
in case of compound file format has been improved.
<br /><span class="attrib">(Bernhard, Dmitry, and Christoph)</span></li>
      <li>Optimize the performance of certain uses of BooleanScorer,
TermScorer and IndexSearcher.  In particular, a BooleanQuery
composed of TermQuery, with not all terms required, that returns a
TopDocs (e.g., through a Hits with no Sort specified) runs much
faster.
<br /><span class="attrib">(cutting)</span></li>
      <li>Removed synchronization from reading of term vectors with an
IndexReader (<a href="http://issues.apache.org/jira/browse/LUCENE-265">Patch #30736&nbsp;[LUCENE-265]</a>).
<br /><span class="attrib">(Bernhard Messer via Christoph)</span></li>
      <li>Optimize term-dictionary lookup to allocate far fewer terms when
scanning for the matching term.  This speeds searches involving
low-frequency terms, where the cost of dictionary lookup can be
significant.
<br /><span class="attrib">(cutting)</span></li>
      <li>Optimize fuzzy queries so the standard fuzzy queries with a prefix
of 0 now run 20-50% faster (<a href="http://issues.apache.org/jira/browse/LUCENE-296">Patch #31882&nbsp;[LUCENE-296]</a>).
<br /><span class="attrib">(Jonathan Hager via Daniel Naber)</span></li>
      <li>A Version of BooleanScorer (BooleanScorer2) added that delivers
documents in increasing order and implements skipTo. For queries
with required or forbidden clauses it may be faster than the old
BooleanScorer, for BooleanQueries consisting only of optional
clauses it is probably slower. The new BooleanScorer is now the
default.
<br /><span class="attrib">(<a href="http://issues.apache.org/jira/browse/LUCENE-294">Patch 31785&nbsp;[LUCENE-294]</a> by Paul Elschot via Christoph)</span></li>
      <li>Use uncached access to norms when merging to reduce RAM usage.
(<a href="http://issues.apache.org/jira/browse/LUCENE-326">Bug #32847&nbsp;[LUCENE-326]</a>).
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Don't read term index when random-access is not required.  This
reduces time to open IndexReaders and they use less memory when
random access is not required, e.g., when merging segments.  The
term index is now read into memory lazily at the first
random-access.
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Optimize IndexWriter.addIndexes(Directory[]) when the number of
added indexes is larger than mergeFactor.  Previously this could
result in quadratic performance.  Now performance is n log(n).
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Speed up the creation of TermEnum for indices with multiple
segments and deleted documents, and thus speed up PrefixQuery,
RangeQuery, WildcardQuery, FuzzyQuery, RangeFilter, DateFilter,
and sorting the first time on a field.
<br /><span class="attrib">(Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-454">LUCENE-454</a>)</span></li>
      <li>Optimized and generalized 32 bit floating point to byte
(custom 8 bit floating point) conversions.  Increased the speed of
Similarity.encodeNorm() anywhere from 10% to 250%, depending on the JVM.
<br /><span class="attrib">(Yonik Seeley, <a href="http://issues.apache.org/jira/browse/LUCENE-467">LUCENE-467</a>)</span></li>
    </ol>
  </li>
  <li><a id="v1.9_rc1.infrastructure" href="javascript:toggleList('v1.9_rc1.infrastructure')">Infrastructure</a>&nbsp;&nbsp;&nbsp;(2)
    <ol id="v1.9_rc1.infrastructure.list">
      <li>Lucene's source code repository has converted from CVS to
Subversion.  The new repository is at
<a href="http://svn.apache.org/repos/asf/lucene/java/trunk">http://svn.apache.org/repos/asf/lucene/java/trunk</a>
</li>
      <li>Lucene's issue tracker has migrated from Bugzilla to JIRA.
Lucene's JIRA is at <a href="http://issues.apache.org/jira/browse/LUCENE">http://issues.apache.org/jira/browse/LUCENE</a>
The old issues are still available at
http://issues.apache.org/bugzilla/show_bug.cgi?id=xxxx
(use the bug number instead of xxxx)
</li>
    </ol>
  </li>
</ul>
<h3><a id="v1.4.3" href="javascript:toggleList('v1.4.3')">Release 1.4.3  [2004-12-07]</a></h3>
    <ol id="v1.4.3.list">
      <li>The JSP demo page (src/jsp/results.jsp) now properly escapes error
messages which might contain user input (e.g. error messages about
query parsing). If you used that page as a starting point for your
own code please make sure your code also properly escapes HTML
characters from user input in order to avoid so-called cross site
scripting attacks.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>QueryParser changes in 1.4.2 broke the QueryParser API. Now the old
API is supported again.
<br /><span class="attrib">(Christoph)</span></li>
    </ol>
<h3><a id="v1.4.2" href="javascript:toggleList('v1.4.2')">Release 1.4.2  [2004-10-01]</a></h3>
    <ol id="v1.4.2.list">
      <li>Fixed <a href="http://issues.apache.org/jira/browse/LUCENE-277">bug #31241&nbsp;[LUCENE-277]</a>: Sorting could lead to incorrect results (documents
missing, others duplicated) if the sort keys were not unique and there
were more than 100 matches.
<br /><span class="attrib">(Daniel Naber)</span></li>
      <li>Memory leak in Sort code (<a href="http://issues.apache.org/jira/browse/LUCENE-276">bug #31240&nbsp;[LUCENE-276]</a>) eliminated.
<br /><span class="attrib">(Rafal Krzewski via Christoph and Daniel)</span></li>
      <li>FuzzyQuery now takes an additional parameter that specifies the
minimum similarity that is required for a term to match the query.
The QueryParser syntax for this is term~x, where x is a floating
point number &gt;= 0 and &lt; 1 (a bigger number means that a higher
similarity is required). Furthermore, a prefix can be specified
for FuzzyQuerys so that only those terms are considered similar that
start with this prefix. This can speed up FuzzyQuery greatly.
<br /><span class="attrib">(Daniel Naber, Christoph Goller)</span></li>
      <li>PhraseQuery and PhrasePrefixQuery now allow the explicit specification
of relative positions.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>QueryParser changes: Fix for ArrayIndexOutOfBoundsExceptions
(<a href="http://issues.apache.org/jira/browse/LUCENE-35">patch #9110&nbsp;[LUCENE-35]</a>); some unused method parameters removed; The ability
to specify a minimum similarity for FuzzyQuery has been added.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>IndexSearcher optimization: a new ScoreDoc is no longer allocated
for every non-zero-scoring hit.  This makes 'OR' queries that
contain common terms substantially faster.
<br /><span class="attrib">(cutting)</span></li>
    </ol>
<h3><a id="v1.4.1" href="javascript:toggleList('v1.4.1')">Release 1.4.1  [2004-08-02]</a></h3>
    <ol id="v1.4.1.list">
      <li>Fixed a performance bug in hit sorting code, where values were not
correctly cached.
<br /><span class="attrib">(Aviran via cutting)</span></li>
      <li>Fixed errors in file format documentation.
<br /><span class="attrib">(Daniel Naber)</span></li>
    </ol>
<h3><a id="v1.4_final" href="javascript:toggleList('v1.4_final')">Release 1.4 final  [2004-07-01]</a></h3>
    <ol id="v1.4_final.list">
      <li>Added "an" to the list of stop words in StopAnalyzer, to complement
the existing "a" there.  Fix for <a href="http://issues.apache.org/jira/browse/LUCENE-132">bug 28960&nbsp;[LUCENE-132]</a>
 (http://issues.apache.org/bugzilla/show_bug.cgi?id=28960).
<br /><span class="attrib">(Otis)</span></li>
      <li>Added new class FieldCache to manage in-memory caches of field term
values.
<br /><span class="attrib">(Tim Jones)</span></li>
      <li>Added overloaded getFieldQuery method to QueryParser which
accepts the slop factor specified for the phrase (or the default
phrase slop for the QueryParser instance).  This allows overriding
methods to replace a PhraseQuery with a SpanNearQuery instead,
keeping the proper slop factor.
<br /><span class="attrib">(Erik Hatcher)</span></li>
      <li>Changed the encoding of GermanAnalyzer.java and GermanStemmer.java to
UTF-8 and changed the build encoding to UTF-8, to make changed files
compile.
<br /><span class="attrib">(Otis Gospodnetic)</span></li>
      <li>Removed synchronization from term lookup under IndexReader methods
termFreq(), termDocs() or termPositions() to improve
multi-threaded performance.
<br /><span class="attrib">(cutting)</span></li>
      <li>Fix a bug where obsolete segment files were not deleted on Win32.
</li>
    </ol>
<h3><a id="v1.4_rc3" href="javascript:toggleList('v1.4_rc3')">Release 1.4 RC3  [2004-05-11]</a></h3>
    <ol id="v1.4_rc3.list">
      <li>Fixed several search bugs introduced by the skipTo() changes in
release 1.4RC1.  The index file format was changed a bit, so
collections must be re-indexed to take advantage of the skipTo()
optimizations.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Added new Document methods, removeField() and removeFields().
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Fixed inconsistencies with index closing.  Indexes and directories
are now only closed automatically by Lucene when Lucene opened
them automatically.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Added new class: FilteredQuery.
<br /><span class="attrib">(Tim Jones)</span></li>
      <li>Added a new SortField type for custom comparators.
<br /><span class="attrib">(Tim Jones)</span></li>
      <li>Lock obtain timed out message now displays the full path to the lock
file.
<br /><span class="attrib">(Daniel Naber via Erik)</span></li>
      <li>Fixed a bug in SpanNearQuery when ordered.
<br /><span class="attrib">(Paul Elschot via cutting)</span></li>
      <li>Fixed so that FSDirectory's locks still work when the
java.io.tmpdir system property is null.
<br /><span class="attrib">(cutting)</span></li>
      <li>Changed FilteredTermEnum's constructor to take no parameters,
as the parameters were ignored anyway
<br /><span class="attrib">(<a href="http://issues.apache.org/jira/browse/LUCENE-224">bug #28858&nbsp;[LUCENE-224]</a>)</span></li>
    </ol>
<h3><a id="v1.4_rc2" href="javascript:toggleList('v1.4_rc2')">Release 1.4 RC2  [2004-03-30]</a></h3>
    <ol id="v1.4_rc2.list">
      <li>GermanAnalyzer now throws an exception if the stopword file
cannot be found (<a href="http://issues.apache.org/jira/browse/LUCENE-203">bug #27987&nbsp;[LUCENE-203]</a>). It now uses LowerCaseFilter
(<a href="http://issues.apache.org/jira/browse/LUCENE-87">bug #18410&nbsp;[LUCENE-87]</a>)
<br /><span class="attrib">(Daniel Naber via Otis, Erik)</span></li>
      <li>Fixed a few bugs in the file format documentation.
<br /><span class="attrib">(cutting)</span></li>
    </ol>
<h3><a id="v1.4_rc1" href="javascript:toggleList('v1.4_rc1')">Release 1.4 RC1  [2004-03-29]</a></h3>
    <ol id="v1.4_rc1.list">
      <li>Changed the format of the .tis file, so that:
<ul class="bulleted-list">
<li class="bulleted-list">
it has a format version number, which makes it easier to
  back-compatibly change file formats in the future.
</li>
<p/>
<li class="bulleted-list">
the term count is now stored as a long.  This was the one aspect
  of the Lucene's file formats which limited index size.
</li>
<p/>
<li class="bulleted-list">
a few internal index parameters are now stored in the index, so
  that they can (in theory) now be changed from index to index,
  although there is not yet an API to do so.
</li>
</ul>
<p/>
These changes are back compatible.  The new code can read old
indexes.  But old code will not be able read new indexes.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added an optimized implementation of TermDocs.skipTo().  A skip
table is now stored for each term in the .frq file.  This only
adds a percent or two to overall index size, but can substantially
speedup many searches.
<br /><span class="attrib">(cutting)</span></li>
      <li>Restructured the Scorer API and all Scorer implementations to take
advantage of an optimized TermDocs.skipTo() implementation.  In
particular, PhraseQuerys and conjunctive BooleanQuerys are
faster when one clause has substantially fewer matches than the
others.  (A conjunctive BooleanQuery is a BooleanQuery where all
clauses are required.)
<br /><span class="attrib">(cutting)</span></li>
      <li>Added new class ParallelMultiSearcher.  Combined with
RemoteSearchable this makes it easy to implement distributed
search systems.
<br /><span class="attrib">(Jean-Francois Halleux via cutting)</span></li>
      <li>Added support for hit sorting.  Results may now be sorted by any
indexed field.  For details see the javadoc for
Searcher#search(Query, Sort).
<br /><span class="attrib">(Tim Jones via Cutting)</span></li>
      <li>Changed FSDirectory to auto-create a full directory tree that it
needs by using mkdirs() instead of mkdir().
<br /><span class="attrib">(Mladen Turk via Otis)</span></li>
      <li>Added a new span-based query API.  This implements, among other
things, nested phrases.  See javadocs for details.
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Added new method Query.getSimilarity(Searcher), and changed
scorers to use it.  This permits one to subclass a Query class so
that it can specify its own Similarity implementation, perhaps
one that delegates through that of the Searcher.
<br /><span class="attrib">(Julien Nioche
via Cutting)</span></li>
      <li>Added MultiReader, an IndexReader that combines multiple other
IndexReaders.
<br /><span class="attrib">(Cutting)</span></li>
      <li>Added support for term vectors.  See Field#isTermVectorStored().
<br /><span class="attrib">(Grant Ingersoll, Cutting &amp; Dmitry)</span></li>
      <li>Fixed the old bug with escaping of special characters in query
strings: http://issues.apache.org/bugzilla/show_bug.cgi?id=24665
<br /><span class="attrib">(Jean-Francois Halleux via Otis)</span></li>
      <li>Added support for overriding default values for the following,
using system properties:
<ul class="bulleted-list">
<li class="bulleted-list">
default commit lock timeout
</li>
<li class="bulleted-list">
default maxFieldLength
</li>
<li class="bulleted-list">
default maxMergeDocs
</li>
<li class="bulleted-list">
default mergeFactor
</li>
<li class="bulleted-list">
default minMergeDocs
</li>
<li class="bulleted-list">
default write lock timeout
</li>
</ul>
<span class="attrib">(Otis)</span></li>
      <li>Changed QueryParser.jj to allow '-' and '+' within tokens:
http://issues.apache.org/bugzilla/show_bug.cgi?id=27491
<br /><span class="attrib">(Morus Walter via Otis)</span></li>
      <li>Changed so that the compound index format is used by default.
This makes indexing a bit slower, but vastly reduces the chances
of file handle problems.
<br /><span class="attrib">(Cutting)</span></li>
    </ol>
<h3><a id="v1.3_final" href="javascript:toggleList('v1.3_final')">Release 1.3 final  [2003-12-26]</a></h3>
    <ol id="v1.3_final.list">
      <li>Added catch of BooleanQuery$TooManyClauses in QueryParser to
throw ParseException instead.
<br /><span class="attrib">(Erik Hatcher)</span></li>
      <li>Fixed a NullPointerException in Query.explain().
<br /><span class="attrib">(Doug Cutting)</span></li>
      <li>Added a new method IndexReader.setNorm(), that permits one to
alter the boosting of fields after an index is created.
</li>
      <li>Distinguish between the final position and length when indexing a
field.  The length is now defined as the total number of tokens,
instead of the final position, as it was previously.  Length is
used for score normalization (Similarity.lengthNorm()) and for
controlling memory usage (IndexWriter.maxFieldLength).  In both of
these cases, the total number of tokens is a better value to use
than the final token position.  Position is used in phrase
searching (see PhraseQuery and Token.setPositionIncrement()).
</li>
      <li>Fix StandardTokenizer's handling of CJK characters (Chinese,
Japanese and Korean ideograms).  Previously contiguous sequences
were combined in a single token, which is not very useful.  Now
each ideogram generates a separate token, which is more useful.
</li>
    </ol>
<h3><a id="v1.3_rc3" href="javascript:toggleList('v1.3_rc3')">Release 1.3 RC3  [2003-11-25]</a></h3>
    <ol id="v1.3_rc3.list">
      <li>Added minMergeDocs in IndexWriter.  This can be raised to speed
indexing without altering the number of files, but only using more
memory.
<br /><span class="attrib">(Julien Nioche via Otis)</span></li>
      <li>Fix <a href="http://issues.apache.org/jira/browse/LUCENE-162">bug #24786&nbsp;[LUCENE-162]</a>, in query rewriting.
<br /><span class="attrib">(bschneeman via Cutting)</span></li>
      <li>Fix <a href="http://issues.apache.org/jira/browse/LUCENE-85">bug #16952&nbsp;[LUCENE-85]</a>, in demo HTML parser, skip comments in
javascript.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Fix <a href="http://issues.apache.org/jira/browse/LUCENE-105">bug #19253&nbsp;[LUCENE-105]</a>, in demo HTML parser, add whitespace as needed to
output
<br /><span class="attrib">(Daniel Naber via Christoph Goller)</span></li>
      <li>Fix <a href="http://issues.apache.org/jira/browse/LUCENE-159">bug #24301&nbsp;[LUCENE-159]</a>, in demo HTML parser, long titles no longer
hang things.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Fix <a href="http://issues.apache.org/jira/browse/LUCENE-138">bug #23534&nbsp;[LUCENE-138]</a>, Replace use of file timestamp of segments file
with an index version number stored in the segments file.  This
resolves problems when running on file systems with low-resolution
timestamps, e.g., HFS under MacOS X.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Fix QueryParser so that TokenMgrError is not thrown, only
ParseException.
<br /><span class="attrib">(Erik Hatcher)</span></li>
      <li>Fix some bugs introduced by change 11 of RC2.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Fixed a problem compiling TestRussianStem.
<br /><span class="attrib">(Christoph Goller)</span></li>
      <li>Cleaned up some build stuff.
<br /><span class="attrib">(Erik Hatcher)</span></li>
    </ol>
<h3><a id="v1.3_rc2" href="javascript:toggleList('v1.3_rc2')">Release 1.3 RC2  [2003-10-22]</a></h3>
    <ol id="v1.3_rc2.list">
      <li>Added getFieldNames(boolean) to IndexReader, SegmentReader, and
SegmentsReader.
<br /><span class="attrib">(Julien Nioche via otis)</span></li>
      <li>Changed file locking to place lock files in
System.getProperty("java.io.tmpdir"), where all users are
permitted to write files.  This way folks can open and correctly
lock indexes which are read-only to them.
</li>
      <li>IndexWriter: added a new method, addDocument(Document, Analyzer),
permitting one to easily use different analyzers for different
documents in the same index.
</li>
      <li>Minor enhancements to FuzzyTermEnum.
<br /><span class="attrib">(Christoph Goller via Otis)</span></li>
      <li>PriorityQueue: added insert(Object) method and adjusted IndexSearcher
and MultiIndexSearcher to use it.
<br /><span class="attrib">(Christoph Goller via Otis)</span></li>
      <li>Fixed a bug in IndexWriter that returned incorrect docCount().
<br /><span class="attrib">(Christoph Goller via Otis)</span></li>
      <li>Fixed SegmentsReader to eliminate the confusing and slightly different
behaviour of TermEnum when dealing with an enumeration of all terms,
versus an enumeration starting from a specific term.
This patch also fixes incorrect term document frequencies when the same term
is present in multiple segments.
<br /><span class="attrib">(Christoph Goller via Otis)</span></li>
      <li>Added CachingWrapperFilter and PerFieldAnalyzerWrapper.
<br /><span class="attrib">(Erik Hatcher)</span></li>
      <li>Added support for the new "compound file" index format
<br /><span class="attrib">(Dmitry
Serebrennikov)</span></li>
      <li>Added Locale setting to QueryParser, for use by date range parsing.
</li>
      <li>Changed IndexReader so that it can be subclassed by classes
outside of its package.  Previously it had package-private
abstract methods.  Also modified the index merging code so that it
can work on an arbitrary IndexReader implementation, and added a
new method, IndexWriter.addIndexes(IndexReader[]), to take
advantage of this.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added a limit to the number of clauses which may be added to a
BooleanQuery.  The default limit is 1024 clauses.  This should
stop most OutOfMemoryExceptions by prefix, wildcard and fuzzy
queries which run amok.
<br /><span class="attrib">(cutting)</span></li>
      <li>Add new method: IndexReader.undeleteAll().  This undeletes all
deleted documents which still remain in the index.
<br /><span class="attrib">(cutting)</span></li>
    </ol>
<h3><a id="v1.3_rc1" href="javascript:toggleList('v1.3_rc1')">Release 1.3 RC1  [2003-03-24]</a></h3>
    <ol id="v1.3_rc1.list">
      <li>Fixed PriorityQueue's clear() method.
Fix for <a href="http://issues.apache.org/jira/browse/LUCENE-37">bug 9454&nbsp;[LUCENE-37]</a>, http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9454
<br /><span class="attrib">(Matthijs Bomhoff via otis)</span></li>
      <li>Changed StandardTokenizer.jj grammar for EMAIL tokens.
Fix for <a href="http://issues.apache.org/jira/browse/LUCENE-34">bug 9015&nbsp;[LUCENE-34]</a>, http://nagoya.apache.org/bugzilla/show_bug.cgi?id=9015
<br /><span class="attrib">(Dale Anson via otis)</span></li>
      <li>Added the ability to disable lock creation by using disableLuceneLocks
system property.  This is useful for read-only media, such as CD-ROMs.
<br /><span class="attrib">(otis)</span></li>
      <li>Added id method to Hits to be able to access the index global id.
Required for sorting options.
<br /><span class="attrib">(carlson)</span></li>
      <li>Added support for new range query syntax to QueryParser.jj.
<br /><span class="attrib">(briangoetz)</span></li>
      <li>Added the ability to retrieve HTML documents' META tag values to
HTMLParser.jj.
<br /><span class="attrib">(Mark Harwood via otis)</span></li>
      <li>Modified QueryParser to make it possible to programmatically specify the
default Boolean operator (OR or AND).
<br /><span class="attrib">(Péter Halácsy via otis)</span></li>
      <li>Made many search methods and classes non-final, per requests.
This includes IndexWriter and IndexSearcher, among others.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added class RemoteSearchable, providing support for remote
searching via RMI.  The test class RemoteSearchableTest.java
provides an example of how this can be used.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added PhrasePrefixQuery (and supporting MultipleTermPositions).  The
test class TestPhrasePrefixQuery provides the usage example.
<br /><span class="attrib">(Anders Nielsen via otis)</span></li>
      <li>Changed the German stemming algorithm to ignore case while
stripping. The new algorithm is faster and produces more equal
stems from nouns and verbs derived from the same word.
<br /><span class="attrib">(gschwarz)</span></li>
      <li>Added support for boosting the score of documents and fields via
the new methods Document.setBoost(float) and Field.setBoost(float).
<p/>
Note: This changes the encoding of an indexed value.  Indexes
should be re-created from scratch in order for search scores to
be correct.  With the new code and an old index, searches will
yield very large scores for shorter fields, and very small scores
for longer fields.  Once the index is re-created, scores will be
as before.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added new method Token.setPositionIncrement().
<p/>
This permits, for the purpose of phrase searching, placing
multiple terms in a single position.  This is useful with
stemmers that produce multiple possible stems for a word.
<p/>
This also permits the introduction of gaps between terms, so that
terms which are adjacent in a token stream will not be matched by
and exact phrase query.  This makes it possible, e.g., to build
an analyzer where phrases are not matched over stop words which
have been removed.
<p/>
Finally, repeating a token with an increment of zero can also be
used to boost scores of matches on that token.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added new Filter class, QueryFilter.  This constrains search
results to only match those which also match a provided query.
Results are cached, so that searches after the first on the same
index using this filter are very fast.
<p/>
This could be used, for example, with a RangeQuery on a formatted
date field to implement date filtering.  One could re-use a
single QueryFilter that matches, e.g., only documents modified
within the last week.  The QueryFilter and RangeQuery would only
need to be reconstructed once per day.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added a new IndexWriter method, getAnalyzer().  This returns the
analyzer used when adding documents to this index.
<br /><span class="attrib">(cutting)</span></li>
      <li>Fixed a bug with IndexReader.lastModified().  Before, document
deletion did not update this.  Now it does.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added Russian Analyzer.
<br /><span class="attrib">(Boris Okner via otis)</span></li>
      <li>Added a public, extensible scoring API.  For details, see the
javadoc for org.apache.lucene.search.Similarity.
</li>
      <li>Fixed return of Hits.id() from float to int.
<br /><span class="attrib">(Terry Steichen via Peter)</span>.
</li>
      <li>Added getFieldNames() to IndexReader and Segment(s)Reader classes.
<br /><span class="attrib">(Peter Mularien via otis)</span></li>
      <li>Added getFields(String) and getValues(String) methods.
Contributed by Rasik Pandey on 2002-10-09
<br /><span class="attrib">(Rasik Pandey via otis)</span></li>
      <li>Revised internal search APIs.  Changes include:
<p/>
  a. Queries are no longer modified during a search.  This makes
  it possible, e.g., to reuse the same query instance with
  multiple indexes from multiple threads.
<p/>
  b. Term-expanding queries (e.g. PrefixQuery, WildcardQuery,
  etc.)  now work correctly with MultiSearcher, fixing bugs <a href="http://issues.apache.org/jira/browse/LUCENE-56">12619&nbsp;[LUCENE-56]</a>
  and <a href="http://issues.apache.org/jira/browse/LUCENE-57">12667&nbsp;[LUCENE-57]</a>.
<p/>
  c. Boosting BooleanQuery's now works, and is supported by the
  query parser (problem reported by Lee Mallabone).  Thus a query
  like "(+foo +bar)^2 +baz" is now supported and equivalent to
  "(+foo^2 +bar^2) +baz".
<p/>
  d. New method: Query.rewrite(IndexReader).  This permits a
  query to re-write itself as an alternate, more primitive query.
  Most of the term-expanding query classes (PrefixQuery,
  WildcardQuery, etc.) are now implemented using this method.
<p/>
  e. New method: Searchable.explain(Query q, int doc).  This
  returns an Explanation instance that describes how a particular
  document is scored against a query.  An explanation can be
  displayed as either plain text, with the toString() method, or
  as HTML, with the toHtml() method.  Note that computing an
  explanation is as expensive as executing the query over the
  entire index.  This is intended to be used in developing
  Similarity implementations, and, for good performance, should
  not be displayed with every hit.
<p/>
  f. Scorer and Weight are public, not package protected.  It now
  possible for someone to write a Scorer implementation that is
  not in the org.apache.lucene.search package.  This is still
  fairly advanced programming, and I don't expect anyone to do
  this anytime soon, but at least now it is possible.
<p/>
  g. Added public accessors to the primitive query classes
  (TermQuery, PhraseQuery and BooleanQuery), permitting access to
  their terms and clauses.
<p/>
Caution: These are extensive changes and they have not yet been
tested extensively.  Bug reports are appreciated.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added convenience RAMDirectory constructors taking File and String
arguments, for easy FSDirectory to RAMDirectory conversion.
<br /><span class="attrib">(otis)</span></li>
      <li>Added code for manual renaming of files in FSDirectory, since it
has been reported that java.io.File's renameTo(File) method sometimes
fails on Windows JVMs.
<br /><span class="attrib">(Matt Tucker via otis)</span></li>
      <li>Refactored QueryParser to make it easier for people to extend it.
Added the ability to automatically lower-case Wildcard terms in
the QueryParser.
<br /><span class="attrib">(Tatu Saloranta via otis)</span></li>
    </ol>
<h3><a id="v1.2_rc6" href="javascript:toggleList('v1.2_rc6')">Release 1.2 RC6  [2002-06-13]</a></h3>
    <ol id="v1.2_rc6.list">
      <li>Changed QueryParser.jj to have "?" be a special character which
allowed it to be used as a wildcard term. Updated TestWildcard
unit test also.
<br /><span class="attrib">(Ralf Hettesheimer via carlson)</span></li>
    </ol>
<h3><a id="v1.2_rc5" href="javascript:toggleList('v1.2_rc5')">Release 1.2 RC5  [2002-05-14]</a></h3>
    <ol id="v1.2_rc5.list">
      <li>Renamed build.properties to default.properties and updated
the BUILD.txt document to describe how to override the
default.property settings without having to edit the file. This
brings the build process closer to Scarab's build process.
<br /><span class="attrib">(jon)</span></li>
      <li>Added MultiFieldQueryParser class.
<br /><span class="attrib">(Kelvin Tan, via otis)</span></li>
      <li>Updated "powered by" links.
<br /><span class="attrib">(otis)</span></li>
      <li>Fixed instruction for setting up JavaCC - <a href="http://issues.apache.org/jira/browse/LUCENE-18">Bug #7017&nbsp;[LUCENE-18]</a>
<br /><span class="attrib">(otis)</span></li>
      <li>Added throwing exception if FSDirectory could not create directory
<ul class="bulleted-list">
<li class="bulleted-list">
<a href="http://issues.apache.org/jira/browse/LUCENE-16">Bug #6914&nbsp;[LUCENE-16]</a>
<br /><span class="attrib">(Eugene Gluzberg via otis)</span></li>
</ul>
</li>
      <li>Update MultiSearcher, MultiFieldParse, Constants, DateFilter,
LowerCaseTokenizer javadoc
<br /><span class="attrib">(otis)</span></li>
      <li>Added fix to avoid NullPointerException in results.jsp
<br /><span class="attrib">(Mark Hayes via otis)</span></li>
      <li>Changed Wildcard search to find 0 or more char instead of 1 or more
<br /><span class="attrib">(Lee Mallobone, via otis)</span></li>
      <li>Fixed error in offset issue in GermanStemFilter - <a href="http://issues.apache.org/jira/browse/LUCENE-23">Bug #7412&nbsp;[LUCENE-23]</a>
<br /><span class="attrib">(Rodrigo Reyes, via otis)</span></li>
      <li>Added unit tests for wildcard search and DateFilter
<br /><span class="attrib">(otis)</span></li>
      <li>Allow co-existence of indexed and non-indexed fields with the same name
<br /><span class="attrib">(cutting/casper, via otis)</span></li>
      <li>Add escape character to query parser.
<br /><span class="attrib">(briangoetz)</span></li>
      <li>Applied a patch that ensures that searches that use DateFilter
don't throw an exception when no matches are found.
<br /><span class="attrib">(David Smiley, via
otis)</span></li>
      <li>Fixed bugs in DateFilter and wildcardquery unit tests.
<br /><span class="attrib">(cutting, otis, carlson)</span></li>
    </ol>
<h3><a id="v1.2_rc4" href="javascript:toggleList('v1.2_rc4')">Release 1.2 RC4  [2002-02-14]</a></h3>
    <ol id="v1.2_rc4.list">
      <li>Updated contributions section of website.
Add XML Document #3 implementation to Document Section.
Also added Term Highlighting to Misc Section.
<br /><span class="attrib">(carlson)</span></li>
      <li>Fixed NullPointerException for phrase searches containing
unindexed terms, introduced in 1.2RC3.
<br /><span class="attrib">(cutting)</span></li>
      <li>Changed document deletion code to obtain the index write lock,
enforcing the fact that document addition and deletion cannot be
performed concurrently.
<br /><span class="attrib">(cutting)</span></li>
      <li>Various documentation cleanups.
<br /><span class="attrib">(otis, acoliver)</span></li>
      <li>Updated "powered by" links.
<br /><span class="attrib">(cutting, jon)</span></li>
      <li>Fixed a bug in the GermanStemmer.
<br /><span class="attrib">(Bernhard Messer, via otis)</span></li>
      <li>Changed Term and Query to implement Serializable.
<br /><span class="attrib">(scottganyo)</span></li>
      <li>Fixed to never delete indexes added with IndexWriter.addIndexes().
<br /><span class="attrib">(cutting)</span></li>
      <li>Upgraded to JUnit 3.7.
<br /><span class="attrib">(otis)</span></li>
    </ol>
<h3><a id="v1.2_rc3" href="javascript:toggleList('v1.2_rc3')">Release 1.2 RC3  [2002-01-27]</a></h3>
    <ol id="v1.2_rc3.list">
      <li>IndexWriter: fixed a bug where adding an optimized index to an
empty index failed.  This was encountered using addIndexes to copy
a RAMDirectory index to an FSDirectory.
</li>
      <li>RAMDirectory: fixed a bug where RAMInputStream could not read
across more than across a single buffer boundary.
</li>
      <li>Fix query parser so it accepts queries with unicode characters.
<br /><span class="attrib">(briangoetz)</span></li>
      <li>Fix query parser so that PrefixQuery is used in preference to
WildcardQuery when there's only an asterisk at the end of the
term.  Previously PrefixQuery would never be used.
</li>
      <li>Fix tests so they compile; fix ant file so it compiles tests
properly.  Added test cases for Analyzers and PriorityQueue.
</li>
      <li>Updated demos, added Getting Started documentation.
<br /><span class="attrib">(acoliver)</span></li>
      <li>Added 'contributions' section to website &amp; docs.
<br /><span class="attrib">(carlson)</span></li>
      <li>Removed JavaCC from source distribution for copyright reasons.
Folks must now download this separately from metamata in order to
compile Lucene.
<br /><span class="attrib">(cutting)</span></li>
      <li>Substantially improved the performance of DateFilter by adding the
ability to reuse TermDocs objects.
<br /><span class="attrib">(cutting)</span></li>
      <li>Added IndexReader methods:
  public static boolean indexExists(String directory);
  public static boolean indexExists(File directory);
  public static boolean indexExists(Directory directory);
  public static boolean isLocked(Directory directory);
  public static void unlock(Directory directory);
<br /><span class="attrib">(cutting, otis)</span></li>
      <li>Fixed bugs in GermanAnalyzer
<br /><span class="attrib">(gschwarz)</span></li>
    </ol>
<h3><a id="v1.2_rc2" href="javascript:toggleList('v1.2_rc2')">Release 1.2 RC2  [2001-10-19]</a></h3>
    <ul id="v1.2_rc2.list">
      <li>added sources to distribution
</li>
      <li>removed broken build scripts and libraries from distribution
</li>
      <li>SegmentsReader: fixed potential race condition
</li>
      <li>FSDirectory: fixed so that getDirectory(xxx,true) correctly
erases the directory contents, even when the directory
has already been accessed in this JVM.
</li>
      <li>RangeQuery: Fix issue where an inclusive range query would
include the nearest term in the index above a non-existant
specified upper term.
</li>
      <li>SegmentTermEnum: Fix NullPointerException in clone() method
when the Term is null.
</li>
      <li>JDK 1.1 compatibility fix: disabled lock files for JDK 1.1,
since they rely on a feature added in JDK 1.2.
<p/>
</li>
    </ul>
<h3><a id="v1.2_rc1" href="javascript:toggleList('v1.2_rc1')">Release 1.2 RC1  [2001-10-02]</a></h3>
    <ul id="v1.2_rc1.list">
      <li>first Apache release
</li>
      <li>packages renamed from com.lucene to org.apache.lucene
</li>
      <li>license switched from LGPL to Apache
</li>
      <li>ant-only build -- no more makefiles
</li>
      <li>addition of lock files--now fully thread &amp; process safe
</li>
      <li>addition of German stemmer
</li>
      <li>MultiSearcher now supports low-level search API
</li>
      <li>added RangeQuery, for term-range searching
</li>
      <li>Analyzers can choose tokenizer based on field name
</li>
      <li>misc bug fixes.
<p/>
</li>
    </ul>
<h3><a id="v1.01b" href="javascript:toggleList('v1.01b')">Release 1.01b  [2001-06-02]</a></h3>
    <ul id="v1.01b.list">
      <li>last Sourceforge release
</li>
      <li>a few bug fixes
</li>
      <li>new Query Parser
</li>
      <li>new prefix query (search for "foo*" matches "food")
<p/>
</li>
    </ul>
<h3><a id="v1.0" href="javascript:toggleList('v1.0')">Release 1.0  [2000-10-04]</a></h3>
    <ul id="v1.0.list">
      <li>This release fixes a few serious bugs and also includes some
performance optimizations, a stemmer, and a few other minor
enhancements.
</li>
    </ul>
<h3><a id="v0.04" href="javascript:toggleList('v0.04')">Release 0.04  [2000-04-19]</a></h3>
    <ul id="v0.04.list">
      <li>Lucene now includes a grammar-based tokenizer, StandardTokenizer.
</li>
      <li>The only tokenizer included in the previous release (LetterTokenizer)
identified terms consisting entirely of alphabetic characters.  The
new tokenizer uses a regular-expression grammar to identify more
complex classes of terms, including numbers, acronyms, email
addresses, etc.
</li>
      <li>StandardTokenizer serves two purposes:
</li>
      <li>1. It is a much better, general purpose tokenizer for use by
   applications as is.
</li>
      <li>The easiest way for applications to start using
StandardTokenizer is to use StandardAnalyzer.
</li>
      <li>2. It provides a good example of grammar-based tokenization.
</li>
      <li>If an application has special tokenization requirements, it can
implement a custom tokenizer by copying the directory containing
the new tokenizer into the application and modifying it
accordingly.
</li>
    </ul>
<h3><a id="v0.01" href="javascript:toggleList('v0.01')">Release 0.01  [2000-03-30]</a></h3>
    <ul id="v0.01.list">
      <li>First open source release.
</li>
      <li>The code has been re-organized into a new package and directory
structure for this release.  It builds OK, but has not been tested
beyond that since the re-organization.
</li>
    </ul>
</ul>
</body>
</html>