From c5dbbf9f4ad7d20ff234e87bc50fb756917985c3 Mon Sep 17 00:00:00 2001 From: "Chris M. Hostetter" Date: Wed, 29 Nov 2006 18:58:27 +0000 Subject: [PATCH] SOLR-3 Removed src/apps containing the legacy SolrTest app git-svn-id: https://svn.apache.org/repos/asf/incubator/solr/trunk@480683 13f79535-47bb-0310-9956-ffa450edef68 --- CHANGES.txt | 2 + build.xml | 18 - src/apps/SolrTest/cachetest.txt | 39 -- src/apps/SolrTest/commit.bat | 19 - src/apps/SolrTest/dict.txt | 1 - src/apps/SolrTest/newtest.txt | 571 --------------------- src/apps/SolrTest/solr/conf/protwords.txt | 16 - src/apps/SolrTest/solr/conf/schema.xml | 363 ------------- src/apps/SolrTest/solr/conf/solrconfig.xml | 208 -------- src/apps/SolrTest/solr/conf/stopwords.txt | 16 - src/apps/SolrTest/solr/conf/synonyms.txt | 20 - src/apps/SolrTest/src/SolrTest.java | 398 -------------- src/apps/SolrTest/test_func.txt | 66 --- 13 files changed, 2 insertions(+), 1735 deletions(-) delete mode 100644 src/apps/SolrTest/cachetest.txt delete mode 100644 src/apps/SolrTest/commit.bat delete mode 100644 src/apps/SolrTest/dict.txt delete mode 100644 src/apps/SolrTest/newtest.txt delete mode 100644 src/apps/SolrTest/solr/conf/protwords.txt delete mode 100644 src/apps/SolrTest/solr/conf/schema.xml delete mode 100644 src/apps/SolrTest/solr/conf/solrconfig.xml delete mode 100644 src/apps/SolrTest/solr/conf/stopwords.txt delete mode 100644 src/apps/SolrTest/solr/conf/synonyms.txt delete mode 100644 src/apps/SolrTest/src/SolrTest.java delete mode 100644 src/apps/SolrTest/test_func.txt diff --git a/CHANGES.txt b/CHANGES.txt index 5ad4da2df9d..6bc4f64c92e 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -152,5 +152,7 @@ Other Changes 7. blackslash escape * in ssh command used in snappuller for zsh compatibility, SOLR-63 8. check solr return code in admin scripts, SOLR-62 9. Updated to Lucene 2.0 nightly build 2006-11-15, SVN revision 475069 +10. Removed src/apps containing the legacy "SolrTest" app (hossman, SOLR-3) + 2006/01/17 Solr open sourced, moves to Apache Incubator diff --git a/build.xml b/build.xml index 9c824b5fb9f..eabd5cd83e7 100644 --- a/build.xml +++ b/build.xml @@ -192,7 +192,6 @@ encoding="utf8" classpathref="test.compile.classpath"> - @@ -200,28 +199,11 @@ - - - - - - - - - - - - -val_s:A -val_s:B -val_s:C -val_s:D -#B,C,D should be in cache -val_s:A -#miss, now C,D,A should be in cache - -#should see old{lookups=5, hits=0, size=3}, new{size=2} -#now D,A should be autowarmed in new - -val_s:C -#miss, now cache=D,A,C - -#should see old{lookups,1 hits=0, size=3}, new{size=2} -#now A,C should be autowarmed in new - -val_s:A -val_s:C - -#should see old{lookups=2, hits=2, size=0} diff --git a/src/apps/SolrTest/commit.bat b/src/apps/SolrTest/commit.bat deleted file mode 100644 index 79969af1b7d..00000000000 --- a/src/apps/SolrTest/commit.bat +++ /dev/null @@ -1,19 +0,0 @@ -echo off -rem Licensed to the Apache Software Foundation (ASF) under one or more -rem contributor license agreements. See the NOTICE file distributed with -rem this work for additional information regarding copyright ownership. -rem The ASF licenses this file to You under the Apache License, Version 2.0 -rem (the "License"); you may not use this file except in compliance with -rem the License. You may obtain a copy of the License at -rem -rem http://www.apache.org/licenses/LICENSE-2.0 -rem -rem Unless required by applicable law or agreed to in writing, software -rem distributed under the License is distributed on an "AS IS" BASIS, -rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -rem See the License for the specific language governing permissions and -rem limitations under the License. - -PATH=c:/cygwin/bin -c:/cygwin/bin/bash.exe -c "echo handler called... cwd=`pwd` MYVAR=%MYVAR% > commit.outfile" -exit 33 diff --git a/src/apps/SolrTest/dict.txt b/src/apps/SolrTest/dict.txt deleted file mode 100644 index 6d7d0f168e0..00000000000 --- a/src/apps/SolrTest/dict.txt +++ /dev/null @@ -1 +0,0 @@ -userName:Alex;startDate top 2; diff --git a/src/apps/SolrTest/newtest.txt b/src/apps/SolrTest/newtest.txt deleted file mode 100644 index 1a9d2be9531..00000000000 --- a/src/apps/SolrTest/newtest.txt +++ /dev/null @@ -1,571 +0,0 @@ -# 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. - -#compact the index, keep things from getting out of hand - - -#test query -qlkciyopsbgzyvkylsjhchghjrdf %//result[@numFound="0"] - -#test escaping of ";" -42 -42aa;bb - -id:42 AND val_s:aa\;bb %//*[@numFound="1"] -id:42 AND val_s:"aa;bb" %//*[@numFound="1"] -id:42 AND val_s:"aa" %//*[@numFound="0"] - - - -#test allowDups default of false -42 -42AAA -42BBB - -id:42 %//*[@numFound="1"] %//str[.="BBB"] -42CCC -42DDD - -id:42 %//*[@numFound="1"] %//str[.="DDD"] -42 - -#test deletes -id:[100 TO 110] -101 -101 -105 -102 -103 -101 - -id:[100 TO 110] %//*[@numFound="4"] -102 - -id:[100 TO 110] %//*[@numFound="3"] -id:105 - -id:[100 TO 110] %//*[@numFound="2"] -id:[100 TO 110] - -id:[100 TO 110] %//*[@numFound="0"] - -#test range -44 -44apple -44banana -44pear - -val_s:[a TO z] %//*[@numFound="3"] %*[count(//doc)=3] %//*[@start="0"] -val_s:[a TO z] %%start=2&limit=5 %//*[@numFound="3"] %*[count(//doc)=1] %*//doc[1]/str[.="pear"] %//*[@start="2"] -val_s:[a TO z] %%start=3&limit=5 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO z] %%start=4&limit=5 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO z] %%start=25&limit=5 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO z] %%start=0&limit=1 %//*[@numFound="3"] %*[count(//doc)=1] %*//doc[1]/str[.="apple"] -val_s:[a TO z] %%start=0&limit=2 %//*[@numFound="3"] %*[count(//doc)=2] %*//doc[2]/str[.="banana"] -val_s:[a TO z] %%start=1&limit=1 %//*[@numFound="3"] %*[count(//doc)=1] %*//doc[1]/str[.="banana"] -val_s:[a TO z] %%start=3&limit=1 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO z] %%start=4&limit=1 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO z] %%start=1&limit=0 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO z] %%start=0&limit=0 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO z];val_s asc %%start=0&limit=0 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO z];val_s desc %%start=0&limit=0 %//*[@numFound="3"] %*[count(//doc)=0] -val_s:[a TO b] %//*[@numFound="1"] -val_s:[a TO cat] %//*[@numFound="2"] -val_s:[a TO *] %//*[@numFound="3"] -val_s:[* TO z] %//*[@numFound="3"] -val_s:[* TO *] %//*[@numFound="3"] -val_s:[apple TO pear] %//*[@numFound="3"] -val_s:[bear TO boar] %//*[@numFound="0"] -val_s:[a TO a] %//*[@numFound="0"] -val_s:[apple TO apple] %//*[@numFound="1"] -val_s:{apple TO pear} %//*[@numFound="1"] -val_s:{a TO z} %//*[@numFound="3"] -val_s:{* TO *} %//*[@numFound="3"] -#test rangequery within a boolean query -id:44 AND val_s:[a TO z] %//*[@numFound="3"] -id:44 OR val_s:[a TO z] %//*[@numFound="3"] -val_s:[a TO b] OR val_s:[b TO z] %//*[@numFound="3"] -+val_s:[a TO b] -val_s:[b TO z] %//*[@numFound="1"] --val_s:[a TO b] +val_s:[b TO z] %//*[@numFound="2"] -val_s:[a TO c] AND val_s:[apple TO z] %//*[@numFound="2"] -val_s:[a TO c] AND val_s:[a TO apple] %//*[@numFound="1"] -id:44 AND (val_s:[a TO c] AND val_s:[a TO apple]) %//*[@numFound="1"] -(val_s:[apple TO apple] OR val_s:[a TO c]) AND (val_s:[b TO c] OR val_s:[b TO b]) %//*[@numFound="1"] %//str[.="banana"] -(val_s:[apple TO apple] AND val_s:[a TO c]) OR (val_s:[p TO z] AND val_s:[a TO z]) %//*[@numFound="2"] %//str[.="apple"] %//str[.="pear"] - -#check for docs that appear more than once in a range -44applebanana - -val_s:[* TO *] OR val_s:[* TO *] %//*[@numFound="4"] -val_s:[* TO *] AND val_s:[* TO *] %//*[@numFound="4"] -val_s:[* TO *] %//*[@numFound="4"] - - -#44 -44red riding hood - -id:44 AND red %//@numFound[.="1"] %*[count(//doc)=1] -id:44 AND ride %//@numFound[.="1"] -id:44 AND blue %//@numFound[.="0"] - -#allow duplicates -44 -44red riding hood -44big bad wolf - -id:44 %//@numFound[.="2"] -id:44 AND red %//@numFound[.="1"] %*[count(//doc)=1] -id:44 AND wolf %//@numFound[.="1"] %*[count(//doc)=1] -+id:44 red wolf %//@numFound[.="2"] - -#test removal of multiples w/o adding anything else -44 - -id:44 %//@numFound[.="0"] - -#untokenized string type -44 -44and a 10.4 ? - -id:44 %//str[.="and a 10.4 ?"] -44 -44abc123 - -#TODO: how to search for something with spaces.... -sind:abc123 %//@numFound[.="1"] %*[count(//@name[.="sind"])=0] %*[count(//@name[.="id"])=1] - -44 -44 -44abc123 - -#TODO: how to search for something with spaces.... -sindsto:abc123 %//str[.="abc123"] - -#test output of multivalued fields -44 -44yonik3yonik4 - -id:44 %//arr[@name="title"][./str="yonik3" and ./str="yonik4"] %*[count(//@name[.="title"])=1] -title:yonik3 %//@numFound[.>"0"] -title:yonik4 %//@numFound[.>"0"] -title:yonik5 %//@numFound[.="0"] -title:yonik4 - -id:44 %//@numFound[.="0"] - - -#not visible until commit -44 - -44 -id:44 %//@numFound[.="0"] - -id:44 %//@numFound[.="1"] - -#test configurable stop words -44 -44world stopworda view - -+id:44 +teststop:world %//@numFound[.="1"] -teststop:stopworda %//@numFound[.="0"] - -#test ignoreCase stop words -44 -44world AnD view - -+id:44 +stopfilt:world %//@numFound[.="1"] -stopfilt:"and" %//@numFound[.="0"] -stopfilt:"AND" %//@numFound[.="0"] -stopfilt:"AnD" %//@numFound[.="0"] - -#test dynamic field types -44 -4451778cats - -#test if the dyn fields got added -id:44 %*[count(//doc/*)>=3] %//int[@name="gack_i"][.="51778"] %//str[@name="t_name"][.="cats"] -#now test if we can query by a dynamic field (requires analyzer support) -t_name:cat %//str[@name="t_name" and .="cats"] -#check that deleteByQuery works for dynamic fields -t_name:cat - -t_name:cat %//@numFound[.="0"] - -#test that longest dynamic field match happens first -44mystr12321 - -id:44 %//str[@name="xaa"][.="mystr"] %//int[@name="xaaa"][.="12321"] - - -#test integer ranges and sorting -44 -441234567890 -4410 -441 -442 -4415 -44-1 -44-987654321 -442147483647 -44-2147483648 -440 - -id:44 %*[count(//doc)=10] -num_i:2147483647 %//@numFound[.="1"] %//int[.="2147483647"] -num_i:"-2147483648" %//@numFound[.="1"] %//int[.="-2147483648"] -id:44;num_i asc; %//doc[1]/int[.="-2147483648"] %//doc[last()]/int[.="2147483647"] -id:44;num_i desc; %//doc[1]/int[.="2147483647"] %//doc[last()]/int[.="-2147483648"] -num_i:[0 TO 9] %*[count(//doc)=3] -num_i:[-2147483648 TO 2147483647] %*[count(//doc)=10] -num_i:[-10 TO -1] %*[count(//doc)=1] - -#test long ranges and sorting -44 -441234567890 -4410 -441 -442 -4415 -44-1 -44-987654321 -449223372036854775807 -44-9223372036854775808 -440 - -id:44 %*[count(//doc)=10] -num_l:9223372036854775807 %//@numFound[.="1"] %//long[.="9223372036854775807"] -num_l:"-9223372036854775808" %//@numFound[.="1"] %//long[.="-9223372036854775808"] -id:44;num_l asc; %//doc[1]/long[.="-9223372036854775808"] %//doc[last()]/long[.="9223372036854775807"] -id:44;num_l desc; %//doc[1]/long[.="9223372036854775807"] %//doc[last()]/long[.="-9223372036854775808"] -num_l:[-1 TO 9] %*[count(//doc)=4] -num_l:[-9223372036854775808 TO 9223372036854775807] %*[count(//doc)=10] -num_l:[-10 TO -1] %*[count(//doc)=1] - -#test binary float ranges and sorting -44 -441.4142135 -44Infinity -44-Infinity -44NaN -442 -44-1 -44-987654321 -44-999999.99 -44-1e20 -440 - -id:44 %*[count(//doc)=10] -num_f:Infinity %//@numFound[.="1"] %//float[.="Infinity"] -num_f:"-Infinity" %//@numFound[.="1"] %//float[.="-Infinity"] -num_f:"NaN" %//@numFound[.="1"] %//float[.="NaN"] -num_f:"-1e20" %//@numFound[.="1"] -id:44;num_f asc; %//doc[1]/float[.="-Infinity"] %//doc[last()]/float[.="NaN"] -id:44;num_f desc; %//doc[1]/float[.="NaN"] %//doc[last()]/float[.="-Infinity"] -num_f:[-1 TO 2] %*[count(//doc)=4] -num_f:[-Infinity TO Infinity] %*[count(//doc)=9] - - - -#test binary double ranges and sorting -44 -441.4142135 -44Infinity -44-Infinity -44NaN -442 -44-1 -441e-100 -44-999999.99 -44-1e100 -440 - -id:44 %*[count(//doc)=10] -num_d:Infinity %//@numFound[.="1"] %//double[.="Infinity"] -num_d:"-Infinity" %//@numFound[.="1"] %//double[.="-Infinity"] -num_d:"NaN" %//@numFound[.="1"] %//double[.="NaN"] -num_d:"-1e100" %//@numFound[.="1"] -num_d:"1e-100" %//@numFound[.="1"] -id:44;num_d asc; %//doc[1]/double[.="-Infinity"] %//doc[last()]/double[.="NaN"] -id:44;num_d desc; %//doc[1]/double[.="NaN"] %//doc[last()]/double[.="-Infinity"] -num_d:[-1 TO 2] %*[count(//doc)=5] -num_d:[-Infinity TO Infinity] %*[count(//doc)=9] - - -#test sorting on multiple fields -44 -4410 -441100 -44-1 -4415 -44150 -440 - -id:44 %*[count(//doc)=6] - -id:44; a_i asc,b_i desc %*[count(//doc)=6] %//doc[3]/int[.="100"] %//doc[4]/int[.="50"] -id:44;a_i asc , b_i asc; %*[count(//doc)=6] %//doc[3]/int[.="50"] %//doc[4]/int[.="100"] -id:44;a_i asc; %*[count(//doc)=6] %//doc[1]/int[.="-1"] %//doc[last()]/int[.="15"] -id:44;a_i asc , score top; %*[count(//doc)=6] %//doc[1]/int[.="-1"] %//doc[last()]/int[.="15"] -id:44; score top , a_i top, b_i bottom ; %*[count(//doc)=6] %//doc[last()]/int[.="-1"] %//doc[1]/int[.="15"] %//doc[3]/int[.="50"] %//doc[4]/int[.="100"] - - -#test sorting with some docs missing the sort field -id_i:[1000 TO 1010] -10001 -100110 -10021100 -1003-1 -100415 -1005150 -10060 - -id_i:[1000 TO 1010] %*[count(//doc)=7] -id_i:[1000 TO 1010]; b_i asc %*[count(//doc)=7] %//doc[1]/int[.="50"] %//doc[2]/int[.="100"] -id_i:[1000 TO 1010]; b_i desc %*[count(//doc)=7] %//doc[1]/int[.="100"] %//doc[2]/int[.="50"] -id_i:[1000 TO 1010]; a_i asc,b_i desc %*[count(//doc)=7] %//doc[3]/int[.="100"] %//doc[4]/int[.="50"] %//doc[5]/int[.="1000"] -id_i:[1000 TO 1010]; a_i asc,b_i asc %*[count(//doc)=7] %//doc[3]/int[.="50"] %//doc[4]/int[.="100"] %//doc[5]/int[.="1000"] - - -#test prefix query -val_s:[* TO *] -100apple -101banana -102apple -103pearing -104pear -105appalling -106pearson -107port - - -val_s:a* %//*[@numFound="3"] -val_s:p* %//*[@numFound="4"] -#val_s:* %//*[@numFound="8"] - -id:[100 TO 110] - -#test copyField functionality -42How Now4 brown Cows - -id:42 AND title:Now %*[count(//doc)=0] -id:42 AND title_lettertok:Now %*[count(//doc)=1] -id:42 AND title:cow %*[count(//doc)=0] -id:42 AND title_stemmed:cow %*[count(//doc)=1] -id:42 AND text:cow %*[count(//doc)=1] - -#test slop -42foo bar - -id:42 AND text:"foo bar" %*[count(//doc)=1] -id:42 AND text:"foo" %*[count(//doc)=1] -id:42 AND text:"bar" %*[count(//doc)=1] -id:42 AND text:"bar foo" %*[count(//doc)=0] -id:42 AND text:"bar foo"~2 %*[count(//doc)=1] - - -#intra-word delimiter testing (WordDelimiterFilter) -42foo bar - -id:42 AND subword:"foo bar" %*[count(//doc)=1] -id:42 AND subword:"foo" %*[count(//doc)=1] -id:42 AND subword:"bar" %*[count(//doc)=1] -id:42 AND subword:"bar foo" %*[count(//doc)=0] -id:42 AND subword:"bar foo"~2 %*[count(//doc)=1] -id:42 AND subword:"foo/bar" %*[count(//doc)=1] -id:42 AND subword:"foobar" %*[count(//doc)=0] - -42foo-bar - -id:42 AND subword:"foo bar" %*[count(//doc)=1] -id:42 AND subword:"foo" %*[count(//doc)=1] -id:42 AND subword:"bar" %*[count(//doc)=1] -id:42 AND subword:"bar foo" %*[count(//doc)=0] -id:42 AND subword:"bar foo"~2 %*[count(//doc)=1] -id:42 AND subword:"foo/bar" %*[count(//doc)=1] -id:42 AND subword:foobar %*[count(//doc)=1] - -42Canon PowerShot SD500 7MP - -id:42 AND subword:"power-shot" %*[count(//doc)=1] -id:42 AND subword:"power shot sd 500" %*[count(//doc)=1] -id:42 AND subword:"powershot" %*[count(//doc)=1] -id:42 AND subword:"SD-500" %*[count(//doc)=1] -id:42 AND subword:"SD500" %*[count(//doc)=1] -id:42 AND subword:"SD500-7MP" %*[count(//doc)=1] -id:42 AND subword:"PowerShotSD500-7MP" %*[count(//doc)=1] - -42Wi-Fi - -id:42 AND subword:wifi %*[count(//doc)=1] -id:42 AND subword:wi+=fi %*[count(//doc)=1] -id:42 AND subword:wi+=fi %*[count(//doc)=1] -id:42 AND subword:WiFi %*[count(//doc)=1] -id:42 AND subword:"wi fi" %*[count(//doc)=1] - -42'I.B.M' A's,B's,C's - -id:42 AND subword:"'I.B.M.'" %*[count(//doc)=1] -id:42 AND subword:I.B.M %*[count(//doc)=1] -id:42 AND subword:IBM %*[count(//doc)=1] -id:42 AND subword:I--B--M %*[count(//doc)=1] -id:42 AND subword:"I B M" %*[count(//doc)=1] -id:42 AND subword:IBM's %*[count(//doc)=1] -id:42 AND subword:IBM'sx %*[count(//doc)=0] - -#this one fails since IBM and ABC are separated by two tokens -#id:42 AND subword:IBM's-ABC's %*[count(//doc)=1] -id:42 AND subword:"IBM's-ABC's"~2 %*[count(//doc)=1] - -id:42 AND subword:"A's B's-C's" %*[count(//doc)=1] - -42Sony KDF-E50A10 - - -#check for exact match: -# Sony KDF E/KDFE 50 A 10 (this is how it's indexed) -# Sony KDF E 50 A 10 (and how it's queried) -id:42 AND subword:"Sony KDF-E50A10" %*[count(//doc)=1] -id:42 AND subword:10 %*[count(//doc)=1] -id:42 AND subword:Sony %*[count(//doc)=1] - -#this one fails without slop since Sony and KDFE have a token inbetween -#id:42 AND subword:SonyKDFE50A10 %*[count(//doc)=1] -id:42 AND subword:"SonyKDFE50A10"~10 %*[count(//doc)=1] - -id:42 AND subword:"Sony KDF E-50-A-10" %*[count(//doc)=1] - -42http://www.yahoo.com - -id:42 AND subword:yahoo %*[count(//doc)=1] -id:42 AND subword:www.yahoo.com %*[count(//doc)=1] -id:42 AND subword:http://www.yahoo.com %*[count(//doc)=1] - -42--Q 1-- W2 E-3 Ok xY 4R 5-T *6-Y- 7-8-- 10A-B - -id:42 AND subword:Q %*[count(//doc)=1] -id:42 AND subword:1 %*[count(//doc)=1] -id:42 AND subword:"w 2" %*[count(//doc)=1] -id:42 AND subword:"e 3" %*[count(//doc)=1] -id:42 AND subword:"o k" %*[count(//doc)=0] -id:42 AND subword:"ok" %*[count(//doc)=1] -id:42 AND subword:"x y" %*[count(//doc)=1] -id:42 AND subword:"xy" %*[count(//doc)=1] -id:42 AND subword:"4 r" %*[count(//doc)=1] -id:42 AND subword:"5 t" %*[count(//doc)=1] -id:42 AND subword:"5 t" %*[count(//doc)=1] -id:42 AND subword:"6 y" %*[count(//doc)=1] -id:42 AND subword:"7 8" %*[count(//doc)=1] -id:42 AND subword:"78" %*[count(//doc)=1] -id:42 AND subword:"10 A+B" %*[count(//doc)=1] - -42FooBarBaz -42FooBar10 -4210FooBar -42BAZ -4210 -42Mark, I found what's the problem! It turns to be from the latest schema. I found tons of exceptions in the resin.stdout that prevented the builder from performing. It's all coming from the WordDelimiterFilter which was just added to the latest schema: [2005-08-29 15:11:38.375] java.lang.IndexOutOfBoundsException: Index: 3, Size: 3 673804 [2005-08-29 15:11:38.375] at java.util.ArrayList.RangeCheck(ArrayList.java:547) 673805 [2005-08-29 15:11:38.375] at java.util.ArrayList.get(ArrayList.java:322) 673806 [2005-08-29 15:11:38.375] at solr.analysis.WordDelimiterFilter.addCombos(WordDelimiterFilter.java:349) 673807 [2005-08-29 15:11:38.375] at solr.analysis.WordDelimiterFilter.next(WordDelimiterFilter.java:325) 673808 [2005-08-29 15:11:38.375] at org.apache.lucene.analysis.LowerCaseFilter.next(LowerCaseFilter.java:32) 673809 [2005-08-29 15:11:38.375] at org.apache.lucene.analysis.StopFilter.next(StopFilter.java:98) 673810 [2005-08-29 15:11:38.375] at solr.EnglishPorterFilter.next(TokenizerFactory.java:163) 673811 [2005-08-29 15:11:38.375] at org.apache.lucene.index.DocumentWriter.invertDocument(DocumentWriter.java:143) 673812 [2005-08-29 15:11:38.375] at org.apache.lucene.index.DocumentWriter.addDocument(DocumentWriter.java:81) 673813 [2005-08-29 15:11:38.375] at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:307) 673814 [2005-08-29 15:11:38.375] at org.apache.lucene.index.IndexWriter.addDocument(IndexWriter.java:294) 673815 [2005-08-29 15:11:38.375] at solr.DirectUpdateHandler2.doAdd(DirectUpdateHandler2.java:170) 673816 [2005-08-29 15:11:38.375] at solr.DirectUpdateHandler2.overwriteBoth(DirectUpdateHandler2.java:317) 673817 [2005-08-29 15:11:38.375] at solr.DirectUpdateHandler2.addDoc(DirectUpdateHandler2.java:191) 673818 [2005-08-29 15:11:38.375] at solr.SolrCore.update(SolrCore.java:795) 673819 [2005-08-29 15:11:38.375] at solrserver.SolrServlet.doPost(SolrServlet.java:71) 673820 [2005-08-29 15:11:38.375] at javax.servlet.http.HttpServlet.service(HttpServlet.java:154) 673821 [2005-08-29 15:11:38.375] at javax.servlet.http.HttpServlet.service(HttpServlet.java:92) 673822 [2005-08-29 15:11:38.375] at com.caucho.server.dispatch.ServletFilterChain.doFilter(ServletFilterChain.java:99) 673823 [2005-08-29 15:11:38.375] at com.caucho.server.cache.CacheFilterChain.doFilter(CacheFilterChain.java:188) 673824 [2005-08-29 15:11:38.375] at com.caucho.server.webapp.WebAppFilterChain.doFilter(WebAppFilterChain.java:163) 673825 [2005-08-29 15:11:38.375] at com.caucho.server.dispatch.ServletInvocation.service(ServletInvocation.java:208) 673826 [2005-08-29 15:11:38.375] at com.caucho.server.http.HttpRequest.handleRequest(HttpRequest.java:259) 673827 [2005-08-29 15:11:38.375] at com.caucho.server.port.TcpConnection.run(TcpConnection.java:363) 673828 [2005-08-29 15:11:38.375] at com.caucho.util.ThreadPool.runTasks(ThreadPool.java:490) 673829 [2005-08-29 15:11:38.375] at com.caucho.util.ThreadPool.run(ThreadPool.java:423) 673830 [2005-08-29 15:11:38.375] at java.lang.Thread.run(Thread.java:595) With the previous schema I'm able to perform a successful full build: http://c12-ssa-dev40-so-mas1.cnet.com:5078/select/?stylesheet=q=docTypeversion=2.0start=0rows=10indent=on Do you want to rollback to the previous schema version - - -# -44 -44Yoniktrue10000000000software engineer1e1003.14159622005-03-18T01:14:34Z1.414213562.999 - -id:44 -id:44 %%fl=fname_s,arr_f %//str[.="Yonik"] %//float[.="1.4142135"] -id:44 %%fl= %//str[.="Yonik"] %//float[.="1.4142135"] - -#test addition of score field -id:44 %%fl=score %//str[.="Yonik"] %//float[.="1.4142135"] %//float[@name="score"] %*[count(//doc/*)=10] -id:44 %%fl=*,score %//str[.="Yonik"] %//float[.="1.4142135"] %//float[@name="score"] %*[count(//doc/*)=10] -id:44 %%fl=* %//str[.="Yonik"] %//float[.="1.4142135"] %*[count(//doc/*)>=9] - -#test maxScore -id:44 %%fl=score %//result[@maxScore>0] -id:44;id desc; %%fl=score %//result[@maxScore>0] -id:44; %%fl=score %//@maxScore = //doc/float[@name="score"] -id:44;id desc; %%fl=score %//@maxScore = //doc/float[@name="score"] -id:44;id desc; %%fl=score&limit=0 %//result[@maxScore>0] - - -# test schema field attribute inheritance and overriding -44 -44hi - -id:44 %//*[@name="shouldbestored"] -+id:44 +shouldbestored:hi %//*[@numFound="1"] - -44 -44hi - -id:44 %not(//*[@name="shouldbeunstored"]) -+id:44 +shouldbeunstored:hi %//*[@numFound="1"] - -44 -44hi - -id:44 %//*[@name="shouldbeunindexed"] -# this should result in an error... how to check for that? -#+id:44 +shouldbeunindexed:hi %//*[@numFound="0"] - -#test spaces between XML elements because that can introduce extra XML events that -#can mess up parsing (and it has in the past) - 44 - 44 hi - - -#test adding multiple docs per add command -id:[0 TO 99] -12 - -id:[0 TO 99] %//*[@numFound="2"] - -#test synonym filter -id:[10 TO 100] -10a -11b -12c -13foo - -id:10 AND syn:a %//*[@numFound="1"] -id:10 AND syn:aa %//*[@numFound="1"] -id:11 AND syn:b %//*[@numFound="1"] -id:11 AND syn:b1 %//*[@numFound="1"] -id:11 AND syn:b2 %//*[@numFound="1"] -id:12 AND syn:c %//*[@numFound="1"] -id:12 AND syn:c1 %//*[@numFound="1"] -id:12 AND syn:c2 %//*[@numFound="1"] -id:13 AND syn:foo %//*[@numFound="1"] -id:13 AND syn:bar %//*[@numFound="1"] -id:13 AND syn:baz %//*[@numFound="1"] - - -#test position increment gaps between field values -44 -45 -44aa bb ccdd ee ff -45aa bb ccdd ee ff - -+id:44 +textgap:"aa bb cc" %//*[@numFound="1"] -+id:44 +textgap:"dd ee ff" %//*[@numFound="1"] -+id:44 +textgap:"cc dd" %//*[@numFound="0"] -+id:44 +textgap:"cc dd"~100 %//*[@numFound="1"] -+id:44 +textgap:"bb cc dd ee"~90 %//*[@numFound="0"] -+id:44 +textgap:"bb cc dd ee"~100 %//*[@numFound="1"] -+id:45 +text:"cc dd" %//*[@numFound="1"] - - -#trigger output of custom value test -values %%qt=test - diff --git a/src/apps/SolrTest/solr/conf/protwords.txt b/src/apps/SolrTest/solr/conf/protwords.txt deleted file mode 100644 index 8bec3918cb5..00000000000 --- a/src/apps/SolrTest/solr/conf/protwords.txt +++ /dev/null @@ -1,16 +0,0 @@ -# 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. -cats -ridding diff --git a/src/apps/SolrTest/solr/conf/schema.xml b/src/apps/SolrTest/solr/conf/schema.xml deleted file mode 100644 index c1b4dd2053b..00000000000 --- a/src/apps/SolrTest/solr/conf/schema.xml +++ /dev/null @@ -1,363 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text - id - - - - - - - - - - - - - diff --git a/src/apps/SolrTest/solr/conf/solrconfig.xml b/src/apps/SolrTest/solr/conf/solrconfig.xml deleted file mode 100644 index c698f812d14..00000000000 --- a/src/apps/SolrTest/solr/conf/solrconfig.xml +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - - - - - - false - 10 - 1000 - 2147483647 - 10000 - - - 1000 - 10000 - - - - - - false - 10 - 1000 - 2147483647 - 10000 - - true - - - - - - - 10000 - 3600 - - - - 0 - - - - - - - - - - - 1024 - - - - - - - - - - - - - true - - 10 - - - - - - - - - - - - - - - - - - - - - - - - - - 1000 - 1.4142135 - 12 - foo - - - sqrt 2 - log 10 - - - - - - - solr - solrconfig.xml scheam.xml admin-extra.html - - - - - diff --git a/src/apps/SolrTest/solr/conf/stopwords.txt b/src/apps/SolrTest/solr/conf/stopwords.txt deleted file mode 100644 index 688e3075431..00000000000 --- a/src/apps/SolrTest/solr/conf/stopwords.txt +++ /dev/null @@ -1,16 +0,0 @@ -# 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. -stopworda -stopwordb diff --git a/src/apps/SolrTest/solr/conf/synonyms.txt b/src/apps/SolrTest/solr/conf/synonyms.txt deleted file mode 100644 index 1f581246677..00000000000 --- a/src/apps/SolrTest/solr/conf/synonyms.txt +++ /dev/null @@ -1,20 +0,0 @@ -# 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. -a => aa -b => b1 b2 -c => c1,c2 -a\=>a => b\=>b -a\,a => b\,b -foo,bar,baz diff --git a/src/apps/SolrTest/src/SolrTest.java b/src/apps/SolrTest/src/SolrTest.java deleted file mode 100644 index ce6e51ba561..00000000000 --- a/src/apps/SolrTest/src/SolrTest.java +++ /dev/null @@ -1,398 +0,0 @@ -/** - * 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. - */ - -import org.apache.solr.core.SolrCore; -import org.apache.solr.schema.IndexSchema; -import org.apache.solr.request.*; - - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.xpath.XPath; -import javax.xml.xpath.XPathFactory; -import javax.xml.xpath.XPathConstants; -import java.io.*; -import java.util.*; -import java.util.logging.Logger; -import java.util.logging.Level; -import java.util.logging.Handler; -import java.util.logging.ConsoleHandler; - -import org.w3c.dom.Document; - - -/** - * User: Yonik Seeley - * Date: Aug 16, 2004 - */ -public class SolrTest extends Thread { - static SolrCore core; - - static String[] requestDict; - static String[] updateDict; - static String[] testDict; - static List testDictLineno; - - static List lineno; - public static String[] readDict(String filename) throws IOException { - BufferedReader br = new BufferedReader(new FileReader(filename)); - ArrayList lst = new ArrayList(1024); - lineno = new ArrayList(1024); - String line; - int lineNum=0; - while ((line = br.readLine())!=null) { - lineNum++; - if (line.length() <= 1) continue; - lst.add(line); - lineno.add(lineNum); - } - br.close(); - return (String[]) lst.toArray(new String[lst.size()]); - } - - - public static boolean verbose=false; - static boolean doValidate=true; - - static int countdown; - static synchronized boolean runAgain() { - return countdown-- > 0; - } - - - // statistics per client - int numReq=0; - int numErr=0; - int numBodyChars=0; - - boolean isWriter=false; - boolean sequenceTest=false; - - public void run() { - - if (sequenceTest) { - try { - for (int i=0; i 0) { - endQuery = startParams; - endParams = s.length(); - } - int startTests = s.indexOf('%', startParams+2); - if (startTests > 0) { - if (endQuery == s.length()) endQuery = startTests; - endParams = startTests; - } - - req = s.substring(0,endQuery).trim(); - if (startParams > 0) params = s.substring(startParams+2,endParams).trim(); - if (startTests > 0) test = s.substring(startTests+1,endTests).trim(); - - // System.out.println("###req=" + req); - // System.out.println("###params=" + params); - // System.out.println("###tests=" + test); - - if (req.startsWith("<")) { - resp = doUpdate(req); - } else { - resp = doReq(req,params); - } - if (doValidate) { - validate(req,test,resp); - } else { - System.out.println("#### no validation performed"); - } - } - } catch (RuntimeException e) { - numErr++; - throw(e); - } - - System.out.println(">>>>>>>>>>>>>>>>>>>>>>>> SUCCESS <<<<<<<<<<<<<<<<<<<<<<<<<<"); - } - - else { - while(runAgain()) { - if (isWriter) doUpdate(updateDict[(int)(Math.random()*updateDict.length)]); - else doReq(requestDict[(int)(Math.random()*requestDict.length)], null); - } - } - } - - private DocumentBuilder builder; - private XPath xpath = XPathFactory.newInstance().newXPath(); - { - try { - builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); - } catch (ParserConfigurationException e) { - e.printStackTrace(); - } - } - - private void validate(String req, String test, char[] resp) { - if (test==null || test.length()==0) return; - Document document=null; - try { - // the resp[] contains a declaration that it is UTF-8, so we - // need to change it to that for the XML parser. - - document = builder.parse(new ByteArrayInputStream(new String(resp).getBytes("UTF-8"))); - // document = builder.parse(new String(resp)); - } catch (Exception e) { - System.out.println("ERROR parsing '" + new String(resp) + "'"); - throw new RuntimeException(e); - } - - String[] tests = test.split("%"); - for (String xp : tests) { - Boolean bool=false; - xp=xp.trim(); - try { - bool = (Boolean) xpath.evaluate(xp, document, XPathConstants.BOOLEAN); - } catch (Exception e) { - System.out.println("##################ERROR EVALUATING XPATH '" + xp + "'"); - throw new RuntimeException(e); - } - if (!bool) { - System.out.println("##################ERROR"); - System.out.println("req="+req); - System.out.println("xp="+xp); - throw new RuntimeException("test failed."); - } - } - - } - - - public char[] doUpdate(String req) { - try { - // String lucene=updateDict[(int)(Math.random()*updateDict.length)]; - String lucene=req; - StringReader ureq = new StringReader(lucene); - CharArrayWriter writer = new CharArrayWriter(32000); - core.update(ureq, writer); - if (verbose) System.out.println("UPDATE RESPONSE:'" + writer + "'"); - // if (verbose) System.out.println("BODY chars read:" + writer.size()); - this.numBodyChars+=writer.size(); - this.numReq++; - return writer.toCharArray(); - } catch (Exception e) { - this.numErr++; - e.printStackTrace(); - } - return null; - } - - - static XMLResponseWriter xmlwriter = new XMLResponseWriter(); - static SolrRequestHandler handler = - // new OldRequestHandler(); - new StandardRequestHandler(); - static String qargs = null; // default query arguments - - public char[] doReq(String req, String params) { - int start=0; - int limit=10; - String handler="standard"; - //handler="test"; - - - Map args = new HashMap(); - args.put("indent", "on"); - args.put("debugQuery", "on"); - args.put("version", "2.0"); - - - if (qargs != null) { - if (params==null) params=qargs; - else params = qargs + '&' + params; - } - - if (params != null) { - String[] plist = params.split("&"); - for (String decl : plist) { - String[] nv = decl.split("="); - if (nv.length==1) { - nv = new String[] { nv[0], "" }; - } - if (nv[0].equals("start")) { - start=Integer.parseInt(nv[1]); - } - else if (nv[0].equals("limit")) { - limit=Integer.parseInt(nv[1]); - } - else if (nv[0].equals("qt")) { - handler = nv[1]; - } else { - args.put(nv[0], nv[1]); - } - } - } - - try { - // String lucene=requestDict[(int)(Math.random()*requestDict.length)]; - String lucene=req; - CharArrayWriter writer = new CharArrayWriter(32000); - - System.out.println("start="+start+" limit="+limit+" handler="+handler); - LocalSolrQueryRequest qreq = new LocalSolrQueryRequest(core,lucene,handler,start,limit,args); - SolrQueryResponse qrsp = new SolrQueryResponse(); - try { - core.execute(qreq,qrsp); - if (qrsp.getException() != null) throw qrsp.getException(); - // handler.handleRequest(qreq,qrsp); - xmlwriter.write(writer,qreq,qrsp); - } finally { - qreq.close(); - } - if (verbose) System.out.println("GOT:'" + writer + "'"); - if (verbose) System.out.println("BODY chars read:" + writer.size()); - this.numBodyChars+=writer.size(); - this.numReq++; - return writer.toCharArray(); - } catch (Exception e) { - this.numErr++; - e.printStackTrace(); - } - return null; - } - - - - public static void main(String[] args) throws Exception { - int readers=1; - int requests=1; - int writers=0; - - Logger log = Logger.getLogger("org.apache.solr"); - log.setUseParentHandlers(false); - log.setLevel(Level.FINEST); - Handler handler = new ConsoleHandler(); - handler.setLevel(Level.FINEST); - log.addHandler(handler); - - String filename="dict.txt"; - String updateFilename="update_dict.txt"; - String dataDir =null; - String schemaFile=null; - String testFile=null; - - boolean b_numUpdates=false; boolean b_writers=false; - - int i=0; String arg; - while (i < args.length && args[i].startsWith("-")) { - arg = args[i++]; - if (arg.equals("-verbose")) { - verbose=true; - } else if (arg.equals("-dict")) { - filename=args[i++]; - } else if (arg.equals("-data")) { - dataDir =args[i++]; - } else if (arg.equals("-readers")) { - readers=Integer.parseInt(args[i++]); - } else if (arg.equals("-numRequests")) { - requests=Integer.parseInt(args[i++]); - } else if (arg.equals("-writers")) { - writers=Integer.parseInt(args[i++]); - b_writers=true; - } else if (arg.equals("-schema")) { - schemaFile=args[i++]; - } else if (arg.equals("-test")) { - testFile=args[i++]; - } else if (arg.equals("-noValidate")) { - doValidate=false; - } else if (arg.equals("-qargs")) { - qargs=args[i++]; - } else { - System.out.println("Unknown option: " + arg); - return; - } - } - - try { - - IndexSchema schema = schemaFile==null ? null : new IndexSchema(schemaFile); - countdown = requests; - core=new SolrCore(dataDir,schema); - - try { - if (testFile != null) { - testDict = readDict(testFile); - testDictLineno = lineno; - } else { - if (readers > 0) requestDict = readDict(filename); - if (writers > 0) updateDict = readDict(updateFilename); - } - } catch (IOException e) { - e.printStackTrace(); - System.out.println("Can't read "+filename); - return; - } - - SolrTest[] clients = new SolrTest[readers+writers]; - for (i=0; i>>>>>>>>>>>>>>>>>>>>>>> SUCCESS <<<<<<<<<<<<<<<<<<<<<<<<<<"); - } else { - System.exit(1); - } - } - - } catch (Throwable e) { - if (core!=null) {try{core.close();} catch (Throwable th){}} - e.printStackTrace(); - System.exit(1); - } - - - } - -} diff --git a/src/apps/SolrTest/test_func.txt b/src/apps/SolrTest/test_func.txt deleted file mode 100644 index 744d2049ce9..00000000000 --- a/src/apps/SolrTest/test_func.txt +++ /dev/null @@ -1,66 +0,0 @@ -# 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. - -id:[* TO *] - - -id[0 TO 9] - - -3 -1 -7 -0 -5 - - -_val_:"linear(id,2,3)" -+id:[ 0 TO 5 ] +_val_:"linear(id,2,3)"^0.1 -+id:[ 0 TO 5 ] +_val_:"linear(rord(id),2,3)"^0.1 -+id:[ 0 TO 5 ] +_val_:"recip(rord(id),2,3,4)"^0.1 -+id:[ 0 TO 5 ] +_val_:"linear(linear(rord(id),6,5),2,3)"^0.1 - -#id:[0 TO 9] -# - -weight:[* TO *] - - -103 -111 -127 -130 -145 - - -+id:[10 TO 14] +_val_:weight^2 -+id:[10 TO 14] +_val_:"ord(weight)"^2 -+id:[10 TO 14] +_val_:"rord(weight)"^2 - -#+id:[10 TO 14] +weight:_int_^2 -#+id:[10 TO 14] +weight:_ord_^2 -#+id:[10 TO 14] +weight:_rord_^2 - -102 -113.14159 -12900 -13.1 -142005-01-01T01:01:01Z - -_val_:q_i %%fl=score %//@maxScore = //doc/float[@name="score"] %//doc/float[@name="score"] = "2.0" -_val_:q_f %%fl=score %//@maxScore = //doc/float[@name="score"] %//doc/float[@name="score"] = "3.14159" -_val_:q_l %%fl=score %//@maxScore = //doc/float[@name="score"] %//doc/float[@name="score"] = "900.0" -_val_:q_d %%fl=score %//@maxScore = //doc/float[@name="score"] %//doc/float[@name="score"] = "0.1" -_val_:q_dt %%fl=score %//@maxScore = //doc/float[@name="score"] %//doc/float[@name="score"] = "1.0"