You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by us...@apache.org on 2010/11/15 02:36:06 UTC
svn commit: r1035118 [5/9] - in /lucene/dev/branches/branch_3x: ./ lucene/
lucene/backwards/src/ lucene/backwards/src/test/org/apache/lucene/analysis/
lucene/backwards/src/test/org/apache/lucene/document/
lucene/backwards/src/test/org/apache/lucene/ind...
Propchange: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 15 01:36:04 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,963654,
963720,963781,963873,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999016,99
9223,999545,999842,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,10
26841,1026868,1026882,1027998,1028039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977
+/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,963654,
963720,963781,963873,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999016,99
9223,999545,999842,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,10
26841,1026868,1026882,1027998,1028039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977,1035096,1035103
/lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java:1002032,1003962,1022826
/lucene/dev/trunk/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java:932749
/lucene/java/branches/flex_1458/src/java/org/apache/lucene/analysis/standard/StandardTokenizer.java:924791,924850,930201
Propchange: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 15 01:36:04 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,96
3654,963720,963781,963873,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,9990
16,999223,999545,999842,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,10267
38,1026841,1026868,1026882,1027998,1028039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977
+/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,96
3654,963720,963781,963873,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,9990
16,999223,999545,999842,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,10267
38,1026841,1026868,1026882,1027998,1028039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977,1035096,1035103
/lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex:1002032,1003877,1003962,1022826
/lucene/dev/trunk/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex:932749
/lucene/java/branches/flex_1458/src/java/org/apache/lucene/analysis/standard/StandardTokenizerImpl.jflex:924791,924850,930201
Propchange: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 15 01:36:04 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,963654,96
3720,963781,963873,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999016,9992
23,999545,999842,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,1026
841,1026868,1026882,1027998,1028039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977
+/lucene/dev/trunk/lucene/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,963654,96
3720,963781,963873,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999016,9992
23,999545,999842,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,1026
841,1026868,1026882,1027998,1028039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977,1035096,1035103
/lucene/dev/trunk/modules/analysis/common/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex:1002032,1003877,1003962,1022826
/lucene/dev/trunk/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex:932749
/lucene/java/branches/flex_1458/src/java/org/apache/lucene/analysis/standard/UAX29Tokenizer.jflex:924791,924850,930201
Copied: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java (from r1035096, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java?p2=lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java&p1=lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java&r1=1035096&r2=1035118&rev=1035118&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/ConstantScoreAutoRewrite.java Mon Nov 15 01:36:04 2010
@@ -18,29 +18,10 @@ package org.apache.lucene.search;
*/
import java.io.IOException;
-import java.io.Serializable;
import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.PriorityQueue;
-import java.util.Comparator;
-import org.apache.lucene.index.Fields;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
-import org.apache.lucene.index.Terms;
-import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.queryParser.QueryParser;
-import org.apache.lucene.search.spans.SpanOrQuery;
-import org.apache.lucene.search.spans.SpanTermQuery;
-import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.AttributeSource;
-import org.apache.lucene.util.ByteBlockPool;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.BytesRefHash;
-import org.apache.lucene.util.RamUsageEstimator;
-import org.apache.lucene.util.BytesRefHash.DirectBytesStartArray;
class ConstantScoreAutoRewrite extends TermCollectingRewrite<BooleanQuery> {
@@ -88,8 +69,8 @@ class ConstantScoreAutoRewrite extends T
}
@Override
- protected void addClause(BooleanQuery topLevel, Term term, int docFreq, float boost /*ignored*/) {
- topLevel.add(new TermQuery(term, docFreq), BooleanClause.Occur.SHOULD);
+ protected void addClause(BooleanQuery topLevel, Term term, float boost /*ignored*/) {
+ topLevel.add(new TermQuery(term), BooleanClause.Occur.SHOULD);
}
@Override
@@ -102,46 +83,43 @@ class ConstantScoreAutoRewrite extends T
final int docCountCutoff = (int) ((docCountPercent / 100.) * reader.maxDoc());
final int termCountLimit = Math.min(BooleanQuery.getMaxClauseCount(), termCountCutoff);
- final CutOffTermCollector col = new CutOffTermCollector(docCountCutoff, termCountLimit);
+ final CutOffTermCollector col = new CutOffTermCollector(reader, docCountCutoff, termCountLimit);
collectTerms(reader, query, col);
- final int size = col.pendingTerms.size();
+
if (col.hasCutOff) {
return MultiTermQuery.CONSTANT_SCORE_FILTER_REWRITE.rewrite(reader, query);
- } else if (size == 0) {
- return getTopLevelQuery();
} else {
- final BooleanQuery bq = getTopLevelQuery();
- final Term placeholderTerm = new Term(query.field);
- final BytesRefHash pendingTerms = col.pendingTerms;
- final int sort[] = pendingTerms.sort(col.termsEnum.getComparator());
- for(int i = 0; i < size; i++) {
- // docFreq is not used for constant score here, we pass 1
- // to explicitely set a fake value, so it's not calculated
- addClause(bq, placeholderTerm.createTerm(pendingTerms.get(sort[i], new BytesRef())), 1, 1.0f);
+ final Query result;
+ if (col.pendingTerms.isEmpty()) {
+ result = getTopLevelQuery();
+ } else {
+ BooleanQuery bq = getTopLevelQuery();
+ for(Term term : col.pendingTerms) {
+ addClause(bq, term, 1.0f);
+ }
+ // Strip scores
+ result = new ConstantScoreQuery(new QueryWrapperFilter(bq));
+ result.setBoost(query.getBoost());
}
- // Strip scores
- final Query result = new ConstantScoreQuery(new QueryWrapperFilter(bq));
- result.setBoost(query.getBoost());
- query.incTotalNumberOfTerms(size);
+ query.incTotalNumberOfTerms(col.pendingTerms.size());
return result;
}
}
- static final class CutOffTermCollector extends TermCollector {
- CutOffTermCollector(int docCountCutoff, int termCountLimit) {
+ private static final class CutOffTermCollector implements TermCollector {
+ CutOffTermCollector(IndexReader reader, int docCountCutoff, int termCountLimit) {
+ this.reader = reader;
this.docCountCutoff = docCountCutoff;
this.termCountLimit = termCountLimit;
}
- @Override
- public void setNextEnum(TermsEnum termsEnum) throws IOException {
- this.termsEnum = termsEnum;
- }
-
- @Override
- public boolean collect(BytesRef bytes) throws IOException {
- pendingTerms.add(bytes);
- docVisitCount += termsEnum.docFreq();
+ public boolean collect(Term t, float boost) throws IOException {
+ pendingTerms.add(t);
+ // Loading the TermInfo from the terms dict here
+ // should not be costly, because 1) the
+ // query/filter will load the TermInfo when it
+ // runs, and 2) the terms dict has a cache:
+ docVisitCount += reader.docFreq(t);
if (pendingTerms.size() >= termCountLimit || docVisitCount >= docCountCutoff) {
hasCutOff = true;
return false;
@@ -151,10 +129,10 @@ class ConstantScoreAutoRewrite extends T
int docVisitCount = 0;
boolean hasCutOff = false;
- TermsEnum termsEnum;
-
+
+ final IndexReader reader;
final int docCountCutoff, termCountLimit;
- final BytesRefHash pendingTerms = new BytesRefHash();
+ final ArrayList<Term> pendingTerms = new ArrayList<Term>();
}
@Override
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/MultiTermQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/MultiTermQuery.java?rev=1035118&r1=1035117&r2=1035118&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/MultiTermQuery.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/MultiTermQuery.java Mon Nov 15 01:36:04 2010
@@ -19,8 +19,6 @@ package org.apache.lucene.search;
import java.io.IOException;
import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.PriorityQueue;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
@@ -69,20 +67,6 @@ public abstract class MultiTermQuery ext
public abstract Query rewrite(IndexReader reader, MultiTermQuery query) throws IOException;
}
- private static final class ConstantScoreFilterRewrite extends RewriteMethod {
- @Override
- public Query rewrite(IndexReader reader, MultiTermQuery query) {
- Query result = new ConstantScoreQuery(new MultiTermQueryWrapperFilter<MultiTermQuery>(query));
- result.setBoost(query.getBoost());
- return result;
- }
-
- // Make sure we are still a singleton even after deserializing
- protected Object readResolve() {
- return CONSTANT_SCORE_FILTER_REWRITE;
- }
- }
-
/** A rewrite method that first creates a private Filter,
* by visiting each term in sequence and marking all docs
* for that term. Matching documents are assigned a
@@ -95,51 +79,19 @@ public abstract class MultiTermQuery ext
* exception.
*
* @see #setRewriteMethod */
- public final static RewriteMethod CONSTANT_SCORE_FILTER_REWRITE = new ConstantScoreFilterRewrite();
-
- private abstract static class BooleanQueryRewrite extends RewriteMethod {
-
- protected final void collectTerms(IndexReader reader, MultiTermQuery query, TermCollector collector) throws IOException {
- final FilteredTermEnum enumerator = query.getEnum(reader);
- try {
- do {
- final Term t = enumerator.term();
- if (t == null || !collector.collect(t, enumerator.difference()))
- break;
- } while (enumerator.next());
- } finally {
- enumerator.close();
- }
- }
-
- protected interface TermCollector {
- /** return false to stop collecting */
- boolean collect(Term t, float boost) throws IOException;
- }
-
- }
-
- private static class ScoringBooleanQueryRewrite extends BooleanQueryRewrite {
+ public static final RewriteMethod CONSTANT_SCORE_FILTER_REWRITE = new RewriteMethod() {
@Override
- public Query rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException {
- final BooleanQuery result = new BooleanQuery(true);
- collectTerms(reader, query, new TermCollector() {
- public boolean collect(Term t, float boost) {
- TermQuery tq = new TermQuery(t); // found a match
- tq.setBoost(query.getBoost() * boost); // set the boost
- result.add(tq, BooleanClause.Occur.SHOULD); // add to query
- return true;
- }
- });
- query.incTotalNumberOfTerms(result.clauses().size());
+ public Query rewrite(IndexReader reader, MultiTermQuery query) {
+ Query result = new ConstantScoreQuery(new MultiTermQueryWrapperFilter<MultiTermQuery>(query));
+ result.setBoost(query.getBoost());
return result;
}
// Make sure we are still a singleton even after deserializing
protected Object readResolve() {
- return SCORING_BOOLEAN_QUERY_REWRITE;
+ return CONSTANT_SCORE_FILTER_REWRITE;
}
- }
+ };
/** A rewrite method that first translates each term into
* {@link BooleanClause.Occur#SHOULD} clause in a
@@ -154,92 +106,19 @@ public abstract class MultiTermQuery ext
* exceeds {@link BooleanQuery#getMaxClauseCount}.
*
* @see #setRewriteMethod */
- public final static RewriteMethod SCORING_BOOLEAN_QUERY_REWRITE = new ScoringBooleanQueryRewrite();
-
-
- /**
- * Base rewrite method for collecting only the top terms
- * via a priority queue.
- */
- public static abstract class TopTermsBooleanQueryRewrite extends BooleanQueryRewrite {
- private final int size;
-
- /**
- * Create a TopTermsBooleanQueryRewrite for
- * at most <code>size</code> terms.
- * <p>
- * NOTE: if {@link BooleanQuery#getMaxClauseCount} is smaller than
- * <code>size</code>, then it will be used instead.
- */
- public TopTermsBooleanQueryRewrite(int size) {
- this.size = size;
- }
-
- /** Return a suitable Query for a MultiTermQuery term. */
- protected abstract Query getQuery(Term term);
-
- @Override
- public Query rewrite(IndexReader reader, MultiTermQuery query) throws IOException {
- final int maxSize = Math.min(size, BooleanQuery.getMaxClauseCount());
- final PriorityQueue<ScoreTerm> stQueue = new PriorityQueue<ScoreTerm>();
- collectTerms(reader, query, new TermCollector() {
- public boolean collect(Term t, float boost) {
- // ignore uncompetetive hits
- if (stQueue.size() >= maxSize && boost <= stQueue.peek().boost)
- return true;
- // add new entry in PQ
- st.term = t;
- st.boost = boost;
- stQueue.offer(st);
- // possibly drop entries from queue
- st = (stQueue.size() > maxSize) ? stQueue.poll() : new ScoreTerm();
- return true;
- }
-
- // reusable instance
- private ScoreTerm st = new ScoreTerm();
- });
-
- final BooleanQuery bq = new BooleanQuery(true);
- for (final ScoreTerm st : stQueue) {
- Query tq = getQuery(st.term); // found a match
- tq.setBoost(query.getBoost() * st.boost); // set the boost
- bq.add(tq, BooleanClause.Occur.SHOULD); // add to query
- }
- query.incTotalNumberOfTerms(bq.clauses().size());
- return bq;
- }
+ public final static RewriteMethod SCORING_BOOLEAN_QUERY_REWRITE = ScoringRewrite.SCORING_BOOLEAN_QUERY_REWRITE;
- @Override
- public int hashCode() {
- final int prime = 17;
- int result = 1;
- result = prime * result + size;
- return result;
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj) return true;
- if (obj == null) return false;
- if (getClass() != obj.getClass()) return false;
- TopTermsBooleanQueryRewrite other = (TopTermsBooleanQueryRewrite) obj;
- if (size != other.size) return false;
- return true;
- }
-
- private static class ScoreTerm implements Comparable<ScoreTerm> {
- public Term term;
- public float boost;
-
- public int compareTo(ScoreTerm other) {
- if (this.boost == other.boost)
- return other.term.compareTo(this.term);
- else
- return Float.compare(this.boost, other.boost);
- }
- }
- }
+ /** Like {@link #SCORING_BOOLEAN_QUERY_REWRITE} except
+ * scores are not computed. Instead, each matching
+ * document receives a constant score equal to the
+ * query's boost.
+ *
+ * <p><b>NOTE</b>: This rewrite method will hit {@link
+ * BooleanQuery.TooManyClauses} if the number of terms
+ * exceeds {@link BooleanQuery#getMaxClauseCount}.
+ *
+ * @see #setRewriteMethod */
+ public final static RewriteMethod CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE = ScoringRewrite.CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE;
/**
* A rewrite method that first translates each term into
@@ -247,14 +126,13 @@ public abstract class MultiTermQuery ext
* scores as computed by the query.
*
* <p>
- * This rewrite mode only uses the top scoring terms so it will not overflow
- * the boolean max clause count. It is the default rewrite mode for
+ * This rewrite method only uses the top scoring terms so it will not overflow
+ * the boolean max clause count. It is the default rewrite method for
* {@link FuzzyQuery}.
*
* @see #setRewriteMethod
*/
- public static final class TopTermsScoringBooleanQueryRewrite extends
- TopTermsBooleanQueryRewrite {
+ public static final class TopTermsScoringBooleanQueryRewrite extends TopTermsRewrite<BooleanQuery> {
/**
* Create a TopTermsScoringBooleanQueryRewrite for
@@ -268,8 +146,20 @@ public abstract class MultiTermQuery ext
}
@Override
- protected Query getQuery(Term term) {
- return new TermQuery(term);
+ protected int getMaxSize() {
+ return BooleanQuery.getMaxClauseCount();
+ }
+
+ @Override
+ protected BooleanQuery getTopLevelQuery() {
+ return new BooleanQuery(true);
+ }
+
+ @Override
+ protected void addClause(BooleanQuery topLevel, Term term, float boost) {
+ final TermQuery tq = new TermQuery(term);
+ tq.setBoost(boost);
+ topLevel.add(tq, BooleanClause.Occur.SHOULD);
}
}
@@ -283,8 +173,7 @@ public abstract class MultiTermQuery ext
*
* @see #setRewriteMethod
*/
- public static final class TopTermsBoostOnlyBooleanQueryRewrite extends
- TopTermsBooleanQueryRewrite {
+ public static final class TopTermsBoostOnlyBooleanQueryRewrite extends TopTermsRewrite<BooleanQuery> {
/**
* Create a TopTermsBoostOnlyBooleanQueryRewrite for
@@ -298,44 +187,23 @@ public abstract class MultiTermQuery ext
}
@Override
- protected Query getQuery(Term term) {
- return new ConstantScoreQuery(new QueryWrapperFilter(new TermQuery(term)));
+ protected int getMaxSize() {
+ return BooleanQuery.getMaxClauseCount();
}
- }
-
- private static class ConstantScoreBooleanQueryRewrite extends ScoringBooleanQueryRewrite implements Serializable {
+
@Override
- public Query rewrite(IndexReader reader, MultiTermQuery query) throws IOException {
- Query result = super.rewrite(reader, query);
- assert result instanceof BooleanQuery;
- if (!((BooleanQuery) result).clauses().isEmpty()) {
- // strip the scores off
- result = new ConstantScoreQuery(new QueryWrapperFilter(result));
- result.setBoost(query.getBoost());
- }
- return result;
+ protected BooleanQuery getTopLevelQuery() {
+ return new BooleanQuery(true);
}
-
- // Make sure we are still a singleton even after deserializing
+
@Override
- protected Object readResolve() {
- return CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE;
+ protected void addClause(BooleanQuery topLevel, Term term, float boost) {
+ final Query q = new ConstantScoreQuery(new QueryWrapperFilter(new TermQuery(term)));
+ q.setBoost(boost);
+ topLevel.add(q, BooleanClause.Occur.SHOULD);
}
}
-
- /** Like {@link #SCORING_BOOLEAN_QUERY_REWRITE} except
- * scores are not computed. Instead, each matching
- * document receives a constant score equal to the
- * query's boost.
- *
- * <p><b>NOTE</b>: This rewrite method will hit {@link
- * BooleanQuery.TooManyClauses} if the number of terms
- * exceeds {@link BooleanQuery#getMaxClauseCount}.
- *
- * @see #setRewriteMethod */
- public final static RewriteMethod CONSTANT_SCORE_BOOLEAN_QUERY_REWRITE = new ConstantScoreBooleanQueryRewrite();
-
-
+
/** A rewrite method that tries to pick the best
* constant-score rewrite method based on term and
* document counts from the query. If both the number of
@@ -344,136 +212,7 @@ public abstract class MultiTermQuery ext
* Otherwise, {@link #CONSTANT_SCORE_FILTER_REWRITE} is
* used.
*/
- public static class ConstantScoreAutoRewrite extends BooleanQueryRewrite {
-
- // Defaults derived from rough tests with a 20.0 million
- // doc Wikipedia index. With more than 350 terms in the
- // query, the filter method is fastest:
- public static int DEFAULT_TERM_COUNT_CUTOFF = 350;
-
- // If the query will hit more than 1 in 1000 of the docs
- // in the index (0.1%), the filter method is fastest:
- public static double DEFAULT_DOC_COUNT_PERCENT = 0.1;
-
- private int termCountCutoff = DEFAULT_TERM_COUNT_CUTOFF;
- private double docCountPercent = DEFAULT_DOC_COUNT_PERCENT;
-
- /** If the number of terms in this query is equal to or
- * larger than this setting then {@link
- * #CONSTANT_SCORE_FILTER_REWRITE} is used. */
- public void setTermCountCutoff(int count) {
- termCountCutoff = count;
- }
-
- /** @see #setTermCountCutoff */
- public int getTermCountCutoff() {
- return termCountCutoff;
- }
-
- /** If the number of documents to be visited in the
- * postings exceeds this specified percentage of the
- * maxDoc() for the index, then {@link
- * #CONSTANT_SCORE_FILTER_REWRITE} is used.
- * @param percent 0.0 to 100.0 */
- public void setDocCountPercent(double percent) {
- docCountPercent = percent;
- }
-
- /** @see #setDocCountPercent */
- public double getDocCountPercent() {
- return docCountPercent;
- }
-
- @Override
- public Query rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException {
-
- // Get the enum and start visiting terms. If we
- // exhaust the enum before hitting either of the
- // cutoffs, we use ConstantBooleanQueryRewrite; else,
- // ConstantFilterRewrite:
- final int docCountCutoff = (int) ((docCountPercent / 100.) * reader.maxDoc());
- final int termCountLimit = Math.min(BooleanQuery.getMaxClauseCount(), termCountCutoff);
-
- final CutOffTermCollector col = new CutOffTermCollector(reader, docCountCutoff, termCountLimit);
- collectTerms(reader, query, col);
-
- if (col.hasCutOff) {
- return CONSTANT_SCORE_FILTER_REWRITE.rewrite(reader, query);
- } else {
- final Query result;
- if (col.pendingTerms.isEmpty()) {
- result = new BooleanQuery(true);
- } else {
- BooleanQuery bq = new BooleanQuery(true);
- for(Term term : col.pendingTerms) {
- TermQuery tq = new TermQuery(term);
- bq.add(tq, BooleanClause.Occur.SHOULD);
- }
- // Strip scores
- result = new ConstantScoreQuery(new QueryWrapperFilter(bq));
- result.setBoost(query.getBoost());
- }
- query.incTotalNumberOfTerms(col.pendingTerms.size());
- return result;
- }
- }
-
- private static final class CutOffTermCollector implements TermCollector {
- CutOffTermCollector(IndexReader reader, int docCountCutoff, int termCountLimit) {
- this.reader = reader;
- this.docCountCutoff = docCountCutoff;
- this.termCountLimit = termCountLimit;
- }
-
- public boolean collect(Term t, float boost) throws IOException {
- pendingTerms.add(t);
- // Loading the TermInfo from the terms dict here
- // should not be costly, because 1) the
- // query/filter will load the TermInfo when it
- // runs, and 2) the terms dict has a cache:
- docVisitCount += reader.docFreq(t);
- if (pendingTerms.size() >= termCountLimit || docVisitCount >= docCountCutoff) {
- hasCutOff = true;
- return false;
- }
- return true;
- }
-
- int docVisitCount = 0;
- boolean hasCutOff = false;
-
- final IndexReader reader;
- final int docCountCutoff, termCountLimit;
- final ArrayList<Term> pendingTerms = new ArrayList<Term>();
- }
-
- @Override
- public int hashCode() {
- final int prime = 1279;
- return (int) (prime * termCountCutoff + Double.doubleToLongBits(docCountPercent));
- }
-
- @Override
- public boolean equals(Object obj) {
- if (this == obj)
- return true;
- if (obj == null)
- return false;
- if (getClass() != obj.getClass())
- return false;
-
- ConstantScoreAutoRewrite other = (ConstantScoreAutoRewrite) obj;
- if (other.termCountCutoff != termCountCutoff) {
- return false;
- }
-
- if (Double.doubleToLongBits(other.docCountPercent) != Double.doubleToLongBits(docCountPercent)) {
- return false;
- }
-
- return true;
- }
- }
+ public static class ConstantScoreAutoRewrite extends org.apache.lucene.search.ConstantScoreAutoRewrite {}
/** Read-only default instance of {@link
* ConstantScoreAutoRewrite}, with {@link
Propchange: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 15 01:36:04 2010
@@ -1,5 +1,5 @@
/lucene/dev/branches/preflexfixes/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:967125-979432
-/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,953628,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,9
63654,963720,963781,963873,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999
016,999223,999545,999842,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,1026
841,1026868,1026882,1027998,1028039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977
+/lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,953628,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,9
63654,963720,963781,963873,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999
016,999223,999545,999842,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,1026
841,1026868,1026882,1027998,1028039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977,1035096,1035103
/lucene/java/branches/flex_1458/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:924791,924850,930201
/lucene/java/branches/lucene_2_9/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:896850,909334,948516
/lucene/java/trunk/src/java/org/apache/lucene/search/MultiTermQueryWrapperFilter.java:924483-925561
Copied: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java (from r1035096, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java?p2=lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java&p1=lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java&r1=1035096&r2=1035118&rev=1035118&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/ScoringRewrite.java Mon Nov 15 01:36:04 2010
@@ -28,17 +28,9 @@ import java.util.Comparator;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
-import org.apache.lucene.index.TermsEnum;
+import org.apache.lucene.index.TermEnum;
import org.apache.lucene.search.MultiTermQuery.RewriteMethod;
-import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.AttributeSource;
-import org.apache.lucene.util.ByteBlockPool;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.BytesRefHash;
-import org.apache.lucene.util.RamUsageEstimator;
-import org.apache.lucene.util.BytesRefHash.DirectBytesStartArray;
-
/** @lucene.internal Only public to be accessible by spans package. */
public abstract class ScoringRewrite<Q extends Query> extends TermCollectingRewrite<Q> {
@@ -62,8 +54,8 @@ public abstract class ScoringRewrite<Q e
}
@Override
- protected void addClause(BooleanQuery topLevel, Term term, int docCount, float boost) {
- final TermQuery tq = new TermQuery(term, docCount);
+ protected void addClause(BooleanQuery topLevel, Term term, float boost) {
+ final TermQuery tq = new TermQuery(term);
tq.setBoost(boost);
topLevel.add(tq, BooleanClause.Occur.SHOULD);
}
@@ -105,99 +97,17 @@ public abstract class ScoringRewrite<Q e
};
@Override
- public final Q rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException {
+ public Q rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException {
final Q result = getTopLevelQuery();
- final ParallelArraysTermCollector col = new ParallelArraysTermCollector(result instanceof BooleanQuery);
- collectTerms(reader, query, col);
-
- final Term placeholderTerm = new Term(query.field);
- final int size = col.terms.size();
- if (size > 0) {
- final int sort[] = col.terms.sort(col.termsEnum.getComparator());
- final int[] docFreq = col.array.docFreq;
- final float[] boost = col.array.boost;
- for (int i = 0; i < size; i++) {
- final int pos = sort[i];
- final Term term = placeholderTerm.createTerm(col.terms.get(pos, new BytesRef()));
- assert reader.docFreq(term) == docFreq[pos];
- addClause(result, term, docFreq[pos], query.getBoost() * boost[pos]);
+ final int[] size = new int[1]; // "trick" to be able to make it final
+ collectTerms(reader, query, new TermCollector() {
+ public boolean collect(Term t, float boost) throws IOException {
+ addClause(result, t, query.getBoost() * boost);
+ size[0]++;
+ return true;
}
- }
- query.incTotalNumberOfTerms(size);
+ });
+ query.incTotalNumberOfTerms(size[0]);
return result;
}
-
- static final class ParallelArraysTermCollector extends TermCollector {
- private final boolean checkMaxClauseCount;
- final TermFreqBoostByteStart array = new TermFreqBoostByteStart(16);
- final BytesRefHash terms = new BytesRefHash(new ByteBlockPool(new ByteBlockPool.DirectAllocator()), 16, array);
- TermsEnum termsEnum;
-
- private BoostAttribute boostAtt;
-
- public ParallelArraysTermCollector(boolean checkMaxClauseCount) {
- this.checkMaxClauseCount = checkMaxClauseCount;
- }
-
- @Override
- public void setNextEnum(TermsEnum termsEnum) throws IOException {
- this.termsEnum = termsEnum;
- this.boostAtt = termsEnum.attributes().addAttribute(BoostAttribute.class);
- }
-
- @Override
- public boolean collect(BytesRef bytes) {
- final int e = terms.add(bytes);
- if (e < 0 ) {
- // duplicate term: update docFreq
- final int pos = (-e)-1;
- array.docFreq[pos] += termsEnum.docFreq();
- assert array.boost[pos] == boostAtt.getBoost() : "boost should be equal in all segment TermsEnums";
- } else {
- // new entry: we populate the entry initially
- array.docFreq[e] = termsEnum.docFreq();
- array.boost[e] = boostAtt.getBoost();
- }
- // if the new entry reaches the max clause count, we exit early
- if (checkMaxClauseCount && e >= BooleanQuery.getMaxClauseCount())
- throw new BooleanQuery.TooManyClauses();
- return true;
- }
- }
-
- /** Special implementation of BytesStartArray that keeps parallel arrays for boost and docFreq */
- static final class TermFreqBoostByteStart extends DirectBytesStartArray {
- int[] docFreq;
- float[] boost;
-
- public TermFreqBoostByteStart(int initSize) {
- super(initSize);
- }
-
- @Override
- public int[] init() {
- final int[] ord = super.init();
- boost = new float[ArrayUtil.oversize(ord.length, RamUsageEstimator.NUM_BYTES_FLOAT)];
- docFreq = new int[ArrayUtil.oversize(ord.length, RamUsageEstimator.NUM_BYTES_INT)];
- assert boost.length >= ord.length && docFreq.length >= ord.length;
- return ord;
- }
-
- @Override
- public int[] grow() {
- final int[] ord = super.grow();
- docFreq = ArrayUtil.grow(docFreq, ord.length);
- boost = ArrayUtil.grow(boost, ord.length);
- assert boost.length >= ord.length && docFreq.length >= ord.length;
- return ord;
- }
-
- @Override
- public int[] clear() {
- boost = null;
- docFreq = null;
- return super.clear();
- }
-
- }
}
Copied: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java (from r1035096, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java?p2=lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java&p1=lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java&r1=1035096&r2=1035118&rev=1035118&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/TermCollectingRewrite.java Mon Nov 15 01:36:04 2010
@@ -18,19 +18,10 @@ package org.apache.lucene.search;
*/
import java.io.IOException;
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Comparator;
-import org.apache.lucene.index.Fields;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
-import org.apache.lucene.index.Terms;
-import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.util.AttributeSource;
-import org.apache.lucene.util.BytesRef;
-import org.apache.lucene.util.ReaderUtil;
+import org.apache.lucene.index.TermEnum;
abstract class TermCollectingRewrite<Q extends Query> extends MultiTermQuery.RewriteMethod {
@@ -38,56 +29,23 @@ abstract class TermCollectingRewrite<Q e
protected abstract Q getTopLevelQuery() throws IOException;
/** Add a MultiTermQuery term to the top-level query */
- protected abstract void addClause(Q topLevel, Term term, int docCount, float boost) throws IOException;
+ protected abstract void addClause(Q topLevel, Term term, float boost) throws IOException;
protected final void collectTerms(IndexReader reader, MultiTermQuery query, TermCollector collector) throws IOException {
- final List<IndexReader> subReaders = new ArrayList<IndexReader>();
- ReaderUtil.gatherSubReaders(subReaders, reader);
- Comparator<BytesRef> lastTermComp = null;
-
- for (IndexReader r : subReaders) {
- final Fields fields = r.fields();
- if (fields == null) {
- // reader has no fields
- continue;
- }
-
- final Terms terms = fields.terms(query.field);
- if (terms == null) {
- // field does not exist
- continue;
- }
-
- final TermsEnum termsEnum = query.getTermsEnum(r, collector.attributes);
- assert termsEnum != null;
-
- if (termsEnum == TermsEnum.EMPTY)
- continue;
-
- // Check comparator compatibility:
- final Comparator<BytesRef> newTermComp = termsEnum.getComparator();
- if (lastTermComp != null && newTermComp != lastTermComp)
- throw new RuntimeException("term comparator should not change between segments: "+lastTermComp+" != "+newTermComp);
- lastTermComp = newTermComp;
-
- collector.setNextEnum(termsEnum);
- BytesRef bytes;
- while ((bytes = termsEnum.next()) != null) {
- termsEnum.cacheCurrentTerm();
- if (!collector.collect(bytes))
- return; // interrupt whole term collection, so also don't iterate other subReaders
- }
+ final FilteredTermEnum enumerator = query.getEnum(reader);
+ try {
+ do {
+ final Term t = enumerator.term();
+ if (t == null || !collector.collect(t, enumerator.difference()))
+ break;
+ } while (enumerator.next());
+ } finally {
+ enumerator.close();
}
}
- protected static abstract class TermCollector {
- /** attributes used for communication with the enum */
- public final AttributeSource attributes = new AttributeSource();
-
+ protected interface TermCollector {
/** return false to stop collecting */
- public abstract boolean collect(BytesRef bytes) throws IOException;
-
- /** the next segment's {@link TermsEnum} that is used to collect terms */
- public abstract void setNextEnum(TermsEnum termsEnum) throws IOException;
+ boolean collect(Term t, float boost) throws IOException;
}
}
Copied: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java (from r1035096, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java?p2=lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java&p1=lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java&r1=1035096&r2=1035118&rev=1035118&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/TopTermsRewrite.java Mon Nov 15 01:36:04 2010
@@ -18,16 +18,11 @@ package org.apache.lucene.search;
*/
import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
import java.util.PriorityQueue;
-import java.util.Comparator;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
-import org.apache.lucene.index.TermsEnum;
-import org.apache.lucene.util.ArrayUtil;
-import org.apache.lucene.util.BytesRef;
+import org.apache.lucene.index.TermEnum;
/**
* Base rewrite method for collecting only the top terms
@@ -58,82 +53,33 @@ public abstract class TopTermsRewrite<Q
protected abstract int getMaxSize();
@Override
- public final Q rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException {
+ public Q rewrite(final IndexReader reader, final MultiTermQuery query) throws IOException {
final int maxSize = Math.min(size, getMaxSize());
final PriorityQueue<ScoreTerm> stQueue = new PriorityQueue<ScoreTerm>();
collectTerms(reader, query, new TermCollector() {
- private final MaxNonCompetitiveBoostAttribute maxBoostAtt =
- attributes.addAttribute(MaxNonCompetitiveBoostAttribute.class);
-
- private final Map<BytesRef,ScoreTerm> visitedTerms = new HashMap<BytesRef,ScoreTerm>();
-
- private TermsEnum termsEnum;
- private Comparator<BytesRef> termComp;
- private BoostAttribute boostAtt;
- private ScoreTerm st;
-
- @Override
- public void setNextEnum(TermsEnum termsEnum) throws IOException {
- this.termsEnum = termsEnum;
- this.termComp = termsEnum.getComparator();
- // lazy init the initial ScoreTerm because comparator is not known on ctor:
- if (st == null)
- st = new ScoreTerm(this.termComp);
- boostAtt = termsEnum.attributes().addAttribute(BoostAttribute.class);
- }
-
- @Override
- public boolean collect(BytesRef bytes) {
- final float boost = boostAtt.getBoost();
+ public boolean collect(Term t, float boost) {
// ignore uncompetetive hits
- if (stQueue.size() == maxSize) {
- final ScoreTerm t = stQueue.peek();
- if (boost < t.boost)
- return true;
- if (boost == t.boost && termComp.compare(bytes, t.bytes) > 0)
- return true;
- }
- ScoreTerm t = visitedTerms.get(bytes);
- if (t != null) {
- // if the term is already in the PQ, only update docFreq of term in PQ
- t.docFreq += termsEnum.docFreq();
- assert t.boost == boost : "boost should be equal in all segment TermsEnums";
- } else {
- // add new entry in PQ, we must clone the term, else it may get overwritten!
- st.bytes.copy(bytes);
- st.boost = boost;
- st.docFreq = termsEnum.docFreq();
- visitedTerms.put(st.bytes, st);
- stQueue.offer(st);
- // possibly drop entries from queue
- if (stQueue.size() > maxSize) {
- st = stQueue.poll();
- visitedTerms.remove(st.bytes);
- } else {
- st = new ScoreTerm(termComp);
- }
- assert stQueue.size() <= maxSize : "the PQ size must be limited to maxSize";
- // set maxBoostAtt with values to help FuzzyTermsEnum to optimize
- if (stQueue.size() == maxSize) {
- t = stQueue.peek();
- maxBoostAtt.setMaxNonCompetitiveBoost(t.boost);
- maxBoostAtt.setCompetitiveTerm(t.bytes);
- }
- }
+ if (stQueue.size() >= maxSize && boost <= stQueue.peek().boost)
+ return true;
+ // add new entry in PQ
+ st.term = t;
+ st.boost = boost;
+ stQueue.offer(st);
+ // possibly drop entries from queue
+ st = (stQueue.size() > maxSize) ? stQueue.poll() : new ScoreTerm();
return true;
}
+
+ // reusable instance
+ private ScoreTerm st = new ScoreTerm();
});
- final Term placeholderTerm = new Term(query.field);
final Q q = getTopLevelQuery();
- final ScoreTerm[] scoreTerms = stQueue.toArray(new ScoreTerm[stQueue.size()]);
- ArrayUtil.quickSort(scoreTerms, scoreTermSortByTermComp);
- for (final ScoreTerm st : scoreTerms) {
- final Term term = placeholderTerm.createTerm(st.bytes);
- assert reader.docFreq(term) == st.docFreq;
- addClause(q, term, st.docFreq, query.getBoost() * st.boost); // add to query
+ for (final ScoreTerm st : stQueue) {
+ addClause(q, st.term, query.getBoost() * st.boost); // add to query
}
- query.incTotalNumberOfTerms(scoreTerms.length);
+ query.incTotalNumberOfTerms(stQueue.size());
+
return q;
}
@@ -152,31 +98,16 @@ public abstract class TopTermsRewrite<Q
return true;
}
- private static final Comparator<ScoreTerm> scoreTermSortByTermComp =
- new Comparator<ScoreTerm>() {
- public int compare(ScoreTerm st1, ScoreTerm st2) {
- assert st1.termComp == st2.termComp :
- "term comparator should not change between segments";
- return st1.termComp.compare(st1.bytes, st2.bytes);
- }
- };
-
- static final class ScoreTerm implements Comparable<ScoreTerm> {
- public final Comparator<BytesRef> termComp;
-
- public final BytesRef bytes = new BytesRef();
+ private static class ScoreTerm implements Comparable<ScoreTerm> {
+ public Term term;
public float boost;
- public int docFreq;
-
- public ScoreTerm(Comparator<BytesRef> termComp) {
- this.termComp = termComp;
- }
public int compareTo(ScoreTerm other) {
if (this.boost == other.boost)
- return termComp.compare(other.bytes, this.bytes);
+ return other.term.compareTo(this.term);
else
return Float.compare(this.boost, other.boost);
}
}
+
}
Copied: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java (from r1035096, lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java)
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java?p2=lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java&p1=lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java&r1=1035096&r2=1035118&rev=1035118&view=diff
==============================================================================
--- lucene/dev/trunk/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/spans/SpanMultiTermQueryWrapper.java Mon Nov 15 01:36:04 2010
@@ -18,6 +18,7 @@ package org.apache.lucene.search.spans;
*/
import java.io.IOException;
+import java.lang.reflect.Method;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.Term;
@@ -45,6 +46,7 @@ import org.apache.lucene.search.BooleanC
*/
public class SpanMultiTermQueryWrapper<Q extends MultiTermQuery> extends SpanQuery {
protected final Q query;
+ private Method getFieldMethod = null, getTermMethod = null;
/**
* Create a new SpanMultiTermQueryWrapper.
@@ -55,6 +57,9 @@ public class SpanMultiTermQueryWrapper<Q
* on the wrapped <code>query</code>, changing its rewrite method to a suitable one for spans.
* Be sure to not change the rewrite method on the wrapped query afterwards! Doing so will
* throw {@link UnsupportedOperationException} on rewriting this query!
+ * In Lucene 3.x, MultiTermQuery allows queries to rewrite to different field names, but SpanQuery
+ * needs a fixed field. The wrapped query must therefore support getField() or getTerm().
+ * @throws IllegalArgumentException if the wrapped query does not provide getField() or getTerm().
*/
public SpanMultiTermQueryWrapper(Q query) {
this.query = query;
@@ -66,6 +71,23 @@ public class SpanMultiTermQueryWrapper<Q
} else {
setRewriteMethod(SCORING_SPAN_QUERY_REWRITE);
}
+
+ // In Lucene 3.x, MTQ has no fixed field, we need to get it by reflection.
+ // If the underlying query does not allow to get a constant field, we throw IAE:
+ try {
+ getFieldMethod = query.getClass().getMethod("getField");
+ } catch (Exception e1) {
+ try {
+ getTermMethod = query.getClass().getMethod("getTerm");
+ } catch (Exception e2) {
+ try {
+ getTermMethod = query.getClass().getMethod("getPrefix");
+ } catch (Exception e3) {
+ throw new IllegalArgumentException("SpanMultiTermQueryWrapper can only wrap MultiTermQueries"+
+ " that can return a field name using getField() or getTerm()");
+ }
+ }
+ }
}
/**
@@ -93,7 +115,16 @@ public class SpanMultiTermQueryWrapper<Q
@Override
public String getField() {
- return query.getField();
+ try {
+ if (getFieldMethod != null) {
+ return (String) getFieldMethod.invoke(query);
+ } else {
+ assert getTermMethod != null;
+ return ((Term) getTermMethod.invoke(query)).field();
+ }
+ } catch (Exception e) {
+ throw new RuntimeException("Cannot invoke getField() or getTerm() on wrapped query.", e);
+ }
}
@Override
@@ -148,7 +179,7 @@ public class SpanMultiTermQueryWrapper<Q
}
@Override
- protected void addClause(SpanOrQuery topLevel, Term term, int docCount, float boost) {
+ protected void addClause(SpanOrQuery topLevel, Term term, float boost) {
final SpanTermQuery q = new SpanTermQuery(term);
q.setBoost(boost);
topLevel.addClause(q);
@@ -197,7 +228,7 @@ public class SpanMultiTermQueryWrapper<Q
}
@Override
- protected void addClause(SpanOrQuery topLevel, Term term, int docFreq, float boost) {
+ protected void addClause(SpanOrQuery topLevel, Term term, float boost) {
final SpanTermQuery q = new SpanTermQuery(term);
q.setBoost(boost);
topLevel.addClause(q);
Modified: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/spans/SpanOrQuery.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/spans/SpanOrQuery.java?rev=1035118&r1=1035117&r2=1035118&view=diff
==============================================================================
--- lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/spans/SpanOrQuery.java (original)
+++ lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/search/spans/SpanOrQuery.java Mon Nov 15 01:36:04 2010
@@ -42,16 +42,20 @@ public class SpanOrQuery extends SpanQue
// copy clauses array into an ArrayList
this.clauses = new ArrayList<SpanQuery>(clauses.length);
for (int i = 0; i < clauses.length; i++) {
- SpanQuery clause = clauses[i];
- if (i == 0) { // check field
- field = clause.getField();
- } else if (!clause.getField().equals(field)) {
- throw new IllegalArgumentException("Clauses must have same field.");
- }
- this.clauses.add(clause);
+ addClause(clauses[i]);
}
}
+ /** Adds a clause to this query */
+ public final void addClause(SpanQuery clause) {
+ if (field == null) {
+ field = clause.getField();
+ } else if (!clause.getField().equals(field)) {
+ throw new IllegalArgumentException("Clauses must have same field.");
+ }
+ this.clauses.add(clause);
+ }
+
/** Return the clauses whose spans are matched. */
public SpanQuery[] getClauses() {
return clauses.toArray(new SpanQuery[clauses.size()]);
Propchange: lucene/dev/branches/branch_3x/lucene/src/java/org/apache/lucene/util/StringHelper.java
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 15 01:36:04 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/StringHelper.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,963654,963720,963781,9638
73,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999016,999223,999545,999842
,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024128,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024476,1024486,1025597,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,1026841,1026868,1026882,1027998,1028039,1028
386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977
+/lucene/dev/trunk/lucene/src/java/org/apache/lucene/util/StringHelper.java:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,963654,963720,963781,9638
73,963906,963909,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999016,999223,999545,999842
,1000424,1000581,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024128,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024476,1024486,1025597,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,1026841,1026868,1026882,1027998,1028039,1028
386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977,1035096,1035103
/lucene/dev/trunk/src/java/org/apache/lucene/util/StringHelper.java:932749
/lucene/java/branches/flex_1458/src/java/org/apache/lucene/util/StringHelper.java:924791,924850,930201
/lucene/java/branches/lucene_2_4/src/java/org/apache/lucene/util/StringHelper.java:748824
Propchange: lucene/dev/branches/branch_3x/lucene/src/test/org/apache/lucene/analysis/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Nov 15 01:36:04 2010
@@ -1,4 +1,4 @@
-/lucene/dev/trunk/lucene/src/test/org/apache/lucene/analysis:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,963654,963720,963781,963873,963906,9639
09,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999016,999223,999545,999842,1000424,10005
81,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,1026841,1026868,1026882,1027998,10
28039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977
+/lucene/dev/trunk/lucene/src/test/org/apache/lucene/analysis:931298,931337,931502,932129-932131,932163,932304,932369,932374,932398,932417,932541,932576,932587,932698,932731-932749,932752,932773,932795,932828,932856-932857,932862,932864,932878,932963,932998-932999,933541-933575,933598,933613,933679,933879,934339,934954,935014-935048,935065,935186-935513,935521-935522,935553-935962,936522,936544,936605,936657-936726,937039,937360,938582-938646,938989,939111,939611,939649,940433,940447,940451-940452,940666,940699,940730,940878-940892,940994,941270,941363,942166,942288,942676,942719,943142,943493,943931,945057,945090,945130,945245,945343,945420,946139,946330,946338,946599,948011,948082,948429,949288,949311,949445,949976,949997,950008,950042,950458,950613,951126,951355,951397,951521,953407,955547,955613,955615,955796-955797,955809-955996,956097,956125,956173,956316,956715,957465,957520,957634,957707,960367,960371,960374,960719,962555,963372,963654,963720,963781,963873,963906,9639
09,963920,964019,964054,964430,964459,964720,964753,964832,964856,965103,965110,965222,965230,965299,965327,965330,965585,966354,966878,967080,979453,979809,980369,980428,980436,980501,980909,980911,980917,981265,981550,981598,981650,981661,981857,981936,982073,982084,982201,982725,982824,983100,983212,983216,983313,983495,983500,983530,983622,983632,983778,984187,984202,984232,984510,984968,985453,985455,985672,985875,986158,986173,986612,987122,988087,988206,988216,988259,988346,988478,988527,988543,988592,988613,988688,988710,988736,988739,989004,989010,989013,989030,989035,989315,989321,989334,989785,990160-990161,990180,990189,990281,990301,990451,990459,990766,990781,990854,991053,991191,991310,991497,992424,992469,992567,992571,992623,993106,993194,993199,993287,993408,994935,994976,994979,995247,995250,995376,995772,996268,996357,996416,996511,996611,996623,996647-996653,996720,996942,996978,997180,997230,998055,998505,998684,999016,999223,999545,999842,1000424,10005
81,1000675,1001006,1001420,1001661,1001796,1002032,1003614,1003631,1003645,1003841-1003852,1003873,1003877,1003906,1003938,1003954,1003978,1003990,1004038,1004082,1004179,1004200,1004215,1004241,1004335,1005310,1005356,1005363,1006146,1006290,1006324,1021340,1021357,1021360,1021439,1021449,1021969-1021971,1022165,1022191,1022632,1022708-1022710,1022730-1022735,1022748-1022755,1022762-1022793,1022798-1022802,1022805,1022826,1022927,1022939,1022956,1022989,1022998,1023006,1023009,1023022,1023040,1023106,1023235-1023246,1023250,1023264-1023265,1023312,1023329-1023330,1023346-1023347,1023355,1023493,1023509-1023511,1023518,1023520,1023535-1023536,1023562,1023579-1023588,1023594-1023595,1023600-1023602,1023606,1023621,1023635,1023637,1023711,1023845,1023870,1024196,1024219,1024233,1024238,1024256,1024292,1024305,1024395,1024402,1024408,1024476,1024486,1025597,1025669,1025929,1026044,1026167,1026336,1026431,1026460,1026592,1026606,1026610,1026738,1026841,1026868,1026882,1027998,10
28039,1028386,1029096,1029325,1029333,1029345,1030012,1030019,1030073,1030078,1030754,1031076,1031219,1031460,1031467,1031474,1031480,1031496,1031686,1031689,1032570,1032776,1034007,1034011,1034017,1034342,1034361,1034763,1034921,1034975,1034977,1035096,1035103
/lucene/dev/trunk/modules/analysis/common/src/test/org/apache/lucene/analysis/core:1002032,1022826
/lucene/dev/trunk/src/test/org/apache/lucene/analysis:932749
/lucene/java/branches/flex_1458/src/test/org/apache/lucene/analysis:924791,924850,930201