From 5fba8ae2b4e8411fcd849d7813bd4dd4d221b508 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Sun, 22 Apr 2012 00:07:15 +0000 Subject: [PATCH] LUCENE-4007: Forrest Chainsaw Massacre git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/trunk@1328748 13f79535-47bb-0310-9956-ffa450edef68 --- lucene/build.xml | 46 +- lucene/common-build.xml | 2 +- lucene/index.html | 8 - lucene/module-build.xml | 8 - .../lucene/queryparser/classic/package.html | 267 ++ lucene/site/build/site/.htaccess | 3 - lucene/site/build/site/broken-links.xml | 2 - lucene/site/build/site/contributions.html | 756 ----- lucene/site/build/site/demo.html | 372 --- lucene/site/build/site/demo2.html | 421 --- lucene/site/build/site/fileformats.html | 2648 ----------------- lucene/site/build/site/gettingstarted.html | 310 -- .../site/images/built-with-forrest-button.png | Bin 1936 -> 0 bytes lucene/site/build/site/images/favicon.ico | Bin 3638 -> 0 bytes .../build/site/images/instruction_arrow.png | Bin 285 -> 0 bytes lucene/site/build/site/index.html | 280 -- lucene/site/build/site/linkmap.html | 501 ---- .../site/build/site/lucene-contrib/index.html | 420 --- lucene/site/build/site/queryparsersyntax.html | 536 ---- .../build/site/skin/CommonMessages_de.xml | 23 - .../build/site/skin/CommonMessages_en_US.xml | 23 - .../build/site/skin/CommonMessages_es.xml | 23 - .../build/site/skin/CommonMessages_fr.xml | 23 - lucene/site/build/site/skin/basic.css | 166 -- .../build/site/skin/breadcrumbs-optimized.js | 90 - lucene/site/build/site/skin/breadcrumbs.js | 237 -- lucene/site/build/site/skin/fontsize.js | 166 -- lucene/site/build/site/skin/getBlank.js | 40 - lucene/site/build/site/skin/getMenu.js | 45 - lucene/site/build/site/skin/images/README.txt | 1 - lucene/site/build/site/skin/images/add.jpg | Bin 1142 -> 0 bytes .../build/site/skin/images/apache-thanks.png | Bin 4840 -> 0 bytes .../site/skin/images/built-with-cocoon.gif | Bin 2252 -> 0 bytes .../skin/images/built-with-forrest-button.png | Bin 1936 -> 0 bytes .../site/build/site/skin/images/chapter.gif | Bin 49 -> 0 bytes .../site/skin/images/corner-imports.svg.xslt | 92 - .../site/build/site/skin/images/current.gif | Bin 54 -> 0 bytes .../site/build/site/skin/images/dc.svg.xslt | 28 - .../build/site/skin/images/external-link.gif | Bin 71 -> 0 bytes lucene/site/build/site/skin/images/fix.jpg | Bin 932 -> 0 bytes .../site/skin/images/forrest-credit-logo.png | Bin 4633 -> 0 bytes lucene/site/build/site/skin/images/hack.jpg | Bin 743 -> 0 bytes lucene/site/build/site/skin/images/page.gif | Bin 79 -> 0 bytes lucene/site/build/site/skin/images/pdfdoc.gif | Bin 457 -> 0 bytes lucene/site/build/site/skin/images/poddoc.png | Bin 856 -> 0 bytes .../build/site/skin/images/poddoc.svg.xslt | 55 - .../site/build/site/skin/images/printer.gif | Bin 438 -> 0 bytes .../images/rc-b-l-15-1body-2menu-3menu.png | Bin 348 -> 0 bytes .../images/rc-b-r-15-1body-2menu-3menu.png | Bin 319 -> 0 bytes ...-5-1header-2tab-selected-3tab-selected.png | Bin 200 -> 0 bytes ...rc-t-l-5-1header-2searchbox-3searchbox.png | Bin 199 -> 0 bytes ...-5-1header-2tab-selected-3tab-selected.png | Bin 209 -> 0 bytes ...header-2tab-unselected-3tab-unselected.png | Bin 199 -> 0 bytes .../images/rc-t-r-15-1body-2menu-3menu.png | Bin 390 -> 0 bytes ...rc-t-r-5-1header-2searchbox-3searchbox.png | Bin 214 -> 0 bytes ...-5-1header-2tab-selected-3tab-selected.png | Bin 215 -> 0 bytes ...header-2tab-unselected-3tab-unselected.png | Bin 214 -> 0 bytes .../site/build/site/skin/images/rc.svg.xslt | 27 - lucene/site/build/site/skin/images/remove.jpg | Bin 1251 -> 0 bytes lucene/site/build/site/skin/images/rss.png | Bin 360 -> 0 bytes lucene/site/build/site/skin/images/spacer.gif | Bin 43 -> 0 bytes lucene/site/build/site/skin/images/txtdoc.png | Bin 784 -> 0 bytes .../build/site/skin/images/txtdoc.svg.xslt | 55 - lucene/site/build/site/skin/images/update.jpg | Bin 990 -> 0 bytes .../build/site/skin/images/valid-html401.png | Bin 2948 -> 0 bytes lucene/site/build/site/skin/images/vcss.png | Bin 1134 -> 0 bytes lucene/site/build/site/skin/images/xmldoc.gif | Bin 647 -> 0 bytes lucene/site/build/site/skin/menu.js | 48 - lucene/site/build/site/skin/note.txt | 50 - lucene/site/build/site/skin/print.css | 54 - lucene/site/build/site/skin/profile.css | 175 -- lucene/site/build/site/skin/prototype.js | 1257 -------- lucene/site/build/site/skin/screen.css | 587 ---- lucene/site/build/site/skin/skinconf.xsl | 137 - .../site/build/site/systemrequirements.html | 299 -- lucene/site/forrest.properties | 130 - lucene/site/html/demo.html | 72 + lucene/site/html/demo2.html | 148 + lucene/site/html/fileformats.html | 1120 +++++++ lucene/site/html/lucene_green_300.gif | Bin 0 -> 2231 bytes lucene/site/{build/site => html}/scoring.html | 361 +-- .../classes/CatalogManager.properties | 57 - lucene/site/src/documentation/conf/cli.xconf | 322 -- .../site/src/documentation/content/.htaccess | 3 - .../content/xdocs/contributions.xml | 350 --- .../src/documentation/content/xdocs/demo.xml | 79 - .../src/documentation/content/xdocs/demo2.xml | 154 - .../content/xdocs/fileformats.xml | 1934 ------------ .../content/xdocs/gettingstarted.xml | 41 - .../content/xdocs/images/asf-logo.gif | Bin 7279 -> 0 bytes .../content/xdocs/images/chapter.gif | Bin 49 -> 0 bytes .../content/xdocs/images/current.gif | Bin 54 -> 0 bytes .../content/xdocs/images/favicon.ico | Bin 3638 -> 0 bytes .../xdocs/images/instruction_arrow.png | Bin 285 -> 0 bytes .../xdocs/images/larm_architecture.jpg | Bin 44476 -> 0 bytes .../xdocs/images/larm_crawling-process.jpg | Bin 24922 -> 0 bytes .../content/xdocs/images/lia_3d.jpg | Bin 4393 -> 0 bytes .../content/xdocs/images/lucene_green_100.gif | Bin 696 -> 0 bytes .../content/xdocs/images/lucene_green_150.gif | Bin 1113 -> 0 bytes .../content/xdocs/images/lucene_green_200.gif | Bin 1481 -> 0 bytes .../content/xdocs/images/lucene_green_250.gif | Bin 1816 -> 0 bytes .../content/xdocs/images/lucene_green_300.gif | Bin 2155 -> 0 bytes .../xdocs/images/lucene_outline_100.gif | Bin 515 -> 0 bytes .../xdocs/images/lucene_outline_150.gif | Bin 895 -> 0 bytes .../xdocs/images/lucene_outline_200.gif | Bin 1210 -> 0 bytes .../xdocs/images/lucene_outline_250.gif | Bin 1534 -> 0 bytes .../xdocs/images/lucene_outline_300.gif | Bin 1832 -> 0 bytes .../content/xdocs/images/page.gif | Bin 79 -> 0 bytes .../src/documentation/content/xdocs/index.xml | 16 - .../content/xdocs/queryparsersyntax.xml | 239 -- .../documentation/content/xdocs/scoring.xml | 277 -- .../src/documentation/content/xdocs/site.xml | 140 - .../content/xdocs/systemrequirements.xml | 27 - .../src/documentation/content/xdocs/tabs.xml | 64 - lucene/site/src/documentation/skinconf.xml | 404 --- .../skins/common/css/forrest.css.xslt | 78 - .../skins/common/images/README.txt | 1 - .../skins/common/images/chapter.gif | Bin 49 -> 0 bytes .../common/images/corner-imports.svg.xslt | 92 - .../skins/common/images/current.gif | Bin 54 -> 0 bytes .../skins/common/images/dc.svg.xslt | 28 - .../skins/common/images/page.gif | Bin 79 -> 0 bytes .../skins/common/images/poddoc.svg.xslt | 55 - .../skins/common/images/rc.svg.xslt | 27 - .../skins/common/images/txtdoc.svg.xslt | 55 - .../common/scripts/breadcrumbs-optimized.js | 90 - .../skins/common/scripts/breadcrumbs.js | 237 -- .../skins/common/scripts/fontsize.js | 166 -- .../skins/common/scripts/getBlank.js | 40 - .../skins/common/scripts/getMenu.js | 45 - .../skins/common/scripts/menu.js | 48 - .../skins/common/scripts/prototype.js | 1257 -------- .../documentation/skins/common/skinconf.xsl | 238 -- .../common/translations/CommonMessages_de.xml | 23 - .../translations/CommonMessages_en_US.xml | 23 - .../common/translations/CommonMessages_es.xml | 23 - .../common/translations/CommonMessages_fr.xml | 23 - .../skins/common/xslt/fo/document-to-fo.xsl | 1014 ------- .../skins/common/xslt/fo/footerinfo.xsl | 70 - .../skins/common/xslt/fo/pdfoutline.xsl | 45 - .../skins/common/xslt/html/book-to-menu.xsl | 139 - .../common/xslt/html/document-to-html.xsl | 374 --- .../skins/common/xslt/html/dotdots.xsl | 73 - .../skins/common/xslt/html/pathutils.xsl | 231 -- .../skins/common/xslt/html/renderlogo.xsl | 67 - .../skins/common/xslt/html/site-to-xhtml.xsl | 388 --- .../skins/common/xslt/html/split.xsl | 124 - .../common/xslt/html/strip_namespaces.xsl | 39 - .../skins/common/xslt/html/tab-to-menu.xsl | 195 -- .../skins/common/xslt/html/tabutils.xsl | 98 - .../skins/common/xslt/svg/document-to-svg.xsl | 45 - .../documentation/skins/lucene/css/basic.css | 166 -- .../documentation/skins/lucene/css/print.css | 54 - .../skins/lucene/css/profile.css.xslt | 182 -- .../documentation/skins/lucene/css/screen.css | 587 ---- .../src/documentation/skins/lucene/note.txt | 50 - .../documentation/skins/lucene/skinconf.xsl | 137 - .../skins/lucene/xslt/fo/document-to-fo.xsl | 22 - .../skins/lucene/xslt/html/book-to-menu.xsl | 53 - .../lucene/xslt/html/document-to-html.xsl | 154 - .../skins/lucene/xslt/html/site-to-xhtml.xsl | 821 ----- .../skins/lucene/xslt/html/tab-to-menu.xsl | 66 - lucene/site/xsl/index.xsl | 94 + solr/common-build.xml | 6 +- 164 files changed, 1775 insertions(+), 22287 deletions(-) delete mode 100644 lucene/index.html delete mode 100644 lucene/site/build/site/.htaccess delete mode 100644 lucene/site/build/site/broken-links.xml delete mode 100644 lucene/site/build/site/contributions.html delete mode 100644 lucene/site/build/site/demo.html delete mode 100644 lucene/site/build/site/demo2.html delete mode 100644 lucene/site/build/site/fileformats.html delete mode 100644 lucene/site/build/site/gettingstarted.html delete mode 100644 lucene/site/build/site/images/built-with-forrest-button.png delete mode 100644 lucene/site/build/site/images/favicon.ico delete mode 100644 lucene/site/build/site/images/instruction_arrow.png delete mode 100644 lucene/site/build/site/index.html delete mode 100644 lucene/site/build/site/linkmap.html delete mode 100644 lucene/site/build/site/lucene-contrib/index.html delete mode 100644 lucene/site/build/site/queryparsersyntax.html delete mode 100644 lucene/site/build/site/skin/CommonMessages_de.xml delete mode 100644 lucene/site/build/site/skin/CommonMessages_en_US.xml delete mode 100644 lucene/site/build/site/skin/CommonMessages_es.xml delete mode 100644 lucene/site/build/site/skin/CommonMessages_fr.xml delete mode 100644 lucene/site/build/site/skin/basic.css delete mode 100644 lucene/site/build/site/skin/breadcrumbs-optimized.js delete mode 100644 lucene/site/build/site/skin/breadcrumbs.js delete mode 100644 lucene/site/build/site/skin/fontsize.js delete mode 100644 lucene/site/build/site/skin/getBlank.js delete mode 100644 lucene/site/build/site/skin/getMenu.js delete mode 100644 lucene/site/build/site/skin/images/README.txt delete mode 100644 lucene/site/build/site/skin/images/add.jpg delete mode 100644 lucene/site/build/site/skin/images/apache-thanks.png delete mode 100644 lucene/site/build/site/skin/images/built-with-cocoon.gif delete mode 100644 lucene/site/build/site/skin/images/built-with-forrest-button.png delete mode 100644 lucene/site/build/site/skin/images/chapter.gif delete mode 100644 lucene/site/build/site/skin/images/corner-imports.svg.xslt delete mode 100644 lucene/site/build/site/skin/images/current.gif delete mode 100644 lucene/site/build/site/skin/images/dc.svg.xslt delete mode 100644 lucene/site/build/site/skin/images/external-link.gif delete mode 100644 lucene/site/build/site/skin/images/fix.jpg delete mode 100644 lucene/site/build/site/skin/images/forrest-credit-logo.png delete mode 100644 lucene/site/build/site/skin/images/hack.jpg delete mode 100644 lucene/site/build/site/skin/images/page.gif delete mode 100644 lucene/site/build/site/skin/images/pdfdoc.gif delete mode 100644 lucene/site/build/site/skin/images/poddoc.png delete mode 100644 lucene/site/build/site/skin/images/poddoc.svg.xslt delete mode 100644 lucene/site/build/site/skin/images/printer.gif delete mode 100644 lucene/site/build/site/skin/images/rc-b-l-15-1body-2menu-3menu.png delete mode 100644 lucene/site/build/site/skin/images/rc-b-r-15-1body-2menu-3menu.png delete mode 100644 lucene/site/build/site/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png delete mode 100644 lucene/site/build/site/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png delete mode 100644 lucene/site/build/site/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png delete mode 100644 lucene/site/build/site/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png delete mode 100644 lucene/site/build/site/skin/images/rc-t-r-15-1body-2menu-3menu.png delete mode 100644 lucene/site/build/site/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png delete mode 100644 lucene/site/build/site/skin/images/rc-t-r-5-1header-2tab-selected-3tab-selected.png delete mode 100644 lucene/site/build/site/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png delete mode 100644 lucene/site/build/site/skin/images/rc.svg.xslt delete mode 100644 lucene/site/build/site/skin/images/remove.jpg delete mode 100644 lucene/site/build/site/skin/images/rss.png delete mode 100644 lucene/site/build/site/skin/images/spacer.gif delete mode 100644 lucene/site/build/site/skin/images/txtdoc.png delete mode 100644 lucene/site/build/site/skin/images/txtdoc.svg.xslt delete mode 100644 lucene/site/build/site/skin/images/update.jpg delete mode 100644 lucene/site/build/site/skin/images/valid-html401.png delete mode 100644 lucene/site/build/site/skin/images/vcss.png delete mode 100644 lucene/site/build/site/skin/images/xmldoc.gif delete mode 100644 lucene/site/build/site/skin/menu.js delete mode 100644 lucene/site/build/site/skin/note.txt delete mode 100644 lucene/site/build/site/skin/print.css delete mode 100644 lucene/site/build/site/skin/profile.css delete mode 100644 lucene/site/build/site/skin/prototype.js delete mode 100644 lucene/site/build/site/skin/screen.css delete mode 100644 lucene/site/build/site/skin/skinconf.xsl delete mode 100644 lucene/site/build/site/systemrequirements.html delete mode 100755 lucene/site/forrest.properties create mode 100644 lucene/site/html/demo.html create mode 100644 lucene/site/html/demo2.html create mode 100644 lucene/site/html/fileformats.html create mode 100644 lucene/site/html/lucene_green_300.gif rename lucene/site/{build/site => html}/scoring.html (53%) delete mode 100755 lucene/site/src/documentation/classes/CatalogManager.properties delete mode 100644 lucene/site/src/documentation/conf/cli.xconf delete mode 100644 lucene/site/src/documentation/content/.htaccess delete mode 100644 lucene/site/src/documentation/content/xdocs/contributions.xml delete mode 100644 lucene/site/src/documentation/content/xdocs/demo.xml delete mode 100644 lucene/site/src/documentation/content/xdocs/demo2.xml delete mode 100644 lucene/site/src/documentation/content/xdocs/fileformats.xml delete mode 100644 lucene/site/src/documentation/content/xdocs/gettingstarted.xml delete mode 100644 lucene/site/src/documentation/content/xdocs/images/asf-logo.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/chapter.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/current.gif delete mode 100755 lucene/site/src/documentation/content/xdocs/images/favicon.ico delete mode 100644 lucene/site/src/documentation/content/xdocs/images/instruction_arrow.png delete mode 100644 lucene/site/src/documentation/content/xdocs/images/larm_architecture.jpg delete mode 100644 lucene/site/src/documentation/content/xdocs/images/larm_crawling-process.jpg delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lia_3d.jpg delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_green_100.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_green_150.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_green_200.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_green_250.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_green_300.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_outline_100.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_outline_150.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_outline_200.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_outline_250.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/lucene_outline_300.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/images/page.gif delete mode 100644 lucene/site/src/documentation/content/xdocs/index.xml delete mode 100644 lucene/site/src/documentation/content/xdocs/queryparsersyntax.xml delete mode 100644 lucene/site/src/documentation/content/xdocs/scoring.xml delete mode 100755 lucene/site/src/documentation/content/xdocs/site.xml delete mode 100644 lucene/site/src/documentation/content/xdocs/systemrequirements.xml delete mode 100755 lucene/site/src/documentation/content/xdocs/tabs.xml delete mode 100755 lucene/site/src/documentation/skinconf.xml delete mode 100644 lucene/site/src/documentation/skins/common/css/forrest.css.xslt delete mode 100644 lucene/site/src/documentation/skins/common/images/README.txt delete mode 100644 lucene/site/src/documentation/skins/common/images/chapter.gif delete mode 100644 lucene/site/src/documentation/skins/common/images/corner-imports.svg.xslt delete mode 100644 lucene/site/src/documentation/skins/common/images/current.gif delete mode 100644 lucene/site/src/documentation/skins/common/images/dc.svg.xslt delete mode 100644 lucene/site/src/documentation/skins/common/images/page.gif delete mode 100644 lucene/site/src/documentation/skins/common/images/poddoc.svg.xslt delete mode 100644 lucene/site/src/documentation/skins/common/images/rc.svg.xslt delete mode 100644 lucene/site/src/documentation/skins/common/images/txtdoc.svg.xslt delete mode 100644 lucene/site/src/documentation/skins/common/scripts/breadcrumbs-optimized.js delete mode 100644 lucene/site/src/documentation/skins/common/scripts/breadcrumbs.js delete mode 100644 lucene/site/src/documentation/skins/common/scripts/fontsize.js delete mode 100644 lucene/site/src/documentation/skins/common/scripts/getBlank.js delete mode 100644 lucene/site/src/documentation/skins/common/scripts/getMenu.js delete mode 100644 lucene/site/src/documentation/skins/common/scripts/menu.js delete mode 100644 lucene/site/src/documentation/skins/common/scripts/prototype.js delete mode 100644 lucene/site/src/documentation/skins/common/skinconf.xsl delete mode 100644 lucene/site/src/documentation/skins/common/translations/CommonMessages_de.xml delete mode 100644 lucene/site/src/documentation/skins/common/translations/CommonMessages_en_US.xml delete mode 100644 lucene/site/src/documentation/skins/common/translations/CommonMessages_es.xml delete mode 100644 lucene/site/src/documentation/skins/common/translations/CommonMessages_fr.xml delete mode 100644 lucene/site/src/documentation/skins/common/xslt/fo/document-to-fo.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/fo/footerinfo.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/fo/pdfoutline.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/book-to-menu.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/document-to-html.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/dotdots.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/pathutils.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/renderlogo.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/site-to-xhtml.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/split.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/strip_namespaces.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/tab-to-menu.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/html/tabutils.xsl delete mode 100644 lucene/site/src/documentation/skins/common/xslt/svg/document-to-svg.xsl delete mode 100644 lucene/site/src/documentation/skins/lucene/css/basic.css delete mode 100644 lucene/site/src/documentation/skins/lucene/css/print.css delete mode 100644 lucene/site/src/documentation/skins/lucene/css/profile.css.xslt delete mode 100644 lucene/site/src/documentation/skins/lucene/css/screen.css delete mode 100644 lucene/site/src/documentation/skins/lucene/note.txt delete mode 100644 lucene/site/src/documentation/skins/lucene/skinconf.xsl delete mode 100644 lucene/site/src/documentation/skins/lucene/xslt/fo/document-to-fo.xsl delete mode 100644 lucene/site/src/documentation/skins/lucene/xslt/html/book-to-menu.xsl delete mode 100644 lucene/site/src/documentation/skins/lucene/xslt/html/document-to-html.xsl delete mode 100644 lucene/site/src/documentation/skins/lucene/xslt/html/site-to-xhtml.xsl delete mode 100644 lucene/site/src/documentation/skins/lucene/xslt/html/tab-to-menu.xsl create mode 100644 lucene/site/xsl/index.xsl diff --git a/lucene/build.xml b/lucene/build.xml index 9237ac38732..a4266e49f89 100644 --- a/lucene/build.xml +++ b/lucene/build.xml @@ -174,18 +174,6 @@ - - - - - - - - - - - - @@ -195,20 +183,26 @@ + - - -${Name} ${version} Javadoc Index - -

${Name} ${version} Javadoc Index

-
    -
  • core: Lucene core library
  • -
  • test-framework: Framework for testing Lucene-based applications
  • -]]> - - ]]> + + + + + + + + + + + + + + + + + @@ -230,7 +224,7 @@ - + diff --git a/lucene/common-build.xml b/lucene/common-build.xml index b031c069a55..55d8c5a447e 100644 --- a/lucene/common-build.xml +++ b/lucene/common-build.xml @@ -124,7 +124,7 @@ - + diff --git a/lucene/index.html b/lucene/index.html deleted file mode 100644 index 3a8db58c18f..00000000000 --- a/lucene/index.html +++ /dev/null @@ -1,8 +0,0 @@ - - - Redirecting to docs... - - - - - diff --git a/lucene/module-build.xml b/lucene/module-build.xml index 4f6f98fbaa8..290da915d56 100644 --- a/lucene/module-build.xml +++ b/lucene/module-build.xml @@ -90,14 +90,6 @@ - - - -${name}: ${project.description} -]]> - - diff --git a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/package.html b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/package.html index d4aaf7bc034..a90afa31290 100644 --- a/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/package.html +++ b/lucene/queryparser/src/java/org/apache/lucene/queryparser/classic/package.html @@ -31,5 +31,272 @@ must always be fully qualified in source code in this package.

    NOTE: {@link org.apache.lucene.queryparser.flexible.standard} has an alternative queryparser that matches the syntax of this one, but is more modular, enabling substantial customization to how a query is created. +

    Query Parser Syntax

    + + + + +

    Overview

    +
    +

    Although Lucene provides the ability to create your own + queries through its API, it also provides a rich query + language through the Query Parser, a lexer which + interprets a string into a Lucene Query using JavaCC. +

    +

    Generally, the query parser syntax may change from + release to release. This page describes the syntax as of + the current release. If you are using a different + version of Lucene, please consult the copy of + docs/queryparsersyntax.html that was distributed + with the version you are using. +

    +

    + Before choosing to use the provided Query Parser, please consider the following: +

      + +
    1. If you are programmatically generating a query string and then + parsing it with the query parser then you should seriously consider building + your queries directly with the query API. In other words, the query + parser is designed for human-entered text, not for program-generated + text.
    2. + + +
    3. Untokenized fields are best added directly to queries, and not + through the query parser. If a field's values are generated programmatically + by the application, then so should query clauses for this field. + An analyzer, which the query parser uses, is designed to convert human-entered + text to terms. Program-generated values, like dates, keywords, etc., + should be consistently program-generated.
    4. + + +
    5. In a query form, fields which are general text should use the query + parser. All others, such as date ranges, keywords, etc. are better added + directly through the query API. A field with a limit set of values, + that can be specified with a pull-down menu should not be added to a + query string which is subsequently parsed, but rather added as a + TermQuery clause.
    6. + +
    + +

    +
    + + + +

    Terms

    +
    +

    A query is broken up into terms and operators. There are two types of terms: Single Terms and Phrases.

    +

    A Single Term is a single word such as "test" or "hello".

    +

    A Phrase is a group of words surrounded by double quotes such as "hello dolly".

    +

    Multiple terms can be combined together with Boolean operators to form a more complex query (see below).

    +

    Note: The analyzer used to create the index will be used on the terms and phrases in the query string. + So it is important to choose an analyzer that will not interfere with the terms used in the query string.

    +
    + + + +

    Fields

    +
    +

    Lucene supports fielded data. When performing a search you can either specify a field, or use the default field. The field names and default field is implementation specific.

    +

    You can search any field by typing the field name followed by a colon ":" and then the term you are looking for.

    +

    As an example, let's assume a Lucene index contains two fields, title and text and text is the default field. + If you want to find the document entitled "The Right Way" which contains the text "don't go this way", you can enter:

    +
    title:"The Right Way" AND text:go
    +

    or

    +
    title:"Do it right" AND right
    +

    Since text is the default field, the field indicator is not required.

    +

    Note: The field is only valid for the term that it directly precedes, so the query

    +
    title:Do it right
    +

    Will only find "Do" in the title field. It will find "it" and "right" in the default field (in this case the text field).

    +
    + + + +

    Term Modifiers

    +
    +

    Lucene supports modifying query terms to provide a wide range of searching options.

    + +

    Wildcard Searches

    +

    Lucene supports single and multiple character wildcard searches within single terms + (not within phrase queries).

    +

    To perform a single character wildcard search use the "?" symbol.

    +

    To perform a multiple character wildcard search use the "*" symbol.

    +

    The single character wildcard search looks for terms that match that with the single character replaced. For example, to search for "text" or "test" you can use the search:

    +
    te?t
    +

    Multiple character wildcard searches looks for 0 or more characters. For example, to search for test, tests or tester, you can use the search:

    +
    test*
    +

    You can also use the wildcard searches in the middle of a term.

    +
    te*t
    +

    Note: You cannot use a * or ? symbol as the first character of a search.

    + +

    Fuzzy Searches

    +

    Lucene supports fuzzy searches based on the Levenshtein Distance, or Edit Distance algorithm. To do a fuzzy search use the tilde, "~", symbol at the end of a Single word Term. For example to search for a term similar in spelling to "roam" use the fuzzy search:

    +
    roam~
    +

    This search will find terms like foam and roams.

    +

    Starting with Lucene 1.9 an additional (optional) parameter can specify the required similarity. The value is between 0 and 1, with a value closer to 1 only terms with a higher similarity will be matched. For example:

    +
    roam~0.8
    +

    The default that is used if the parameter is not given is 0.5.

    + +

    Proximity Searches

    +

    Lucene supports finding words are a within a specific distance away. To do a proximity search use the tilde, "~", symbol at the end of a Phrase. For example to search for a "apache" and "jakarta" within 10 words of each other in a document use the search:

    +
    "jakarta apache"~10
    + +

    Range Searches

    +

    Range Queries allow one to match documents whose field(s) values + are between the lower and upper bound specified by the Range Query. + Range Queries can be inclusive or exclusive of the upper and lower bounds. + Sorting is done lexicographically.

    +
    mod_date:[20020101 TO 20030101]
    +

    This will find documents whose mod_date fields have values between 20020101 and 20030101, inclusive. + Note that Range Queries are not reserved for date fields. You could also use range queries with non-date fields:

    +
    title:{Aida TO Carmen}
    +

    This will find all documents whose titles are between Aida and Carmen, but not including Aida and Carmen.

    +

    Inclusive range queries are denoted by square brackets. Exclusive range queries are denoted by + curly brackets.

    + +

    Boosting a Term

    +

    Lucene provides the relevance level of matching documents based on the terms found. To boost a term use the caret, "^", symbol with a boost factor (a number) at the end of the term you are searching. The higher the boost factor, the more relevant the term will be.

    +

    Boosting allows you to control the relevance of a document by boosting its term. For example, if you are searching for

    +
    jakarta apache
    +

    and you want the term "jakarta" to be more relevant boost it using the ^ symbol along with the boost factor next to the term. + You would type:

    +
    jakarta^4 apache
    +

    This will make documents with the term jakarta appear more relevant. You can also boost Phrase Terms as in the example:

    +
    "jakarta apache"^4 "Apache Lucene"
    +

    By default, the boost factor is 1. Although the boost factor must be positive, it can be less than 1 (e.g. 0.2)

    +
    + + + + +

    Boolean Operators

    +
    +

    Boolean operators allow terms to be combined through logic operators. + Lucene supports AND, "+", OR, NOT and "-" as Boolean operators(Note: Boolean operators must be ALL CAPS).

    + +

    +

    The OR operator is the default conjunction operator. This means that if there is no Boolean operator between two terms, the OR operator is used. + The OR operator links two terms and finds a matching document if either of the terms exist in a document. This is equivalent to a union using sets. + The symbol || can be used in place of the word OR.

    +

    To search for documents that contain either "jakarta apache" or just "jakarta" use the query:

    +
    "jakarta apache" jakarta
    +

    or

    +
    "jakarta apache" OR jakarta
    + +

    AND

    +

    The AND operator matches documents where both terms exist anywhere in the text of a single document. + This is equivalent to an intersection using sets. The symbol && can be used in place of the word AND.

    +

    To search for documents that contain "jakarta apache" and "Apache Lucene" use the query:

    +
    "jakarta apache" AND "Apache Lucene"
    + +

    +

    +

    The "+" or required operator requires that the term after the "+" symbol exist somewhere in a the field of a single document.

    +

    To search for documents that must contain "jakarta" and may contain "lucene" use the query:

    +
    +jakarta lucene
    + +

    NOT

    +

    The NOT operator excludes documents that contain the term after NOT. + This is equivalent to a difference using sets. The symbol ! can be used in place of the word NOT.

    +

    To search for documents that contain "jakarta apache" but not "Apache Lucene" use the query:

    +
    "jakarta apache" NOT "Apache Lucene"
    +

    Note: The NOT operator cannot be used with just one term. For example, the following search will return no results:

    +
    NOT "jakarta apache"
    + +

    -

    +

    The "-" or prohibit operator excludes documents that contain the term after the "-" symbol.

    +

    To search for documents that contain "jakarta apache" but not "Apache Lucene" use the query:

    +
    "jakarta apache" -"Apache Lucene"
    +
    + + + +

    Grouping

    +
    +

    Lucene supports using parentheses to group clauses to form sub queries. This can be very useful if you want to control the boolean logic for a query.

    +

    To search for either "jakarta" or "apache" and "website" use the query:

    +
    (jakarta OR apache) AND website
    +

    This eliminates any confusion and makes sure you that website must exist and either term jakarta or apache may exist.

    +
    + + + +

    Field Grouping

    +
    +

    Lucene supports using parentheses to group multiple clauses to a single field.

    +

    To search for a title that contains both the word "return" and the phrase "pink panther" use the query:

    +
    title:(+return +"pink panther")
    +
    + + + +

    Escaping Special Characters

    +
    +

    Lucene supports escaping special characters that are part of the query syntax. The current list special characters are

    +

    + - && || ! ( ) { } [ ] ^ " ~ * ? : \

    +

    To escape these character use the \ before the character. For example to search for (1+1):2 use the query:

    +
    \(1\+1\)\:2
    +
    + diff --git a/lucene/site/build/site/.htaccess b/lucene/site/build/site/.htaccess deleted file mode 100644 index f1650fa44a6..00000000000 --- a/lucene/site/build/site/.htaccess +++ /dev/null @@ -1,3 +0,0 @@ -#Forrest generates UTF-8 by default, but these httpd servers are -#ignoring the meta http-equiv charset tags -AddDefaultCharset off diff --git a/lucene/site/build/site/broken-links.xml b/lucene/site/build/site/broken-links.xml deleted file mode 100644 index f95aa9be019..00000000000 --- a/lucene/site/build/site/broken-links.xml +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/lucene/site/build/site/contributions.html b/lucene/site/build/site/contributions.html deleted file mode 100644 index 547f0734ccb..00000000000 --- a/lucene/site/build/site/contributions.html +++ /dev/null @@ -1,756 +0,0 @@ - - - - - - - - - Apache Lucene - Contributions - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    - Apache Lucene - Contributions -

    - - - -

    Overview

    -
    -

    This page lists external Lucene resources. If you have - written something that should be included, please post all - relevant information to one of the mailing lists. Nothing - listed here is directly supported by the Lucene - developers, so if you encounter any problems with any of - this software, please use the author's contact information - to get help.

    -

    If you are looking for information on contributing patches or other improvements to Lucene, see - How To Contribute on the Lucene Wiki.

    -
    - - - -

    Lucene Tools

    -
    -

    - Software that works with Lucene indices. -

    - -

    Luke

    - - - - - - - - - - - - - - - - -
    - URL - - - http://www.getopt.org/luke/ - -
    - author - - Andrzej Bialecki -
    - -

    LIMO (Lucene Index Monitor)

    - - - - - - - - - - - - - - - - -
    - URL - - - http://limo.sf.net/ - -
    - author - - Julien Nioche -
    -
    - - - -

    Lucene Document Converters

    -
    -

    - Lucene requires information you want to index to be - converted into a Document class. Here are - contributions for various solutions that convert different - content types to Lucene's Document classes. -

    - -

    XML Document #1

    - - - - - - - - - - - - - - - - -
    - URL - - - http://marc.theaimsgroup.com/?l=lucene-dev&m=100723333506246&w=2 - -
    - author - - Philip Ogren - ogren@mayo.edu -
    - -

    XML Document #2

    - - - - - - - - - - - - - - - - -
    - URL - - - http://www.mail-archive.com/lucene-user@jakarta.apache.org/msg00346.html - -
    - author - - Peter Carlson - carlson@bookandhammer.com -
    - -

    PDF Box

    - - - - - - - - - - - - - - - - -
    - URL - - - http://www.pdfbox.org/ - -
    - author - - Ben Litchfield - ben@csh.rit.edu -
    - -

    XPDF - PDF Document Conversion

    - - - - - - - - - - - - - - - - -
    - URL - - - http://www.foolabs.com/xpdf - -
    - author - - N/A -
    - -

    PDFTextStream -- PDF text and metadata extraction

    - - - - - - - - - - - - - - - - -
    - URL - - - http://snowtide.com - -
    - author - - N/A -
    - -

    PJ Classic & PJ Professional - PDF Document Conversion

    - - - - - - - - - - - - - - - - -
    - URL - - - http://www.etymon.com/ - -
    - author - - N/A -
    -
    - - - -

    Miscellaneous

    -
    -

    - -

    - -

    Arabic Analyzer for Java

    - - - - - - - - - - - - - - - - -
    - URL - - - http://savannah.nongnu.org/projects/aramorph - -
    - author - - Pierrick Brihaye -
    - -

    Phonetix

    - - - - - - - - - - - - - - - - -
    - URL - - - http://www.companywebstore.de/tangentum/mirror/en/products/phonetix/index.html - -
    - author - - tangentum technologies -
    - -

    ejIndex - JBoss MBean for Lucene

    -

    - -

    - - - - - - - - - - - - - - - - -
    - URL - - - http://ejindex.sourceforge.net/ - -
    - author - - Andy Scholz -
    - -

    JavaCC

    - - - - - - - - - - - - - - - - -
    - URL - - - https://javacc.dev.java.net/ - -
    - author - - Sun Microsystems (java.net) -
    - -

    LuSQL - Index databases with Lucene

    - - - - - - - - - - - - - - - - -
    - URL - - - http://lab.cisti-icist.nrc-cnrc.gc.ca/cistilabswiki/index.php/LuSql - -
    - author - - Glen Newton -
    -
    - -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/demo.html b/lucene/site/build/site/demo.html deleted file mode 100644 index bfb21fa5a24..00000000000 --- a/lucene/site/build/site/demo.html +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - - - Apache Lucene - Building and Installing the Basic Demo - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    - Apache Lucene - Building and Installing the Basic Demo -

    - - - - -

    About this Document

    -
    -

    -This document is intended as a "getting started" guide to using and running the Lucene demos. -It walks you through some basic installation and configuration. -

    -
    - - - - -

    About the Demo

    -
    -

    -The Lucene command-line demo code consists of an application that demonstrates various -functionalities of Lucene and how you can add Lucene to your applications. -

    -
    - - - -

    Setting your CLASSPATH

    -
    -

    -First, you should download the -latest Lucene distribution and then extract it to a working directory. -

    -

    -You need three JARs: the Lucene JAR, the common analysis JAR, and the Lucene demo JAR. You should -see the Lucene JAR file in the core/ directory you created when you extracted the archive -- it -should be named something like lucene-core-{version}.jar. You should also see files -called lucene-analyzers-common-{version}.jar and lucene-demo-{version}.jar -under analysis/common/ and demo/, respectively. -

    -

    -Put all three of these files in your Java CLASSPATH. -

    -
    - - - -

    Indexing Files

    -
    -

    -Once you've gotten this far you're probably itching to go. Let's build an index! Assuming -you've set your CLASSPATH correctly, just type: - -

    -    java org.apache.lucene.demo.IndexFiles -docs {path-to-lucene}/src
    -
    - -This will produce a subdirectory called index which will contain an index of all of the -Lucene source code. -

    -

    -To search the index type: - -

    -    java org.apache.lucene.demo.SearchFiles
    -
    - -You'll be prompted for a query. Type in a swear word and press the enter key. You'll see that the -Lucene developers are very well mannered and get no results. Now try entering the word "string". -That should return a whole bunch of documents. The results will page at every tenth result and ask -you whether you want more results. -

    -
    - - - -

    About the code...

    -
    -

    - -read on>>> - -

    -
    - - -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/demo2.html b/lucene/site/build/site/demo2.html deleted file mode 100644 index 9d2851f8c82..00000000000 --- a/lucene/site/build/site/demo2.html +++ /dev/null @@ -1,421 +0,0 @@ - - - - - - - - - Apache Lucene - Basic Demo Sources Walk-through - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    - Apache Lucene - Basic Demo Sources Walk-through -

    - - - - -

    About the Code

    -
    -

    -In this section we walk through the sources behind the command-line Lucene demo: where to find them, -their parts and their function. This section is intended for Java developers wishing to understand -how to use Lucene in their applications. -

    -
    - - - - -

    Location of the source

    -
    -

    -NOTE: to examine the sources, you need to download and extract a source checkout of -Lucene: (lucene-{version}-src.zip). -

    -

    -Relative to the directory created when you extracted Lucene, you -should see a directory called lucene/demo/. This is the root for the Lucene -demo. Under this directory is src/java/org/apache/lucene/demo/. This is where all -the Java sources for the demo live. -

    -

    -Within this directory you should see the IndexFiles.java class we executed earlier. -Bring it up in vi or your editor of choice and let's take a look at it. -

    -
    - - - -

    IndexFiles

    -
    -

    -As we discussed in the previous walk-through, the IndexFiles class creates a Lucene -Index. Let's take a look at how it does this. -

    -

    -The main() method parses the command-line parameters, then in preparation for -instantiating IndexWriter, opens a -Directory and instantiates -StandardAnalyzer and -IndexWriterConfig. -

    -

    -The value of the -index command-line parameter is the name of the filesystem directory -where all index information should be stored. If IndexFiles is invoked with a -relative path given in the -index command-line parameter, or if the -index -command-line parameter is not given, causing the default relative index path "index" -to be used, the index path will be created as a subdirectory of the current working directory -(if it does not already exist). On some platforms, the index path may be created in a different -directory (such as the user's home directory). -

    -

    -The -docs command-line parameter value is the location of the directory containing -files to be indexed. -

    -

    -The -update command-line parameter tells IndexFiles not to delete the -index if it already exists. When -update is not given, IndexFiles will -first wipe the slate clean before indexing any documents. -

    -

    -Lucene Directorys are used by the -IndexWriter to store information in the index. In addition to the -FSDirectory implementation we are using, -there are several other Directory subclasses that can write to RAM, to databases, etc. -

    -

    -Lucene Analyzers are processing pipelines -that break up text into indexed tokens, a.k.a. terms, and optionally perform other operations on these -tokens, e.g. downcasing, synonym insertion, filtering out unwanted tokens, etc. The Analyzer -we are using is StandardAnalyzer, which creates tokens using the Word Break rules from the -Unicode Text Segmentation algorithm specified in Unicode -Standard Annex #29; converts tokens to lowercase; and then filters out stopwords. Stopwords are -common language words such as articles (a, an, the, etc.) and other tokens that may have less value for -searching. It should be noted that there are different rules for every language, and you should use the -proper analyzer for each. Lucene currently provides Analyzers for a number of different languages (see -the javadocs under -lucene/analysis/common/src/java/org/apache/lucene/analysis). -

    -

    -The IndexWriterConfig instance holds all configuration for IndexWriter. For -example, we set the OpenMode to use here based on the value of the -update -command-line parameter. -

    -

    -Looking further down in the file, after IndexWriter is instantiated, you should see the -indexDocs() code. This recursive function crawls the directories and creates -Document objects. The -Document is simply a data object to represent the text content from the file as well as -its creation time and location. These instances are added to the IndexWriter. If -the -update command-line parameter is given, the IndexWriter -OpenMode will be set to OpenMode.CREATE_OR_APPEND, and rather than -adding documents to the index, the IndexWriter will update them -in the index by attempting to find an already-indexed document with the same identifier (in our -case, the file path serves as the identifier); deleting it from the index if it exists; and then -adding the new document to the index. -

    -
    - - - -

    Searching Files

    -
    -

    -The SearchFiles class is -quite simple. It primarily collaborates with an -IndexSearcher, -StandardAnalyzer (which is used in the -IndexFiles class as well) -and a QueryParser. The -query parser is constructed with an analyzer used to interpret your query text in the same way the -documents are interpreted: finding word boundaries, downcasing, and removing useless words like -'a', 'an' and 'the'. The Query -object contains the results from the -QueryParser which is passed -to the searcher. Note that it's also possible to programmatically construct a rich -Query object without using the query -parser. The query parser just enables decoding the Lucene query -syntax into the corresponding Query -object. -

    -

    - -SearchFiles uses the IndexSearcher.search(query,n) method that returns -TopDocs with max n hits. -The results are printed in pages, sorted by score (i.e. relevance). -

    -
    - -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/fileformats.html b/lucene/site/build/site/fileformats.html deleted file mode 100644 index a8ff8af8543..00000000000 --- a/lucene/site/build/site/fileformats.html +++ /dev/null @@ -1,2648 +0,0 @@ - - - - - - - - - Apache Lucene - Index File Formats - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    - Apache Lucene - Index File Formats -

    - - - -

    Index File Formats

    -
    -

    - This document defines the index file formats used - in this version of Lucene. If you are using a different - version of Lucene, please consult the copy of - docs/fileformats.html - that was distributed - with the version you are using. -

    -

    - Apache Lucene is written in Java, but several - efforts are underway to write - versions - of Lucene in other programming - languages. If these versions are to remain compatible with Apache - Lucene, then a language-independent definition of the Lucene index - format is required. This document thus attempts to provide a - complete and independent definition of the Apache Lucene file - formats. -

    -

    - As Lucene evolves, this document should evolve. - Versions of Lucene in different programming languages should endeavor - to agree on file formats, and generate new versions of this document. -

    -

    - Compatibility notes are provided in this document, - describing how file formats have changed from prior versions. -

    -

    - In version 2.1, the file format was changed to allow - lock-less commits (ie, no more commit lock). The - change is fully backwards compatible: you can open a - pre-2.1 index for searching or adding/deleting of - docs. When the new segments file is saved - (committed), it will be written in the new file format - (meaning no specific "upgrade" process is needed). - But note that once a commit has occurred, pre-2.1 - Lucene will not be able to read the index. -

    -

    - In version 2.3, the file format was changed to allow - segments to share a single set of doc store (vectors & - stored fields) files. This allows for faster indexing - in certain cases. The change is fully backwards - compatible (in the same way as the lock-less commits - change in 2.1). -

    -

    - In version 2.4, Strings are now written as true UTF-8 - byte sequence, not Java's modified UTF-8. See issue - LUCENE-510 for details. -

    -

    - In version 2.9, an optional opaque Map<String,String> - CommitUserData may be passed to IndexWriter's commit - methods (and later retrieved), which is recorded in - the segments_N file. See issue LUCENE-1382 for - details. Also, diagnostics were added to each segment - written recording details about why it was written - (due to flush, merge; which OS/JRE was used; etc.). - See issue LUCENE-1654 for details. -

    -

    - In version 3.0, compressed fields are no longer - written to the index (they can still be read, but on - merge the new segment will write them, - uncompressed). See issue LUCENE-1960 for details. -

    -

    - In version 3.1, segments records the code version - that created them. See LUCENE-2720 for details. - - Additionally segments track explicitly whether or - not they have term vectors. See LUCENE-2811 for details. -

    -

    - In version 3.2, numeric fields are written as natively - to stored fields file, previously they were stored in - text format only. -

    -

    - In version 3.4, fields can omit position data while - still indexing term frequencies. -

    -
    - - - -

    Definitions

    -
    -

    - The fundamental concepts in Lucene are index, - document, field and term. -

    -

    - An index contains a sequence of documents. -

    -
      - -
    • - -

      - A document is a sequence of fields. -

      - -
    • - - -
    • - -

      - A field is a named sequence of terms. -

      - -
    • - - -
    • - A term is a string. -
    • - -
    -

    - The same string in two different fields is - considered a different term. Thus terms are represented as a pair of - strings, the first naming the field, and the second naming text - within the field. -

    - -

    Inverted Indexing

    -

    - The index stores statistics about terms in order - to make term-based search more efficient. Lucene's - index falls into the family of indexes known as an inverted - index. This is because it can list, for a term, the documents that contain - it. This is the inverse of the natural relationship, in which - documents list terms. -

    - -

    Types of Fields

    -

    - In Lucene, fields may be stored, in which - case their text is stored in the index literally, in a non-inverted - manner. Fields that are inverted are called indexed. A field - may be both stored and indexed.

    -

    The text of a field may be tokenized into terms to be - indexed, or the text of a field may be used literally as a term to be indexed. - Most fields are - tokenized, but sometimes it is useful for certain identifier fields - to be indexed literally. -

    -

    See the Field java docs for more information on Fields.

    - -

    Segments

    -

    - Lucene indexes may be composed of multiple sub-indexes, or - segments. Each segment is a fully independent index, which could be searched - separately. Indexes evolve by: -

    -
      - -
    1. - -

      Creating new segments for newly added documents.

      - -
    2. - -
    3. - -

      Merging existing segments.

      - -
    4. - -
    -

    - Searches may involve multiple segments and/or multiple indexes, each - index potentially composed of a set of segments. -

    - -

    Document Numbers

    -

    - Internally, Lucene refers to documents by an integer document - number. The first document added to an index is numbered zero, and each - subsequent document added gets a number one greater than the previous. -

    -

    - -
    - -

    -

    - Note that a document's number may change, so caution should be taken - when storing these numbers outside of Lucene. In particular, numbers may - change in the following situations: -

    -
      - -
    • - -

      - The - numbers stored in each segment are unique only within the segment, - and must be converted before they can be used in a larger context. - The standard technique is to allocate each segment a range of - values, based on the range of numbers used in that segment. To - convert a document number from a segment to an external value, the - segment's base document - number is added. To convert an external value back to a - segment-specific value, the segment is identified by the range that - the external value is in, and the segment's base value is - subtracted. For example two five document segments might be - combined, so that the first segment has a base value of zero, and - the second of five. Document three from the second segment would - have an external value of eight. -

      - -
    • - -
    • - -

      - When documents are deleted, gaps are created - in the numbering. These are eventually removed as the index evolves - through merging. Deleted documents are dropped when segments are - merged. A freshly-merged segment thus has no gaps in its numbering. -

      - -
    • - -
    -
    - - - -

    Overview

    -
    -

    - Each segment index maintains the following: -

    -
      - -
    • - -

      Field names. This - contains the set of field names used in the index. - -

      - -
    • - -
    • - -

      Stored Field - values. This contains, for each document, a list of attribute-value - pairs, where the attributes are field names. These are used to - store auxiliary information about the document, such as its title, - url, or an identifier to access a - database. The set of stored fields are what is returned for each hit - when searching. This is keyed by document number. -

      - -
    • - -
    • - -

      Term dictionary. - A dictionary containing all of the terms used in all of the indexed - fields of all of the documents. The dictionary also contains the - number of documents which contain the term, and pointers to the - term's frequency and proximity data. -

      - -
    • - - -
    • - -

      Term Frequency - data. For each term in the dictionary, the numbers of all the - documents that contain that term, and the frequency of the term in - that document, unless frequencies are omitted (IndexOptions.DOCS_ONLY) -

      - -
    • - - -
    • - -

      Term Proximity - data. For each term in the dictionary, the positions that the term - occurs in each document. Note that this will - not exist if all fields in all documents omit position data. -

      - -
    • - - -
    • - -

      Normalization - factors. For each field in each document, a value is stored that is - multiplied into the score for hits on that field. -

      - -
    • - -
    • - -

      Term Vectors. For each field in each document, the term vector - (sometimes called document vector) may be stored. A term vector consists - of term text and term frequency. To add Term Vectors to your index see the - Field - constructors -

      - -
    • - -
    • - -

      Deleted documents. - An optional file indicating which documents are deleted. -

      - -
    • - -
    -

    Details on each of these are provided in subsequent sections. -

    -
    - - - -

    File Naming

    -
    -

    - All files belonging to a segment have the same name with varying - extensions. The extensions correspond to the different file formats - described below. When using the Compound File format (default in 1.4 and greater) these files are - collapsed into a single .cfs file (see below for details) -

    -

    - Typically, all segments - in an index are stored in a single directory, although this is not - required. -

    -

    - As of version 2.1 (lock-less commits), file names are - never re-used (there is one exception, "segments.gen", - see below). That is, when any file is saved to the - Directory it is given a never before used filename. - This is achieved using a simple generations approach. - For example, the first segments file is segments_1, - then segments_2, etc. The generation is a sequential - long integer represented in alpha-numeric (base 36) - form. -

    -
    - - -

    Summary of File Extensions

    -
    -

    The following table summarizes the names and extensions of the files in Lucene: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameExtensionBrief Description
    Segments Filesegments.gen, segments_NStores information about segments
    Lock Filewrite.lockThe Write lock prevents multiple IndexWriters from writing to the same file.
    Compound File.cfsAn optional "virtual" file consisting of all the other index files for systems - that frequently run out of file handles.
    Compound File Entry table.cfeThe "virtual" compound file's entry table holding all entries in the corresponding .cfs file (Since 3.4)
    Fields.fnmStores information about the fields
    Field Index.fdxContains pointers to field data
    Field Data.fdtThe stored fields for documents
    Term Infos.tisPart of the term dictionary, stores term info
    Term Info Index.tiiThe index into the Term Infos file
    Frequencies.frqContains the list of docs which contain each term along with frequency
    Positions.prxStores position information about where a term occurs in the index
    Norms.nrmEncodes length and boost factors for docs and fields
    Term Vector Index.tvxStores offset into the document data file
    Term Vector Documents.tvdContains information about each document that has term vectors
    Term Vector Fields.tvfThe field level info about term vectors
    Deleted Documents.delInfo about what files are deleted
    - - -

    -
    - - - -

    Primitive Types

    -
    - -

    Byte

    -

    - The most primitive type - is an eight-bit byte. Files are accessed as sequences of bytes. All - other data types are defined as sequences - of bytes, so file formats are byte-order independent. -

    - -

    UInt32

    -

    - 32-bit unsigned integers are written as four - bytes, high-order bytes first. -

    -

    - UInt32 --> <Byte>4 - -

    - -

    Uint64

    -

    - 64-bit unsigned integers are written as eight - bytes, high-order bytes first. -

    -

    UInt64 --> <Byte>8 - -

    - -

    VInt

    -

    - A variable-length format for positive integers is - defined where the high-order bit of each byte indicates whether more - bytes remain to be read. The low-order seven bits are appended as - increasingly more significant bits in the resulting integer value. - Thus values from zero to 127 may be stored in a single byte, values - from 128 to 16,383 may be stored in two bytes, and so on. -

    -

    - -VInt Encoding Example - -

    - - -- -- -- -- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - -

    - -Value - -

    - -
    - -

    - -First byte - -

    - -
    - -

    - -Second byte - -

    - -
    - -

    - -Third byte - -

    - -
    - -

    0 -

    - -
    - -

    - 00000000 -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    1 -

    - -
    - -

    - 00000001 -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    2 -

    - -
    - -

    - 00000010 -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    ... -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    127 -

    - -
    - -

    - 01111111 -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    128 -

    - -
    - -

    - 10000000 -

    - -
    - -

    - 00000001 -

    - -
    - -

    - -
    - - -

    - -
    - -

    129 -

    - -
    - -

    - 10000001 -

    - -
    - -

    - 00000001 -

    - -
    - -

    - -
    - - -

    - -
    - -

    130 -

    - -
    - -

    - 10000010 -

    - -
    - -

    - 00000001 -

    - -
    - -

    - -
    - - -

    - -
    - -

    ... -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    16,383 -

    - -
    - -

    - 11111111 -

    - -
    - -

    - 01111111 -

    - -
    - -

    - -
    - - -

    - -
    - -

    16,384 -

    - -
    - -

    - 10000000 -

    - -
    - -

    - 10000000 -

    - -
    - -

    - 00000001 -

    - -
    - -

    16,385 -

    - -
    - -

    - 10000001 -

    - -
    - -

    - 10000000 -

    - -
    - -

    - 00000001 -

    - -
    - -

    ... -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    - -

    - -
    - - -

    - -
    -

    - This provides compression while still being - efficient to decode. -

    - -

    Chars

    -

    - Lucene writes unicode - character sequences as UTF-8 encoded bytes. -

    - -

    String

    -

    - Lucene writes strings as UTF-8 encoded bytes. - First the length, in bytes, is written as a VInt, - followed by the bytes. -

    -

    - String --> VInt, Chars -

    -
    - - - -

    Compound Types

    -
    - -

    Map<String,String>

    -

    - In a couple places Lucene stores a Map - String->String. -

    -

    - Map<String,String> --> Count<String,String>Count - -

    -
    - - - -

    Per-Index Files

    -
    -

    - The files in this section exist one-per-index. -

    - -

    Segments File

    -

    - The active segments in the index are stored in the - segment info file, - segments_N. - There may - be one or more - segments_N - files in the - index; however, the one with the largest - generation is the active one (when older - segments_N files are present it's because they - temporarily cannot be deleted, or, a writer is in - the process of committing, or a custom - IndexDeletionPolicy - is in use). This file lists each - segment by name, has details about the separate - norms and deletion files, and also contains the - size of each segment. -

    -

    - As of 2.1, there is also a file - segments.gen. - This file contains the - current generation (the - _N - in - segments_N) - of the index. This is - used only as a fallback in case the current - generation cannot be accurately determined by - directory listing alone (as is the case for some - NFS clients with time-based directory cache - expiraation). This file simply contains an Int32 - version header (SegmentInfos.FORMAT_LOCKLESS = - -2), followed by the generation recorded as Int64, - written twice. -

    -

    - -3.1 - Segments --> Format, Version, NameCounter, SegCount, <SegVersion, SegName, SegSize, DelGen, DocStoreOffset, [DocStoreSegment, DocStoreIsCompoundFile], HasSingleNormFile, NumField, - NormGenNumField, - IsCompoundFile, DeletionCount, HasProx, Diagnostics, HasVectors>SegCount, CommitUserData, Checksum -

    -

    - Format, NameCounter, SegCount, SegSize, NumField, - DocStoreOffset, DeletionCount --> Int32 -

    -

    - Version, DelGen, NormGen, Checksum --> Int64 -

    -

    - SegVersion, SegName, DocStoreSegment --> String -

    -

    - Diagnostics --> Map<String,String> -

    -

    - IsCompoundFile, HasSingleNormFile, - DocStoreIsCompoundFile, HasProx, HasVectors --> Int8 -

    -

    - CommitUserData --> Map<String,String> -

    -

    - Format is -9 (SegmentInfos.FORMAT_DIAGNOSTICS). -

    -

    - Version counts how often the index has been - changed by adding or deleting documents. -

    -

    - NameCounter is used to generate names for new segment files. -

    -

    - SegVersion is the code version that created the segment. -

    -

    - SegName is the name of the segment, and is used as the file name prefix - for all of the files that compose the segment's index. -

    -

    - SegSize is the number of documents contained in the segment index. -

    -

    - DelGen is the generation count of the separate - deletes file. If this is -1, there are no - separate deletes. If it is 0, this is a pre-2.1 - segment and you must check filesystem for the - existence of _X.del. Anything above zero means - there are separate deletes (_X_N.del). -

    -

    - NumField is the size of the array for NormGen, or - -1 if there are no NormGens stored. -

    -

    - NormGen records the generation of the separate - norms files. If NumField is -1, there are no - normGens stored and they are all assumed to be 0 - when the segment file was written pre-2.1 and all - assumed to be -1 when the segments file is 2.1 or - above. The generation then has the same meaning - as delGen (above). -

    -

    - IsCompoundFile records whether the segment is - written as a compound file or not. If this is -1, - the segment is not a compound file. If it is 1, - the segment is a compound file. Else it is 0, - which means we check filesystem to see if _X.cfs - exists. -

    -

    - If HasSingleNormFile is 1, then the field norms are - written as a single joined file (with extension - .nrm); if it is 0 then each field's norms - are stored as separate .fN files. See - "Normalization Factors" below for details. -

    -

    - DocStoreOffset, DocStoreSegment, - DocStoreIsCompoundFile: If DocStoreOffset is -1, - this segment has its own doc store (stored fields - values and term vectors) files and DocStoreSegment - and DocStoreIsCompoundFile are not stored. In - this case all files for stored field values - (*.fdt and *.fdx) and term - vectors (*.tvf, *.tvd and - *.tvx) will be stored with this segment. - Otherwise, DocStoreSegment is the name of the - segment that has the shared doc store files; - DocStoreIsCompoundFile is 1 if that segment is - stored in compound file format (as a .cfx - file); and DocStoreOffset is the starting document - in the shared doc store files where this segment's - documents begin. In this case, this segment does - not store its own doc store files but instead - shares a single set of these files with other - segments. -

    -

    - Checksum contains the CRC32 checksum of all bytes - in the segments_N file up until the checksum. - This is used to verify integrity of the file on - opening the index. -

    -

    - DeletionCount records the number of deleted - documents in this segment. -

    -

    - HasProx is 1 if any fields in this segment have - position data (IndexOptions.DOCS_AND_FREQS_AND_POSITIONS); else, it's 0. -

    -

    - CommitUserData stores an optional user-supplied - opaque Map<String,String> that was passed to - IndexWriter's commit or prepareCommit, or - IndexReader's flush methods. -

    -

    - The Diagnostics Map is privately written by - IndexWriter, as a debugging aid, for each segment - it creates. It includes metadata like the current - Lucene version, OS, Java version, why the segment - was created (merge, flush, addIndexes), etc. -

    -

    HasVectors is 1 if this segment stores term vectors, - else it's 0. -

    - -

    Lock File

    -

    - The write lock, which is stored in the index - directory by default, is named "write.lock". If - the lock directory is different from the index - directory then the write lock will be named - "XXXX-write.lock" where XXXX is a unique prefix - derived from the full path to the index directory. - When this file is present, a writer is currently - modifying the index (adding or removing - documents). This lock file ensures that only one - writer is modifying the index at a time. -

    - -

    Deletable File

    -

    - A writer dynamically computes - the files that are deletable, instead, so no file - is written. -

    - -

    Compound Files

    -

    Starting with Lucene 1.4 the compound file format became default. This - is simply a container for all files described in the next section - (except for the .del file).

    -

    Compound Entry Table (.cfe) --> Version, FileCount, <FileName, DataOffset, DataLength> - FileCount - -

    -

    Compound (.cfs) --> FileData FileCount - -

    -

    Version --> Int

    -

    FileCount --> VInt

    -

    DataOffset --> Long

    -

    DataLength --> Long

    -

    FileName --> String

    -

    FileData --> raw file data

    -

    The raw file data is the data from the individual files named above.

    -

    Starting with Lucene 2.3, doc store files (stored - field values and term vectors) can be shared in a - single set of files for more than one segment. When - compound file is enabled, these shared files will be - added into a single compound file (same format as - above) but with the extension .cfx. -

    -
    - - - -

    Per-Segment Files

    -
    -

    - The remaining files are all per-segment, and are - thus defined by suffix. -

    - -

    Fields

    -

    - -
    - -Field Info - -
    - -

    -

    - Field names are - stored in the field info file, with suffix .fnm. -

    -

    - FieldInfos - (.fnm) --> FNMVersion,FieldsCount, <FieldName, - FieldBits> - FieldsCount - -

    -

    - FNMVersion, FieldsCount --> VInt -

    -

    - FieldName --> String -

    -

    - FieldBits --> Byte -

    -

    - -

      - -
    • - The low-order bit is one for - indexed fields, and zero for non-indexed fields. -
    • - -
    • - The second lowest-order - bit is one for fields that have term vectors stored, and zero for fields - without term vectors. -
    • - -
    • If the fifth lowest-order bit is set (0x10), norms are omitted for the indexed field.
    • - -
    • If the sixth lowest-order bit is set (0x20), payloads are stored for the indexed field.
    • - -
    • If the seventh lowest-order bit is set (0x40), term frequencies and positions omitted for the indexed field.
    • - -
    • If the eighth lowest-order bit is set (0x80), positions are omitted for the indexed field.
    • - -
    - -

    -

    - FNMVersion (added in 2.9) is -2 for indexes from 2.9 - 3.3. It is -3 for indexes in Lucene 3.4+ -

    -

    - Fields are numbered by their order in this file. Thus field zero is - the - first field in the file, field one the next, and so on. Note that, - like document numbers, field numbers are segment relative. -

    -

    - -
    - -Stored Fields - -
    - -

    -

    - Stored fields are represented by two files: -

    -
      - -
    1. - - -

      - The field index, or .fdx file. -

      - - -

      - This contains, for each document, a pointer to - its field data, as follows: -

      - - -

      - FieldIndex - (.fdx) --> - <FieldValuesPosition> - SegSize - -

      - -

      FieldValuesPosition - --> Uint64 -

      - -

      This - is used to find the location within the field data file of the - fields of a particular document. Because it contains fixed-length - data, this file may be easily randomly accessed. The position of - document - n - 's - - field data is the Uint64 at - n*8 - in - this file. -

      - -
    2. - -
    3. - -

      - - The field data, or .fdt file. - -

      - - -

      - This contains the stored fields of each document, - as follows: -

      - - -

      - FieldData (.fdt) --> - <DocFieldData> - SegSize - -

      - -

      DocFieldData --> - FieldCount, <FieldNum, Bits, Value> - FieldCount - -

      - -

      FieldCount --> - VInt -

      - -

      FieldNum --> - VInt -

      - -

      Bits --> - Byte -

      - -

      - -

        - -
      • low order bit is one for tokenized fields
      • - -
      • second bit is one for fields containing binary data
      • - -
      • third bit is one for fields with compression option enabled - (if compression is enabled, the algorithm used is ZLIB), - only available for indexes until Lucene version 2.9.x
      • - -
      • 4th to 6th bit (mask: 0x7<<3) define the type of a - numeric field:
          - -
        • all bits in mask are cleared if no numeric field at all
        • - -
        • 1<<3: Value is Int
        • - -
        • 2<<3: Value is Long
        • - -
        • 3<<3: Value is Int as Float (as of Float.intBitsToFloat)
        • - -
        • 4<<3: Value is Long as Double (as of Double.longBitsToDouble)
        • - -
        -
      • - -
      - -

      - -

      Value --> - String | BinaryValue | Int | Long (depending on Bits) -

      - -

      BinaryValue --> - ValueSize, <Byte>^ValueSize -

      - -

      ValueSize --> - VInt -

      - - -
    4. - -
    - -

    Term Dictionary

    -

    - The term dictionary is represented as two files: -

    -
      - -
    1. - - -

      - The term infos, or tis file. -

      - - -

      - TermInfoFile (.tis)--> - TIVersion, TermCount, IndexInterval, SkipInterval, MaxSkipLevels, TermInfos -

      - -

      TIVersion --> - UInt32 -

      - -

      TermCount --> - UInt64 -

      - -

      IndexInterval --> - UInt32 -

      - -

      SkipInterval --> - UInt32 -

      - -

      MaxSkipLevels --> - UInt32 -

      - -

      TermInfos --> - <TermInfo> - TermCount - -

      - -

      TermInfo --> - <Term, DocFreq, FreqDelta, ProxDelta, SkipDelta> -

      - -

      Term --> - <PrefixLength, Suffix, FieldNum> -

      - -

      Suffix --> - String -

      - -

      PrefixLength, - DocFreq, FreqDelta, ProxDelta, SkipDelta -
      - --> VInt -

      - -

      - This file is sorted by Term. Terms are - ordered first lexicographically (by UTF16 - character code) by the term's field name, - and within that lexicographically (by - UTF16 character code) by the term's text. -

      - -

      TIVersion names the version of the format - of this file and is equal to TermInfosWriter.FORMAT_CURRENT. -

      - -

      Term - text prefixes are shared. The PrefixLength is the number of initial - characters from the previous term which must be pre-pended to a - term's suffix in order to form the term's text. Thus, if the - previous term's text was "bone" and the term is "boy", - the PrefixLength is two and the suffix is "y". -

      - -

      FieldNumber - determines the term's field, whose name is stored in the .fdt file. -

      - -

      DocFreq - is the count of documents which contain the term. -

      - -

      FreqDelta - determines the position of this term's TermFreqs within the .frq - file. In particular, it is the difference between the position of - this term's data in that file and the position of the previous - term's data (or zero, for the first term in the file). -

      - -

      ProxDelta - determines the position of this term's TermPositions within the .prx - file. In particular, it is the difference between the position of - this term's data in that file and the position of the previous - term's data (or zero, for the first term in the file. For fields - that omit position data, this will be 0 since - prox information is not stored. -

      - -

      SkipDelta determines the position of this - term's SkipData within the .frq file. In - particular, it is the number of bytes - after TermFreqs that the SkipData starts. - In other words, it is the length of the - TermFreq data. SkipDelta is only stored - if DocFreq is not smaller than SkipInterval. -

      - -
    2. - -
    3. - -

      - - The term info index, or .tii file. -

      - - -

      - This contains every IndexInterval - th - entry from the .tis - file, along with its location in the "tis" file. This is - designed to be read entirely into memory and used to provide random - access to the "tis" file. -

      - - -

      - The structure of this file is very similar to the - .tis file, with the addition of one item per record, the IndexDelta. -

      - - -

      - TermInfoIndex (.tii)--> - TIVersion, IndexTermCount, IndexInterval, SkipInterval, MaxSkipLevels, TermIndices -

      - -

      TIVersion --> - UInt32 -

      - -

      IndexTermCount --> - UInt64 -

      - -

      IndexInterval --> - UInt32 -

      - -

      SkipInterval --> - UInt32 -

      - -

      TermIndices --> - <TermInfo, IndexDelta> - IndexTermCount - -

      - -

      IndexDelta --> - VLong -

      - -

      IndexDelta - determines the position of this term's TermInfo within the .tis file. In - particular, it is the difference between the position of this term's - entry in that file and the position of the previous term's entry. -

      - -

      SkipInterval is the fraction of TermDocs stored in skip tables. It is used to accelerate TermDocs.skipTo(int). - Larger values result in smaller indexes, greater acceleration, but fewer accelerable cases, while - smaller values result in bigger indexes, less acceleration (in case of a small value for MaxSkipLevels) and more - accelerable cases.

      - -

      MaxSkipLevels is the max. number of skip levels stored for each term in the .frq file. A low value results in - smaller indexes but less acceleration, a larger value results in slighly larger indexes but greater acceleration. - See format of .frq file for more information about skip levels.

      - -
    4. - -
    - -

    Frequencies

    -

    - The .frq file contains the lists of documents - which contain each term, along with the frequency of the term in that - document (except when frequencies are omitted: IndexOptions.DOCS_ONLY). -

    -

    FreqFile (.frq) --> - <TermFreqs, SkipData> - TermCount - -

    -

    TermFreqs --> - <TermFreq> - DocFreq - -

    -

    TermFreq --> - DocDelta[, Freq?] -

    -

    SkipData --> - <<SkipLevelLength, SkipLevel> - NumSkipLevels-1, SkipLevel> - <SkipDatum> -

    -

    SkipLevel --> - <SkipDatum> - DocFreq/(SkipInterval^(Level + 1)) - -

    -

    SkipDatum --> - DocSkip,PayloadLength?,FreqSkip,ProxSkip,SkipChildLevelPointer? -

    -

    DocDelta,Freq,DocSkip,PayloadLength,FreqSkip,ProxSkip --> - VInt -

    -

    SkipChildLevelPointer --> - VLong -

    -

    TermFreqs - are ordered by term (the term is implicit, from the .tis file). -

    -

    TermFreq - entries are ordered by increasing document number. -

    -

    DocDelta: if frequencies are indexed, this determines both - the document number and the frequency. In - particular, DocDelta/2 is the difference between - this document number and the previous document - number (or zero when this is the first document in - a TermFreqs). When DocDelta is odd, the frequency - is one. When DocDelta is even, the frequency is - read as another VInt. If frequencies are omitted, DocDelta - contains the gap (not multiplied by 2) between - document numbers and no frequency information is - stored. -

    -

    For example, the TermFreqs for a term which occurs - once in document seven and three times in document - eleven, with frequencies indexed, would be the following - sequence of VInts: -

    -

    15, 8, 3 -

    -

    If frequencies were omitted (IndexOptions.DOCS_ONLY) it would be this sequence - of VInts instead: -

    -

    - 7,4 -

    -

    DocSkip records the document number before every - SkipInterval - th - document in TermFreqs. - If payloads are disabled for the term's field, - then DocSkip represents the difference from the - previous value in the sequence. - If payloads are enabled for the term's field, - then DocSkip/2 represents the difference from the - previous value in the sequence. If payloads are enabled - and DocSkip is odd, - then PayloadLength is stored indicating the length - of the last payload before the SkipIntervalth - document in TermPositions. - FreqSkip and ProxSkip record the position of every - SkipInterval - th - entry in FreqFile and - ProxFile, respectively. File positions are - relative to the start of TermFreqs and Positions, - to the previous SkipDatum in the sequence. -

    -

    For example, if DocFreq=35 and SkipInterval=16, - then there are two SkipData entries, containing - the 15 - th - and 31 - st - document - numbers in TermFreqs. The first FreqSkip names - the number of bytes after the beginning of - TermFreqs that the 16 - th - SkipDatum - starts, and the second the number of bytes after - that that the 32 - nd - starts. The first - ProxSkip names the number of bytes after the - beginning of Positions that the 16 - th - SkipDatum starts, and the second the number of - bytes after that that the 32 - nd - starts. -

    -

    Each term can have multiple skip levels. - The amount of skip levels for a term is NumSkipLevels = Min(MaxSkipLevels, floor(log(DocFreq/log(SkipInterval)))). - The number of SkipData entries for a skip level is DocFreq/(SkipInterval^(Level + 1)), whereas the lowest skip - level is Level=0.
    - Example: SkipInterval = 4, MaxSkipLevels = 2, DocFreq = 35. Then skip level 0 has 8 SkipData entries, - containing the 3rd, 7th, 11th, 15th, 19th, 23rd, - 27th, and 31st document numbers in TermFreqs. Skip level 1 has 2 SkipData entries, containing the - 15th and 31st document numbers in TermFreqs.
    - The SkipData entries on all upper levels > 0 contain a SkipChildLevelPointer referencing the corresponding SkipData - entry in level-1. In the example has entry 15 on level 1 a pointer to entry 15 on level 0 and entry 31 on level 1 a pointer - to entry 31 on level 0. -

    - -

    Positions

    -

    - The .prx file contains the lists of positions that - each term occurs at within documents. Note that - fields omitting positional data do not store - anything into this file, and if all fields in the - index omit positional data then the .prx file will not - exist. -

    -

    ProxFile (.prx) --> - <TermPositions> - TermCount - -

    -

    TermPositions --> - <Positions> - DocFreq - -

    -

    Positions --> - <PositionDelta,Payload?> - Freq - -

    -

    Payload --> - <PayloadLength?,PayloadData> -

    -

    PositionDelta --> - VInt -

    -

    PayloadLength --> - VInt -

    -

    PayloadData --> - bytePayloadLength - -

    -

    TermPositions - are ordered by term (the term is implicit, from the .tis file). -

    -

    Positions - entries are ordered by increasing document number (the document - number is implicit from the .frq file). -

    -

    PositionDelta - is, if payloads are disabled for the term's field, the difference - between the position of the current occurrence in - the document and the previous occurrence (or zero, if this is the - first occurrence in this document). - If payloads are enabled for the term's field, then PositionDelta/2 - is the difference between the current and the previous position. If - payloads are enabled and PositionDelta is odd, then PayloadLength is - stored, indicating the length of the payload at the current term position. -

    -

    - For example, the TermPositions for a - term which occurs as the fourth term in one document, and as the - fifth and ninth term in a subsequent document, would be the following - sequence of VInts (payloads disabled): -

    -

    4, - 5, 4 -

    -

    PayloadData - is metadata associated with the current term position. If PayloadLength - is stored at the current position, then it indicates the length of this - Payload. If PayloadLength is not stored, then this Payload has the same - length as the Payload at the previous position. -

    - -

    Normalization Factors

    -

    There's a single .nrm file containing all norms: -

    -

    AllNorms - (.nrm) --> NormsHeader,<Norms> - NumFieldsWithNorms - -

    -

    Norms - --> <Byte> - SegSize - -

    -

    NormsHeader - --> 'N','R','M',Version -

    -

    Version - --> Byte -

    -

    NormsHeader - has 4 bytes, last of which is the format version for this file, currently -1. -

    -

    Each - byte encodes a floating point value. Bits 0-2 contain the 3-bit - mantissa, and bits 3-8 contain the 5-bit exponent. -

    -

    These - are converted to an IEEE single float value as follows: -

    -
      - -
    1. - -

      If - the byte is zero, use a zero float. -

      - -
    2. - -
    3. - -

      Otherwise, - set the sign bit of the float to zero; -

      - -
    4. - -
    5. - -

      add - 48 to the exponent and use this as the float's exponent; -

      - -
    6. - -
    7. - -

      map - the mantissa to the high-order 3 bits of the float's mantissa; and - -

      - -
    8. - -
    9. - -

      set - the low-order 21 bits of the float's mantissa to zero. -

      - -
    10. - -
    -

    A separate norm file is created when the norm values of an existing segment are modified. - When field N is modified, a separate norm file .sN - is created, to maintain the norm values for that field. -

    -

    Separate norm files are created (when adequate) for both compound and non compound segments. -

    - -

    Term Vectors

    -

    - Term Vector support is an optional on a field by - field basis. It consists of 3 files. -

    -
      - -
    1. - - -

      The Document Index or .tvx file.

      - -

      For each document, this stores the offset - into the document data (.tvd) and field - data (.tvf) files. -

      - -

      DocumentIndex (.tvx) --> TVXVersion<DocumentPosition,FieldPosition> - NumDocs - -

      - -

      TVXVersion --> Int (TermVectorsReader.CURRENT)

      - -

      DocumentPosition --> UInt64 (offset in - the .tvd file)

      - -

      FieldPosition --> UInt64 (offset in the - .tvf file)

      - -
    2. - -
    3. - - -

      The Document or .tvd file.

      - -

      This contains, for each document, the number of fields, a list of the fields with - term vector info and finally a list of pointers to the field information in the .tvf - (Term Vector Fields) file.

      - -

      - Document (.tvd) --> TVDVersion<NumFields, FieldNums, FieldPositions> - NumDocs - -

      - -

      TVDVersion --> Int (TermVectorsReader.FORMAT_CURRENT)

      - -

      NumFields --> VInt

      - -

      FieldNums --> <FieldNumDelta> - NumFields - -

      - -

      FieldNumDelta --> VInt

      - -

      FieldPositions --> <FieldPositionDelta> - NumFields-1 - -

      - -

      FieldPositionDelta --> VLong

      - -

      The .tvd file is used to map out the fields that have term vectors stored and - where the field information is in the .tvf file.

      - -
    4. - -
    5. - - -

      The Field or .tvf file.

      - -

      This file contains, for each field that has a term vector stored, a list of - the terms, their frequencies and, optionally, position and offest information.

      - -

      Field (.tvf) --> TVFVersion<NumTerms, Position/Offset, TermFreqs> - NumFields - -

      - -

      TVFVersion --> Int (TermVectorsReader.FORMAT_CURRENT)

      - -

      NumTerms --> VInt

      - -

      Position/Offset --> Byte

      - -

      TermFreqs --> <TermText, TermFreq, Positions?, Offsets?> - NumTerms - -

      - -

      TermText --> <PrefixLength, Suffix>

      - -

      PrefixLength --> VInt

      - -

      Suffix --> String

      - -

      TermFreq --> VInt

      - -

      Positions --> <VInt>TermFreq -

      - -

      Offsets --> <VInt, VInt>TermFreq -

      - -
      - -

      Notes:

      - -
        - -
      • Position/Offset byte stores whether this term vector has position or offset information stored.
      • - -
      • Term - text prefixes are shared. The PrefixLength is the number of initial - characters from the previous term which must be pre-pended to a - term's suffix in order to form the term's text. Thus, if the - previous term's text was "bone" and the term is "boy", - the PrefixLength is two and the suffix is "y". -
      • - -
      • Positions are stored as delta encoded VInts. This means we only store the difference of the current position from the last position
      • - -
      • Offsets are stored as delta encoded VInts. The first VInt is the startOffset, the second is the endOffset.
      • - -
      - - - -
    6. - -
    - -

    Deleted Documents

    -

    The .del file is - optional, and only exists when a segment contains deletions. -

    -

    Although per-segment, this file is maintained exterior to compound segment files. -

    -

    - Deletions - (.del) --> [Format],ByteCount,BitCount, Bits | DGaps (depending on Format) -

    -

    Format,ByteSize,BitCount --> - Uint32 -

    -

    Bits --> - <Byte> - ByteCount - -

    -

    DGaps --> - <DGap,NonzeroByte> - NonzeroBytesCount - -

    -

    DGap --> - VInt -

    -

    NonzeroByte --> - Byte -

    -

    Format - is Optional. -1 indicates DGaps. Non-negative value indicates Bits, and that Format is excluded. -

    -

    ByteCount - indicates the number of bytes in Bits. It is typically - (SegSize/8)+1. -

    -

    - BitCount - indicates the number of bits that are currently set in Bits. -

    -

    Bits - contains one bit for each document indexed. When the bit - corresponding to a document number is set, that document is marked as - deleted. Bit ordering is from least to most significant. Thus, if - Bits contains two bytes, 0x00 and 0x02, then document 9 is marked as - deleted. -

    -

    DGaps - represents sparse bit-vectors more efficiently than Bits. - It is made of DGaps on indexes of nonzero bytes in Bits, - and the nonzero bytes themselves. The number of nonzero bytes - in Bits (NonzeroBytesCount) is not stored. -

    -

    For example, - if there are 8000 bits and only bits 10,12,32 are set, - DGaps would be used: -

    -

    - (VInt) 1 , (byte) 20 , (VInt) 3 , (Byte) 1 -

    -
    - - - -

    Limitations

    -
    -

    - When referring to term numbers, Lucene's current - implementation uses a Java int to hold the - term index, which means the maximum number of unique - terms in any single index segment is ~2.1 billion times - the term index interval (default 128) = ~274 billion. - This is technically not a limitation of the index file - format, just of Lucene's current implementation. -

    -

    - Similarly, Lucene uses a Java int to refer - to document numbers, and the index file format uses an - Int32 on-disk to store document numbers. - This is a limitation of both the index file format and - the current implementation. Eventually these should be - replaced with either UInt64 values, or - better yet, VInt values which have no - limit. -

    -
    - - -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/gettingstarted.html b/lucene/site/build/site/gettingstarted.html deleted file mode 100644 index ca6896c8167..00000000000 --- a/lucene/site/build/site/gettingstarted.html +++ /dev/null @@ -1,310 +0,0 @@ - - - - - - - - - Apache Lucene - Getting Started Guide - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    - Apache Lucene - Getting Started Guide -

    -
    - -
    - - - -

    Getting Started

    -
    -

    -This document is intended as a "getting started" guide. It has three audiences: first-time users -looking to install Apache Lucene in their application; developers looking to modify or base -the applications they develop on Lucene; and developers looking to become involved in and contribute -to the development of Lucene. This document is written in tutorial and walk-through format. The -goal is to help you "get started". It does not go into great depth on some of the conceptual or -inner details of Lucene. -

    -

    -Each section listed below builds on one another. More advanced users -may wish to skip sections. -

    - -
    - - -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/images/built-with-forrest-button.png b/lucene/site/build/site/images/built-with-forrest-button.png deleted file mode 100644 index 4a787abe4dc7831124c5a3105d328309d671654e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1936 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 KSBKJQ)cym`bE^~p diff --git a/lucene/site/build/site/images/instruction_arrow.png b/lucene/site/build/site/images/instruction_arrow.png deleted file mode 100644 index 0fbc72452bf9885757882932eb78d14b44403466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^fn9o^tnS&|T3i>qxFe$? f}PJadT6$68(tDnm{r-UW|L@jfU diff --git a/lucene/site/build/site/index.html b/lucene/site/build/site/index.html deleted file mode 100644 index 6608ed5d206..00000000000 --- a/lucene/site/build/site/index.html +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - -Lucene Java Documentation - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    Lucene Java Documentation

    - -

    - This is the official documentation for Lucene Java
    - Please use the menu on the left to access the Javadocs and different documents. -

    - -

    - Additional documentation is available in the Wiki. -

    - -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/linkmap.html b/lucene/site/build/site/linkmap.html deleted file mode 100644 index 607bef0f40b..00000000000 --- a/lucene/site/build/site/linkmap.html +++ /dev/null @@ -1,501 +0,0 @@ - - - - - - - -Site Linkmap Table of Contents - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    Site Linkmap Table of Contents

    -

    - This is a map of the complete site and its structure. -

    -
      -
    • -Lucene  ___________________  site -
    • -
        - - - - -
          -
        • -Documentation  ___________________  docs -
        • -
            - -
              -
            • -Overview  ___________________  overview -
            • -
            - -
              -
            • -Changes  ___________________  changes -
            • -
            - -
              -
            • -Javadocs  ___________________  javadoc -
            • -
                - -
                  -
                • -Core  ___________________  javadoc-core -
                • -
                - - - - - - - - - - - - - -
                  -
                • -Analysis: UIMA  ___________________  javadoc-analyzers-uima -
                • -
                - -
                  -
                • -Benchmark  ___________________  javadoc-benchmark -
                • -
                - -
                  -
                • -Demo  ___________________  javadoc-demo -
                • -
                - -
                  -
                • -Faceting  ___________________  javadoc-facet -
                • -
                - -
                  -
                • -Grouping  ___________________  javadoc-grouping -
                • -
                - -
                  -
                • -Highlighter  ___________________  javadoc-highlighter -
                • -
                - -
                  -
                • -Join  ___________________  javadoc-join -
                • -
                - -
                  -
                • -Memory  ___________________  javadoc-memory -
                • -
                - - - -
                  -
                • -Queries  ___________________  javadoc-queries -
                • -
                - -
                  -
                • -Query Parsers  ___________________  javadoc-queryparser -
                • -
                - -
                  -
                • -Sandbox  ___________________  javadoc-sandbox -
                • -
                - -
                  -
                • -Spatial  ___________________  javadoc-spatial -
                • -
                - - - -
                  -
                • -Test Framework  ___________________  javadoc-test-framework -
                • -
                - -
              -
            - - - - - -
              -
            • -FAQ  ___________________  faq -
            • -
            - - - - - - - -
              -
            • -Scoring  ___________________  scoring -
            • -
            - -
              -
            • -Wiki  ___________________  wiki -
            • -
            - - - -
          -
        - - - - - - -
      -
    -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/lucene-contrib/index.html b/lucene/site/build/site/lucene-contrib/index.html deleted file mode 100644 index f09b622345f..00000000000 --- a/lucene/site/build/site/lucene-contrib/index.html +++ /dev/null @@ -1,420 +0,0 @@ - - - - - - - - - Apache Lucene - Lucene Contrib - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    - Apache Lucene - Lucene Contrib -

    -
    - -
    - - - -

    Lucene Contrib

    -
    -

    - The Lucene Java project also contains a workspace, Lucene Contrib - (formerly known as the Lucene Sandbox), that is open both to all Lucene - Java core committers and to developers whose commit rights are - restricted to the Contrib workspace; these developers are referred to - as "Contrib committers". The Lucene Contrib workspace hosts the - following types of packages: -

    -
      - -
    • Various third party contributions.
    • - -
    • - Contributions with third party dependencies - the Lucene Java core - distribution has no external runtime dependencies. -
    • - -
    • - New ideas that are intended for eventual inclusion into the Lucene - Java core. -
    • - -
    -

    - Users are free to experiment with the components developed in the - Contrib workspace, but Contrib packages will not necessarily be - maintained, particularly in their current state. The Lucene Java core - backwards compatibility commitments (see - http://wiki.apache.org/lucene-java/BackwardsCompatibility) - do not necessarily extend to the packages in the Contrib workspace. - See the README.txt file for each Contrib package for details. If the - README.txt file does not address its backwards compatibility - commitments, users should assume it does not make any compatibility - commitments. -

    -

    - See Contrib CHANGES for changes included in the current release. -

    -

    - You can access the current trunk Contrib repository at - http://svn.apache.org/repos/asf/lucene/dev/trunk/lucene/contrib/. -

    - -

    benchmark

    -

    The benchmark contribution contains tools for benchmarking Lucene using standard, freely available corpora.

    -

    See benchmark javadoc -

    - -

    demo

    -

    The demo contrib contains the Lucene demo: IndexFiles and SearchFiles, described under - Getting Started.

    -

    See demo javadoc -

    - -

    highlighter

    -

    A set of classes for highlighting matching terms in search results.

    -

    See highlighter javadoc -

    - -

    instantiated

    -

    RAM-based index that enables much faster searching than RAMDirectory in certain situations.

    -

    See instantiated javadoc -

    - -

    memory

    -

    High-performance single-document main memory index.

    -

    See memory javadoc -

    - -

    misc

    -

    A variety of miscellaneous files, including QueryParsers, and other alternate Lucene class implementations and tools.

    -

    See misc javadoc -

    - -

    queryparser

    -

    A new Lucene query parser implementation, which matches the syntax of the core QueryParser but offers a more modular architecture to enable customization.

    -

    See queryparser javadoc -

    - -

    queries

    -

    Additional queries for Lucene.

    -

    See queries javadoc -

    - -

    remote

    -

    Classes to help use Lucene with RMI.

    -

    See remote javadoc -

    - -

    spatial

    -

    Classes to help with efficient distance based sorting.

    -

    See spatial javadoc -

    - -

    spellchecker

    -

    Provides tools for spellchecking and suggestions with Lucene.

    -

    See spellchecker javadoc -

    - -

    xml-query-parser

    -

    A QueryParser that can read queries written in an XML format.

    -

    See xml-query-parser javadoc -

    -
    - -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/queryparsersyntax.html b/lucene/site/build/site/queryparsersyntax.html deleted file mode 100644 index c239d7d4ae8..00000000000 --- a/lucene/site/build/site/queryparsersyntax.html +++ /dev/null @@ -1,536 +0,0 @@ - - - - - - - - - Apache Lucene - Query Parser Syntax - - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    - Apache Lucene - Query Parser Syntax -

    - - - -

    Overview

    -
    -

    Although Lucene provides the ability to create your own - queries through its API, it also provides a rich query - language through the Query Parser, a lexer which - interprets a string into a Lucene Query using JavaCC. -

    -

    Generally, the query parser syntax may change from - release to release. This page describes the syntax as of - the current release. If you are using a different - version of Lucene, please consult the copy of - docs/queryparsersyntax.html that was distributed - with the version you are using. -

    -

    - Before choosing to use the provided Query Parser, please consider the following: -

      - -
    1. If you are programmatically generating a query string and then - parsing it with the query parser then you should seriously consider building - your queries directly with the query API. In other words, the query - parser is designed for human-entered text, not for program-generated - text.
    2. - - -
    3. Untokenized fields are best added directly to queries, and not - through the query parser. If a field's values are generated programmatically - by the application, then so should query clauses for this field. - An analyzer, which the query parser uses, is designed to convert human-entered - text to terms. Program-generated values, like dates, keywords, etc., - should be consistently program-generated.
    4. - - -
    5. In a query form, fields which are general text should use the query - parser. All others, such as date ranges, keywords, etc. are better added - directly through the query API. A field with a limit set of values, - that can be specified with a pull-down menu should not be added to a - query string which is subsequently parsed, but rather added as a - TermQuery clause.
    6. - -
    - -

    -
    - - - -

    Terms

    -
    -

    A query is broken up into terms and operators. There are two types of terms: Single Terms and Phrases.

    -

    A Single Term is a single word such as "test" or "hello".

    -

    A Phrase is a group of words surrounded by double quotes such as "hello dolly".

    -

    Multiple terms can be combined together with Boolean operators to form a more complex query (see below).

    -

    Note: The analyzer used to create the index will be used on the terms and phrases in the query string. - So it is important to choose an analyzer that will not interfere with the terms used in the query string.

    -
    - - - -

    Fields

    -
    -

    Lucene supports fielded data. When performing a search you can either specify a field, or use the default field. The field names and default field is implementation specific.

    -

    You can search any field by typing the field name followed by a colon ":" and then the term you are looking for.

    -

    As an example, let's assume a Lucene index contains two fields, title and text and text is the default field. - If you want to find the document entitled "The Right Way" which contains the text "don't go this way", you can enter:

    -
    title:"The Right Way" AND text:go
    -

    or

    -
    title:"Do it right" AND right
    -

    Since text is the default field, the field indicator is not required.

    -

    Note: The field is only valid for the term that it directly precedes, so the query

    -
    title:Do it right
    -

    Will only find "Do" in the title field. It will find "it" and "right" in the default field (in this case the text field).

    -
    - - - -

    Term Modifiers

    -
    -

    Lucene supports modifying query terms to provide a wide range of searching options.

    - -

    Wildcard Searches

    -

    Lucene supports single and multiple character wildcard searches within single terms - (not within phrase queries).

    -

    To perform a single character wildcard search use the "?" symbol.

    -

    To perform a multiple character wildcard search use the "*" symbol.

    -

    The single character wildcard search looks for terms that match that with the single character replaced. For example, to search for "text" or "test" you can use the search:

    -
    te?t
    -

    Multiple character wildcard searches looks for 0 or more characters. For example, to search for test, tests or tester, you can use the search:

    -
    test*
    -

    You can also use the wildcard searches in the middle of a term.

    -
    te*t
    -

    Note: You cannot use a * or ? symbol as the first character of a search.

    - -

    Fuzzy Searches

    -

    Lucene supports fuzzy searches based on the Levenshtein Distance, or Edit Distance algorithm. To do a fuzzy search use the tilde, "~", symbol at the end of a Single word Term. For example to search for a term similar in spelling to "roam" use the fuzzy search:

    -
    roam~
    -

    This search will find terms like foam and roams.

    -

    Starting with Lucene 1.9 an additional (optional) parameter can specify the required similarity. The value is between 0 and 1, with a value closer to 1 only terms with a higher similarity will be matched. For example:

    -
    roam~0.8
    -

    The default that is used if the parameter is not given is 0.5.

    - -

    Proximity Searches

    -

    Lucene supports finding words are a within a specific distance away. To do a proximity search use the tilde, "~", symbol at the end of a Phrase. For example to search for a "apache" and "jakarta" within 10 words of each other in a document use the search:

    -
    "jakarta apache"~10
    - -

    Range Searches

    -

    Range Queries allow one to match documents whose field(s) values - are between the lower and upper bound specified by the Range Query. - Range Queries can be inclusive or exclusive of the upper and lower bounds. - Sorting is done lexicographically.

    -
    mod_date:[20020101 TO 20030101]
    -

    This will find documents whose mod_date fields have values between 20020101 and 20030101, inclusive. - Note that Range Queries are not reserved for date fields. You could also use range queries with non-date fields:

    -
    title:{Aida TO Carmen}
    -

    This will find all documents whose titles are between Aida and Carmen, but not including Aida and Carmen.

    -

    Inclusive range queries are denoted by square brackets. Exclusive range queries are denoted by - curly brackets.

    - -

    Boosting a Term

    -

    Lucene provides the relevance level of matching documents based on the terms found. To boost a term use the caret, "^", symbol with a boost factor (a number) at the end of the term you are searching. The higher the boost factor, the more relevant the term will be.

    -

    Boosting allows you to control the relevance of a document by boosting its term. For example, if you are searching for

    -
    jakarta apache
    -

    and you want the term "jakarta" to be more relevant boost it using the ^ symbol along with the boost factor next to the term. - You would type:

    -
    jakarta^4 apache
    -

    This will make documents with the term jakarta appear more relevant. You can also boost Phrase Terms as in the example:

    -
    "jakarta apache"^4 "Apache Lucene"
    -

    By default, the boost factor is 1. Although the boost factor must be positive, it can be less than 1 (e.g. 0.2)

    -
    - - - - -

    Boolean Operators

    -
    -

    Boolean operators allow terms to be combined through logic operators. - Lucene supports AND, "+", OR, NOT and "-" as Boolean operators(Note: Boolean operators must be ALL CAPS).

    - -

    -

    The OR operator is the default conjunction operator. This means that if there is no Boolean operator between two terms, the OR operator is used. - The OR operator links two terms and finds a matching document if either of the terms exist in a document. This is equivalent to a union using sets. - The symbol || can be used in place of the word OR.

    -

    To search for documents that contain either "jakarta apache" or just "jakarta" use the query:

    -
    "jakarta apache" jakarta
    -

    or

    -
    "jakarta apache" OR jakarta
    - -

    AND

    -

    The AND operator matches documents where both terms exist anywhere in the text of a single document. - This is equivalent to an intersection using sets. The symbol && can be used in place of the word AND.

    -

    To search for documents that contain "jakarta apache" and "Apache Lucene" use the query:

    -
    "jakarta apache" AND "Apache Lucene"
    - -

    +

    -

    The "+" or required operator requires that the term after the "+" symbol exist somewhere in a the field of a single document.

    -

    To search for documents that must contain "jakarta" and may contain "lucene" use the query:

    -
    +jakarta lucene
    - -

    NOT

    -

    The NOT operator excludes documents that contain the term after NOT. - This is equivalent to a difference using sets. The symbol ! can be used in place of the word NOT.

    -

    To search for documents that contain "jakarta apache" but not "Apache Lucene" use the query:

    -
    "jakarta apache" NOT "Apache Lucene"
    -

    Note: The NOT operator cannot be used with just one term. For example, the following search will return no results:

    -
    NOT "jakarta apache"
    - -

    -

    -

    The "-" or prohibit operator excludes documents that contain the term after the "-" symbol.

    -

    To search for documents that contain "jakarta apache" but not "Apache Lucene" use the query:

    -
    "jakarta apache" -"Apache Lucene"
    -
    - - - -

    Grouping

    -
    -

    Lucene supports using parentheses to group clauses to form sub queries. This can be very useful if you want to control the boolean logic for a query.

    -

    To search for either "jakarta" or "apache" and "website" use the query:

    -
    (jakarta OR apache) AND website
    -

    This eliminates any confusion and makes sure you that website must exist and either term jakarta or apache may exist.

    -
    - - - -

    Field Grouping

    -
    -

    Lucene supports using parentheses to group multiple clauses to a single field.

    -

    To search for a title that contains both the word "return" and the phrase "pink panther" use the query:

    -
    title:(+return +"pink panther")
    -
    - - - -

    Escaping Special Characters

    -
    -

    Lucene supports escaping special characters that are part of the query syntax. The current list special characters are

    -

    + - && || ! ( ) { } [ ] ^ " ~ * ? : \

    -

    To escape these character use the \ before the character. For example to search for (1+1):2 use the query:

    -
    \(1\+1\)\:2
    -
    - - -
    - -
     
    -
    - - - - diff --git a/lucene/site/build/site/skin/CommonMessages_de.xml b/lucene/site/build/site/skin/CommonMessages_de.xml deleted file mode 100644 index bc461196e64..00000000000 --- a/lucene/site/build/site/skin/CommonMessages_de.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - Schriftgrösse: - Zuletzt veröffentlicht: - Suche: - Suche auf der Seite mit - diff --git a/lucene/site/build/site/skin/CommonMessages_en_US.xml b/lucene/site/build/site/skin/CommonMessages_en_US.xml deleted file mode 100644 index 88dfe143118..00000000000 --- a/lucene/site/build/site/skin/CommonMessages_en_US.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - Font size: - Last Published: - Search - Search site with - diff --git a/lucene/site/build/site/skin/CommonMessages_es.xml b/lucene/site/build/site/skin/CommonMessages_es.xml deleted file mode 100644 index 63be6712b30..00000000000 --- a/lucene/site/build/site/skin/CommonMessages_es.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - Tamaño del texto: - Fecha de publicación: - Buscar - Buscar en - diff --git a/lucene/site/build/site/skin/CommonMessages_fr.xml b/lucene/site/build/site/skin/CommonMessages_fr.xml deleted file mode 100644 index 622569a4ffa..00000000000 --- a/lucene/site/build/site/skin/CommonMessages_fr.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - Taille : - Dernière publication : - Rechercher - Rechercher sur le site avec - diff --git a/lucene/site/build/site/skin/basic.css b/lucene/site/build/site/skin/basic.css deleted file mode 100644 index eb24c326c6c..00000000000 --- a/lucene/site/build/site/skin/basic.css +++ /dev/null @@ -1,166 +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. -*/ -/** - * General - */ - -img { border: 0; } - -#content table { - border: 0; - width: 100%; -} -/*Hack to get IE to render the table at 100%*/ -* html #content table { margin-left: -3px; } - -#content th, -#content td { - margin: 0; - padding: 0; - vertical-align: top; -} - -.clearboth { - clear: both; -} - -.note, .warning, .fixme { - border: solid black 1px; - margin: 1em 3em; -} - -.note .label { - background: #369; - color: white; - font-weight: bold; - padding: 5px 10px; -} -.note .content { - background: #F0F0FF; - color: black; - line-height: 120%; - font-size: 90%; - padding: 5px 10px; -} -.warning .label { - background: #C00; - color: white; - font-weight: bold; - padding: 5px 10px; -} -.warning .content { - background: #FFF0F0; - color: black; - line-height: 120%; - font-size: 90%; - padding: 5px 10px; -} -.fixme .label { - background: #C6C600; - color: black; - font-weight: bold; - padding: 5px 10px; -} -.fixme .content { - padding: 5px 10px; -} - -/** - * Typography - */ - -body { - font-family: verdana, "Trebuchet MS", arial, helvetica, sans-serif; - font-size: 100%; -} - -#content { - font-family: Georgia, Palatino, Times, serif; - font-size: 95%; -} -#tabs { - font-size: 70%; -} -#menu { - font-size: 80%; -} -#footer { - font-size: 70%; -} - -h1, h2, h3, h4, h5, h6 { - font-family: "Trebuchet MS", verdana, arial, helvetica, sans-serif; - font-weight: bold; - margin-top: 1em; - margin-bottom: .5em; -} - -h1 { - margin-top: 0; - margin-bottom: 1em; - font-size: 1.4em; -} -#content h1 { - font-size: 160%; - margin-bottom: .5em; -} -#menu h1 { - margin: 0; - padding: 10px; - background: #336699; - color: white; -} -h2 { font-size: 120%; } -h3 { font-size: 100%; } -h4 { font-size: 90%; } -h5 { font-size: 80%; } -h6 { font-size: 75%; } - -p { - line-height: 120%; - text-align: left; - margin-top: .5em; - margin-bottom: 1em; -} - -#content li, -#content th, -#content td, -#content li ul, -#content li ol{ - margin-top: .5em; - margin-bottom: .5em; -} - - -#content li li, -#minitoc-area li{ - margin-top: 0em; - margin-bottom: 0em; -} - -#content .attribution { - text-align: right; - font-style: italic; - font-size: 85%; - margin-top: 1em; -} - -.codefrag { - font-family: "Courier New", Courier, monospace; - font-size: 110%; -} \ No newline at end of file diff --git a/lucene/site/build/site/skin/breadcrumbs-optimized.js b/lucene/site/build/site/skin/breadcrumbs-optimized.js deleted file mode 100644 index 507612af872..00000000000 --- a/lucene/site/build/site/skin/breadcrumbs-optimized.js +++ /dev/null @@ -1,90 +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. -*/ -var PREPREND_CRUMBS=new Array(); -var link1="@skinconfig.trail.link1.name@"; -var link2="@skinconfig.trail.link2.name@"; -var link3="@skinconfig.trail.link3.name@"; -if(!(link1=="")&&!link1.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link1, @skinconfig.trail.link1.href@ ) ); } -if(!(link2=="")&&!link2.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link2, @skinconfig.trail.link2.href@ ) ); } -if(!(link3=="")&&!link3.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link3, @skinconfig.trail.link3.href@ ) ); } -var DISPLAY_SEPARATOR=" > "; -var DISPLAY_PREPREND=" > "; -var DISPLAY_POSTPREND=":"; -var CSS_CLASS_CRUMB="breadcrumb"; -var CSS_CLASS_TRAIL="breadcrumbTrail"; -var CSS_CLASS_SEPARATOR="crumbSeparator"; -var FILE_EXTENSIONS=new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); -var PATH_SEPARATOR="/"; - -function sc(s) { - var l=s.toLowerCase(); - return l.substr(0,1).toUpperCase()+l.substr(1); -} -function getdirs() { - var t=document.location.pathname.split(PATH_SEPARATOR); - var lc=t[t.length-1]; - for(var i=0;i < FILE_EXTENSIONS.length;i++) - { - if(lc.indexOf(FILE_EXTENSIONS[i])) - return t.slice(1,t.length-1); } - return t.slice(1,t.length); -} -function getcrumbs( d ) -{ - var pre = "/"; - var post = "/"; - var c = new Array(); - if( d != null ) - { - for(var i=0;i < d.length;i++) { - pre+=d[i]+postfix; - c.push(new Array(d[i],pre)); } - } - if(PREPREND_CRUMBS.length > 0 ) - return PREPREND_CRUMBS.concat( c ); - return c; -} -function gettrail( c ) -{ - var h=DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=DISPLAY_SEPARATOR; } - return h+DISPLAY_POSTPREND; -} - -function gettrailXHTML( c ) -{ - var h=''+DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=''+DISPLAY_SEPARATOR+''; } - return h+DISPLAY_POSTPREND+''; -} - -if(document.location.href.toLowerCase().indexOf("http://")==-1) - document.write(gettrail(getcrumbs())); -else - document.write(gettrail(getcrumbs(getdirs()))); - diff --git a/lucene/site/build/site/skin/breadcrumbs.js b/lucene/site/build/site/skin/breadcrumbs.js deleted file mode 100644 index aea80ec045b..00000000000 --- a/lucene/site/build/site/skin/breadcrumbs.js +++ /dev/null @@ -1,237 +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. -*/ -/** - * This script, when included in a html file, builds a neat breadcrumb trail - * based on its url. That is, if it doesn't contains bugs (I'm relatively - * sure it does). - * - * Typical usage: - * - */ - -/** - * IE 5 on Mac doesn't know Array.push. - * - * Implement it - courtesy to fritz. - */ -var abc = new Array(); -if (!abc.push) { - Array.prototype.push = function(what){this[this.length]=what} -} - -/* ======================================================================== - CONSTANTS - ======================================================================== */ - -/** - * Two-dimensional array containing extra crumbs to place at the front of - * the trail. Specify first the name of the crumb, then the URI that belongs - * to it. You'll need to modify this for every domain or subdomain where - * you use this script (you can leave it as an empty array if you wish) - */ -var PREPREND_CRUMBS = new Array(); - -var link1 = "@skinconfig.trail.link1.name@"; -var link2 = "@skinconfig.trail.link2.name@"; -var link3 = "@skinconfig.trail.link3.name@"; - -var href1 = "@skinconfig.trail.link1.href@"; -var href2 = "@skinconfig.trail.link2.href@"; -var href3 = "@skinconfig.trail.link3.href@"; - - if(!(link1=="")&&!link1.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link1, href1 ) ); - } - if(!(link2=="")&&!link2.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link2, href2 ) ); - } - if(!(link3=="")&&!link3.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link3, href3 ) ); - } - -/** - * String to include between crumbs: - */ -var DISPLAY_SEPARATOR = " > "; -/** - * String to include at the beginning of the trail - */ -var DISPLAY_PREPREND = " > "; -/** - * String to include at the end of the trail - */ -var DISPLAY_POSTPREND = ""; - -/** - * CSS Class to use for a single crumb: - */ -var CSS_CLASS_CRUMB = "breadcrumb"; - -/** - * CSS Class to use for the complete trail: - */ -var CSS_CLASS_TRAIL = "breadcrumbTrail"; - -/** - * CSS Class to use for crumb separator: - */ -var CSS_CLASS_SEPARATOR = "crumbSeparator"; - -/** - * Array of strings containing common file extensions. We use this to - * determine what part of the url to ignore (if it contains one of the - * string specified here, we ignore it). - */ -var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); - -/** - * String that separates parts of the breadcrumb trail from each other. - * When this is no longer a slash, I'm sure I'll be old and grey. - */ -var PATH_SEPARATOR = "/"; - -/* ======================================================================== - UTILITY FUNCTIONS - ======================================================================== */ -/** - * Capitalize first letter of the provided string and return the modified - * string. - */ -function sentenceCase( string ) -{ return string; - //var lower = string.toLowerCase(); - //return lower.substr(0,1).toUpperCase() + lower.substr(1); -} - -/** - * Returns an array containing the names of all the directories in the - * current document URL - */ -function getDirectoriesInURL() -{ - var trail = document.location.pathname.split( PATH_SEPARATOR ); - - // check whether last section is a file or a directory - var lastcrumb = trail[trail.length-1]; - for( var i = 0; i < FILE_EXTENSIONS.length; i++ ) - { - if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) ) - { - // it is, remove it and send results - return trail.slice( 1, trail.length-1 ); - } - } - - // it's not; send the trail unmodified - return trail.slice( 1, trail.length ); -} - -/* ======================================================================== - BREADCRUMB FUNCTIONALITY - ======================================================================== */ -/** - * Return a two-dimensional array describing the breadcrumbs based on the - * array of directories passed in. - */ -function getBreadcrumbs( dirs ) -{ - var prefix = "/"; - var postfix = "/"; - - // the array we will return - var crumbs = new Array(); - - if( dirs != null ) - { - for( var i = 0; i < dirs.length; i++ ) - { - prefix += dirs[i] + postfix; - crumbs.push( new Array( dirs[i], prefix ) ); - } - } - - // preprend the PREPREND_CRUMBS - if(PREPREND_CRUMBS.length > 0 ) - { - return PREPREND_CRUMBS.concat( crumbs ); - } - - return crumbs; -} - -/** - * Return a string containing a simple text breadcrumb trail based on the - * two-dimensional array passed in. - */ -function getCrumbTrail( crumbs ) -{ - var xhtml = DISPLAY_PREPREND; - - for( var i = 0; i < crumbs.length; i++ ) - { - xhtml += ''; - xhtml += unescape( crumbs[i][0] ) + ''; - if( i != (crumbs.length-1) ) - { - xhtml += DISPLAY_SEPARATOR; - } - } - - xhtml += DISPLAY_POSTPREND; - - return xhtml; -} - -/** - * Return a string containing an XHTML breadcrumb trail based on the - * two-dimensional array passed in. - */ -function getCrumbTrailXHTML( crumbs ) -{ - var xhtml = ''; - xhtml += DISPLAY_PREPREND; - - for( var i = 0; i < crumbs.length; i++ ) - { - xhtml += ''; - xhtml += unescape( crumbs[i][0] ) + ''; - if( i != (crumbs.length-1) ) - { - xhtml += '' + DISPLAY_SEPARATOR + ''; - } - } - - xhtml += DISPLAY_POSTPREND; - xhtml += ''; - - return xhtml; -} - -/* ======================================================================== - PRINT BREADCRUMB TRAIL - ======================================================================== */ - -// check if we're local; if so, only print the PREPREND_CRUMBS -if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 ) -{ - document.write( getCrumbTrail( getBreadcrumbs() ) ); -} -else -{ - document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) ); -} - diff --git a/lucene/site/build/site/skin/fontsize.js b/lucene/site/build/site/skin/fontsize.js deleted file mode 100644 index 11722bfc52f..00000000000 --- a/lucene/site/build/site/skin/fontsize.js +++ /dev/null @@ -1,166 +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. -*/ -function init() -{ //embedded in the doc - //ndeSetTextSize(); -} - -function checkBrowser(){ - if (!document.getElementsByTagName){ - return true; - } - else{ - return false; - } -} - - -function ndeSetTextSize(chgsize,rs) -{ - var startSize; - var newSize; - - if (!checkBrowser) - { - return; - } - - startSize = parseInt(ndeGetDocTextSize()); - - if (!startSize) - { - startSize = 16; - } - - switch (chgsize) - { - case 'incr': - newSize = startSize + 2; - break; - - case 'decr': - newSize = startSize - 2; - break; - - case 'reset': - if (rs) {newSize = rs;} else {newSize = 16;} - break; - - default: - try{ - newSize = parseInt(ndeReadCookie("nde-textsize")); - } - catch(e){ - alert(e); - } - - if (!newSize || newSize == 'NaN') - { - newSize = startSize; - } - break; - - } - - if (newSize < 10) - { - newSize = 10; - } - - newSize += 'px'; - - document.getElementsByTagName('html')[0].style.fontSize = newSize; - document.getElementsByTagName('body')[0].style.fontSize = newSize; - - ndeCreateCookie("nde-textsize", newSize, 365); -} - -function ndeGetDocTextSize() -{ - if (!checkBrowser) - { - return 0; - } - - var size = 0; - var body = document.getElementsByTagName('body')[0]; - - if (body.style && body.style.fontSize) - { - size = body.style.fontSize; - } - else if (typeof(getComputedStyle) != 'undefined') - { - size = getComputedStyle(body,'').getPropertyValue('font-size'); - } - else if (body.currentStyle) - { - size = body.currentStyle.fontSize; - } - - //fix IE bug - if( isNaN(size)){ - if(size.substring(size.length-1)=="%"){ - return - } - - } - - return size; - -} - - - -function ndeCreateCookie(name,value,days) -{ - var cookie = name + "=" + value + ";"; - - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - cookie += " expires=" + date.toGMTString() + ";"; - } - cookie += " path=/"; - - document.cookie = cookie; - -} - -function ndeReadCookie(name) -{ - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - - for(var i = 0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0) == ' ') - { - c = c.substring(1, c.length); - } - - ctest = c.substring(0,name.length); - - if(ctest == name){ - return c.substring(nameEQ.length,c.length); - } - } - return null; -} diff --git a/lucene/site/build/site/skin/getBlank.js b/lucene/site/build/site/skin/getBlank.js deleted file mode 100644 index d9978c0b3e6..00000000000 --- a/lucene/site/build/site/skin/getBlank.js +++ /dev/null @@ -1,40 +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. -*/ -/** - * getBlank script - when included in a html file and called from a form text field, will set the value of this field to "" - * if the text value is still the standard value. - * getPrompt script - when included in a html file and called from a form text field, will set the value of this field to the prompt - * if the text value is empty. - * - * Typical usage: - * - * - */ - diff --git a/lucene/site/build/site/skin/getMenu.js b/lucene/site/build/site/skin/getMenu.js deleted file mode 100644 index b17aad61858..00000000000 --- a/lucene/site/build/site/skin/getMenu.js +++ /dev/null @@ -1,45 +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. -*/ -/** - * This script, when included in a html file, can be used to make collapsible menus - * - * Typical usage: - * - */ - -if (document.getElementById){ - document.write('') -} - - -function SwitchMenu(obj, thePath) -{ -var open = 'url("'+thePath + 'images/chapter_open.gif")'; -var close = 'url("'+thePath + 'images/chapter.gif")'; - if(document.getElementById) { - var el = document.getElementById(obj); - var title = document.getElementById(obj+'Title'); - - if(el.style.display != "block"){ - title.style.backgroundImage = open; - el.style.display = "block"; - }else{ - title.style.backgroundImage = close; - el.style.display = "none"; - } - }// end - if(document.getElementById) -}//end - function SwitchMenu(obj) diff --git a/lucene/site/build/site/skin/images/README.txt b/lucene/site/build/site/skin/images/README.txt deleted file mode 100644 index e0932f4a46d..00000000000 --- a/lucene/site/build/site/skin/images/README.txt +++ /dev/null @@ -1 +0,0 @@ -The images in this directory are used if the current skin lacks them. diff --git a/lucene/site/build/site/skin/images/add.jpg b/lucene/site/build/site/skin/images/add.jpg deleted file mode 100644 index 06831eeb3ddf196c72e23557e0ed23ab5eebef14..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1142 zcmex=8LQWSUGXZw=a9;-CH1opy?hi@Re9OjXnTmIP&sRNi|KfA6jNG!RuT!@9YtHw( z9erp2Zq<%rjVqhBF6#`j(Nz7-sP^lFKTm1Gh0D`qPDac0FaMRdT;F`zq?kW-W@pz% ze5s1wt~F!ht0dJ-6Wtq2zbVbV=fB~?vunDX+mkr&9obTxINM8acHwgGD`nz_>c8~X z#64k4<|uMwTb-nlGND71x8e8h0CS_Z??Mj^qF+we3cIj#)xArPJbFc z1J^&EzSnzGz5a8z`w3oY3k27{($?ztW&09(=ivnpp{KI7WqXY09TH4GKIhxFx{~WE za;gV-Un(Aaa&M}6?~U3j!7KUi>iU;l*gowzla$PHmbcrJ<^Kv-hZ^4yNZ?w%@WRrg z9hKMiif_BPt>>(?=HJZAb?S+a3uMc;RsFTId)L4BO>y9_%h9vu@!Dqx|QqvyOz9SIJ(F^=e;T^m(oCzw|lXRk=EsYqq%^ zT`d)L>*v{G>#v@6=iH9&5}xL?Y5R3H&Bwh9=Y-v2RZ~9aIrWlLlqS2Jh$?@c!KtzFq_@~|twFFteiZSS44jqO(VSv>5s zSk$Z3r4sR|%QU3V;-b@%!bJ@$Iu>ZHYFM=ZnC>fE$}45(-kf`P=H0v9*1LrwXLhOr z(Tqu+Dw97yVxO<^>3%?xVY_#66#K#toTr`}oRP~sdOKTC=ER@XAKDdr{M$Kf7M%Ki l%F17_Xw@h6ZS#V!{>|Nxc>kE diff --git a/lucene/site/build/site/skin/images/apache-thanks.png b/lucene/site/build/site/skin/images/apache-thanks.png deleted file mode 100644 index c0bea09cc8bcb9783fa3a67cb35db96f761002c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4840 zcmVP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#000s{ zNklmD^CEGjNos2W5-LQ6s;1O7XK!6{Zo{@p(wsthM zw4%1I4#S5J$L!g&QC?n-99;~A3OQ<8nsN8tcjM5ZLpXEh463WEQCnNv??@jvZX5?S zVkIRd`10}ALRwlHUVH5|K zuy5Z!tX{pkFVdo;qp@z?IusQZ@o1#)-+%vol$DkBo$JSB@8AEE zd&*#eMb{)u4j(>@<;$0&qoad=M_K#mqmN?FoH;y`Y5fBaJOHE7*tcH9UXOacUcQJT z`1adx$H|i?@x&8P!0-3tuDkBSj2SZ+_r{>E#Rxg0gRGpvIQ-Q<=s$0TLZ!w@i62+m zqfx4M;DL4-{=?LSwKYNPJaq)=wN)tFzZba-oZ>+PQ7~;f#!sAt`1p8!Qv|fft%W%gXcOWY(3opL-B0`}MzgY@`jT<-ehhDsRF^Y?edFB-q6ky`SiFo6U zH~4Y8ckjkr=3Kf40a#dA$iXBKySuxwcI{d``|PtwO-O~h_#KGRQX%nwgeE`!x^pF%` z1TICzs#UA7efxI2`s%AZ>QYitAPNU?@X&Yg2ZKn`$KX_j5yu?u7$i)>r?MX0>`K8# zjRi|w33yy%!V~5w?CZ5*bV!dy2TdrgJdT|2DxvP_#3^4d7GALkmoK^k>FMd5>!wbf z%DHdDh7H`Q0|yS|QFHqAX@0XRl?wOXdoQF?DUWQ5c;fxhqepYF4jw!R3YPWj*K;80 zf!C~A!_P(cPtQihnE)V%QU zHZ+`SMn+N!ylNq?+_3(8kBdaO>Z+@7fUzSZ9LkD?}@udj2OXz zrUxUyTrL-sN+pjdav+&br^DE>WBKRJ&CNVJ$S7MV;=8)KesZ0cUV4cK-pen)%xQ@n zLzzSw6LA1h7CE0Nm9mM>_0&^OonNLA&{XJNc;N*sTC@lsfBZ2H95}%FnTi@w$F4m) z5hu%m09tGbAHf9Qc)TGvfK*2k)C!<27>(ocz=X~yY>{*_{AJh?@*}8{V`!}l-^FTh zt67HCu3F5^O+ey+On&XQij!EpU^X&xhVb_b7A)YAMh{PsLFRV5IY1Gk$R&W2l9G68 zUV7=Jxbx0CIhBx6lt(NAc4K2>-)A*7HJmceWk-)5?ZbqwO90a=a-NwpXY$wCM%2_V z9Xw#b0AyrlV%aUXK^~<;V_OHJ4ROe3pEcJsqO9u^Xw`ZQ&}G7+_dprU!UVoG-|zKd_b&0SG=JE0egSTsMWZNqa$4YtoKfkZC*zR)ed;|KRZ z4-;=tK_~VjZ~A2Z8D-Vuk3Y`&yS=>~g9i`hpOZYi#5-XIM~i*k%Icg7hmA*x8MH3cjSl*0!(~FoVfXKTQRz1B95_?%^5rl zZkGcEg9amTT8sp3CL~cpba-0v_fvm?Qm#R~CJikbJL~}u^j#xyobj2}tHNGE04kRV z8^v~LeF-SlTTs-a#A9(mtXwdUU(-}s16Okg#Qp#R8WF@P$w+2Ae0||Gys`8Kc&k~| zUA=@WgQDmFte#p}+4ED)AR9V#DCa=3Pe1*XD+!_;DohcpV-ho>>!~nNR#3E41QRz? z@$8RLT_PJYWC%X^-~$9%U7}(-VZsDXDHjBoc&3|4t767)ZS8HWS{snSQZOTV0Q6s- zf}U~h3AY&+TMMu&Ar+%U7sD>^M5D6~` zOzss6qfi!hVt^qZgC-U6YyRgw>rlAIh+XmqsMxwu4EW@~zJQpC<1joNhvEbO5d0-e z?m^>c`!HiwG4C?Hj$XX`;=`D`^hW+Y(F6fT(vu2Pq#LCoN&t{T*|lpI=lTe!@4fe4 zzx6FiH!6fgOP_r52?u=1k|mtyBiX{6mh+vUx3?Enm6ez@VLVhyIWD_&DjYp##6|0% zt#5(BWyMfY7?T4nC~!4n346dKuNK2~qcA=7a?DIv45dJZ9=8#DjekXh;}mvj52MZ9 z1974ntu7_3X#ngAPJGX7IlZq`8sN%NNy3JRLF_9 zNoLWpq&BG5^w&t&Q+=Rjia40m2+_=Ak3Gi0kC@;>!yc;4`AqHDQRBg2N|bTkRW@Ck%S?8=2%-;C&<6x3=DK`v6F&R&T&OB37y z7Zfrj^igq$5gU*vNrE{nhp;D%6g0r96kw=34;AWqOt&TATX_q#atT5zDPF4G!vVf5 zF(3B?Q?M&fh>_)usPs9oFMb$?_NKzAufVKvS{yLCG4QAbbKDXBuA=Fo#Ne4&aA1Z4_PtR zX~)r^4`LSKMHVkAS#)~^UI;`2NS$%;$~&O<=wVe@k!~3drA7gRBoQN`i&>FTLnTq7 zy7MHCSt`)bTM4760X}^cY(f>Pg%&t`LA0xcPzZFWg%=)GJ{B*Z!HQ8BXV&gVsq{3i zYZYK`z=ESGlOVSagH3e;^Q=a^(qzU2V-~7aJ#ZDNp-m3sB7+yD8@Hg4txuJ?QQlsG zkpoY%}VH4YShSSKeh`3Op8eRP}L-`sVGodjGj6T zg2F+tYTR(Ty5Lr_3ayHQk~I*WUDa6Tv!Fxo$4I*$UBY&h_yn-4?eKPYVp!12ikKc* zwi3iA#3M5*9Yb`5EK2pT_-rutHlw|_0j-`EoOafuF4O@RW3w>3*0SYG5M}`V;g#o* z7t*4`AHp}WsZd&m!YAF21)eUv$2wAje>yChT1;k*&iqC{b_PV~t_fphml|6=?GVbG zSW%!t>E5Gg=x9Ru(QQl-negqm$613?gmJ|sT+01eRs3ALAi(D`l1C>_oPfm@z}Wd$ zK#-LHQ;G`vTaKg4Z^t^50$XL>ETWih4LVTk>A>|Yg{w6lTGBYg zQZ)z#g{*+fP*d9q15-FocL*!*T*Cv523Ha4AkL;nf)ooWkfsaN<-0FH=v zY9EO*%)MSD<&8w*uo2KOun(xMIPEoK`T#A=Vli&%Wl)Z`a-b&4 zj)2n)vAqW>xfc$J8#g&)P$xeI4^tR7`O{D@K7*+qCina&F)5gY4yOn)_B14gq>w11 zkR&WXv~&QYks#9agZTAAtaN+Ab{K_X>=lP`fMvvKu>-AM6Z}#!c4&fVN(>_`5i+L= zv2$lD9$uP<(j6^W|42US>Ya$y2Jxpqy@{eRBaxDpi&KmqNfQ%alN5XIx#uu{{(P=b zsJKx(O|yyL4B&_nPZ7}6vbMFgK_FJ3aLz(xm5jv^xf2zkW~Nu!ak+AgD^%mHmQEBh zJ={4)fdB*Ljt(hK>sSXTbVF!n3Pa0MInawWHVL+>&4}@Nn9MWbX15L>h#HaZvLROy zMl5rb-e-qN;Y5OWJfuo9Ms!*s^4JlU4Tdh{M3OTMjcgbs9wmy^%n2a{nnH}r#IXpn zc3vb1BQZ(|r^Am|ORJz3OR(kRCN#J7;@d-QtWc(*p}qmD{_rdxAkkEijM`+H(2@S8 zxdn|7h&s&q@z=6w zJZVCklnL`&Q}LHdBlNZa3OoXo%lr@r0~qNO;cq$*x>#hFNTbjaa3ZJ-W3^d~4>eAx z9aanx1(2YUA)5VPFR8=Du547P8}T3m(}WhBae9!=nxF)a5t%BMNfsk3t`a2MOiXqv zkW{aPC{K#Yb`uuON+ywvp+jOZwZH%$%K}xj2u&R}$fOF4pR$n887P3x2AGCBB==~Z zP7Teu0Pd4%6#AqK&t)|9x$nOF`nsf_YjguNeWHmKjYO%nrNR0;@4UlOOpCJ3AH(Bx zVJs_nRrQ^4SnQajG+>vj0d{c^6FcQN=(OU}!aPKE_245@FS6YNXrfp#^D#xixV2fO zLAFJVdW{RSJRuy9R-o*R2@}=PaN4Yh8<2rRU2TlZRWOA8sFjE?j5(uzPyp3BC&r9S zKu5O+-DVfEQe$zf!iLzyWCl(Q^701r2_5n6FW!@*Hjg5ej8gu_8*k(jH8PqI{Td?~ zvuDp9{)$8Z$syt~YBdS?M5akwn5I;xWkD~M!k?0YH6g9mrJbphUMEHgG!WNRAu)3TPS)?kw3)LRr|KcqR`HQ1b$vT_{4#KV0Pxuwjzw9(s}0?LZ#dC3pT=+`QD|G_$tR!W(|&pYibR?hQ=y{~CxP_v!w+*{h+b%(OapbA zr_x}Wj)_dM2te9mAuuVbmn~byD>8LQ^x0c)z124|{AV;_e-ETag9g*bk00l|90Yh| z>PCQ4A5T@5ydRlvMP?cl#neWUBM8Jui%DBVlpPe^WVGu*?JMy#6%pF>j8yJ_`QJrQ zlu=qm8VwqdkdesF$;sin12kEpmXT((5hL!3%v8xqk#)3NLEAh;6A|v;xpOC{3Yu_H z7e&!aPWflHen)Tw+;eTU)9{-{bhLp;GuX3#%W%GRByUJf5V$K=tmw-I>WF9~^Pz_x z;yb@YE&mn(pU+6T(Z*y&MFmg$%P+sYFCzatqxO>`n&^eLzG?U5y6djv8=jOQ6v?D3 z>DNU678G$l`|!gL`PM%5;Z)RU$W2@SwDnGE<3dJ5Z+bod{PR3w>Gut^@f!JU!Ot0j z|9`X#&V&1FB++OilK7T(Lr5C+XWaK=qb+&jbm|I!srLMr1o(G5xBV9@zOkmtydPKq O0000`&c?Q6*Ty|ly1Vlr)YCcFJ$W@+ZDmL@wHr<=uO+^J!wGfd~JhObO5 zEhbab8SO9`O;5+usnKFLlghY55+}}X9E9uF;X3a>;QhRw_w#x$UcyUCUXzQ7!aTuX z2t<;#%>fMUKy3y}6Oid4wN;`-NenKHK@$jsQngO3Kv9Fm;p!ucRDh=@vjid;Vzb#s zd_Ex5(0CGoRINk}gM))y9?xoTrwA25q9c+iK;N#@>wwO#QmIfBC5cpSw_9(v@kA1q zP@a;K5<+3v+MGaPqzdGH-a(~C55%b1)-DiBsVOi(ZA3AmRH{NKOjx1#Zb zu6TmdNTe_(NDV|<3Yp21sw&xBZlA{sL?{E60F{|YA`?i|wzjquk%BFhxLhuvvH+!- z#*+fMQD?O3^?FEAPo>dDMn;TgtJCQOYO7FM>ht*^>0ugoHGtKWlpL4at56|>!y}NW zQlT+GsEtHr0GSaeOnC}ag&G+=sn%!}$u&F}Cgzn{tyZJSM53`sd1a6oZFjgl-r*GC zCY45Kx7$gy6pzOPsmzev7(%8wU44Q)IV_ezN)sf|KzTZc)5R7ke7@(9+(2OoAc>wO zkaNXK3X>;O>xYMj313wZDz$n86P6L=1_fdO8as_Efy6o@g{je-P1Z{ehXeXbn5VPa z9YCN7AriF)3sHiSs7#?qOrbFqh|c3392xNewFSrw5~Y^J-~q%&W^h$n6Zm^oHkkHnf!<#&$X(w!Dv#=ym$&HKd33ak<_(uPu2m}j)4msQWtZw3IFID zn0tTwkf$N7lhBpiaTP>Qyc~F?p`s=@=kW#$ZN0nY<@9~@D{sFkAiSaUH}XH9adw~0 ztlj?PZpY9`O?nJ~M#nd=`s424&Q-_f7;|LDi=8*7b!8WK|0^gnYn*>Lrn%R@wu1-M~UshE9KC#uP3O$Deg%>$bz3LW0DboKUC;jQh^` zD6f2XP&0nsQcIybS_03g+!g=fyM9hmDR>e`#1~wjo^)kRXOez(f}8#MB(c$gi(fn9 zJ9@h-yKY8&!0YSDpZpz}^Uoi9R2b99hdXq&G>IF-P7qdKh-W9BSq_DFH{n)IO?<|g z5_y5XaO$nz^qK?4(1Rtqwp#(?=!s(;ejg95>@R(wR>fBwHT;LZ@V;Qn*s<62Ip8j}+nKD;YH z7mPL+ObE&Uh`oucFFbI?^Eq}mXsF;11%`Zo^i|8f0L~%T?a|V|-h2jQqg{Bv%^zc0 zZ$It1Ty-}urn6=EW~Fb|qK`?6ebYj7V4m>AXb>sa~Njm-)y zZhYLAOR4tO^8`}pP%#Ipx>qzm>c$vWo0?t9)kL;&{&aubx%OcNj=xOeob)^)t39=A zG{niC9n=}&`ro`&(L+%ill&@R>|QQEJwN>}8g*ycfxY~76UQn$=x8q{E}(P6^t5VR zF9wOPA5Xb)2Z^?qmTwJuh~JrjW0Gy>hD-eL!FM!xR`!(2_fIB$u5Csh#C34ObFOdx zW;w(P$~O=9I>MXo)X!~xLD=-nxuCFQQTVrSD+H|)6d#RDb|(;uOHZ#lg#iFm9*o@~ zE0~KlkqyI9jMb)yI@Dk;D(e0znI8IWepdusg{3EDN;mnXK@~&ij^Q2Hm}VU0X|`vE z`Qz%|EsVNzHO)LfD6+Q1vD4pHzO;4dP-zi1TKET&TlX-mupW~v_z_lMD1ICH9DhOZ zZbh%I=JX{e+p;W$lk~8*G#6sMF4C+Y?U?vm&Wz|w`FPBtX_y6jxh)VSU`bE0_#t;u zQrOp)L;ZCVdOIQ-ZT?$z=j$vlFrhcg_WocBJ;t@?4<`zu$NlhjxgRE0vrEuWw%s@u zh$-n#eEqU)PHF#!v8UzaPtL@{%eWO^yh{r2ZePo82z} diff --git a/lucene/site/build/site/skin/images/built-with-forrest-button.png b/lucene/site/build/site/skin/images/built-with-forrest-button.png deleted file mode 100644 index 4a787abe4dc7831124c5a3105d328309d671654e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1936 zcmeAS@N?(olHy`uVBq!ia0vp^5kM@@!3-or#C}}@QVJ!m5hWp+B{``KPNkVSB?{%4 zB^e5i1&PTSsS0lSMMbH_C5p!XSU`qIg48;emSp4?F%*}imZj$9IV6Hr>g5-upPn-{ z7N|%Aq{unHpt2}4J)?vn1ZWJ@wBY=-lJdkNkg=tCDTyVS`FXqD1Vn&(#K3xrQo&*h zA(^?U42FjK2B!K3Mr$wBh5%Ktmw5WRvR~q672y_j(|Vu{6yhxKh%9Dc;Q9c)(aAfd*^e>N}8ml8GDLnbh$Vh8yg>#P$;PF zC>QelbcQQ9twO^-_C801qj=2GblKSS!fj&e!5;2=cvDr4f*v|q3raa`n#2k(0Hfotk0b1J=Zc zVix-wb&f*FNxFAB>YkC+NOHE=$eo>CQlF6FW+Y*C$UweP(%~&@q>7f$#X#{A z;Q~QbwWpj0XSnm#bgimu&2m(IKJ4T((08AzspZ9!kdUPob@ zhUPNf9CfQG1}XglS^Z_=`jsLf7uek{k1Lkt=SCSE_Dw?nen%L4B7i^>@v~C&d=nR^FdJVP^0Cp33}tc?Gq$O(FfPpv_~AIPICFic;5W(Z>PHY@&p}`TbikKkV444Jk93Se-mtf*V{`vIwng zXu9Mqxh&@_YxVKtE1Q|E&EFj=C=gTZUe?$exv?(b$cHuUKkhedO?dx=U+Qq@<*v^rKUcg+uGXdSD-c1$LjDs$D3&%&n#_h{2#BhC!i@(`b;D9TORRq zdb5xI_xrb_^#0kXwa*@ycsr?PYU?avxGJe9GyUl7*!OiS zyFPrgF>;P=eC379dw#zycy~ibF5adl<@V%<|Ac&Q-%p5$abw8I1(|q!`K$Bs-$Ufi zn-NYN)w4{zw?yhbQXIC#@eD+l6OwziP6C9qB=6m^)Bp&s4|Xb_eY#M_>}{ahob-+F#617?*~$q0=_@T*^V)U2LV1m;&(&(TU%TRD_D(n) zkt5*A;KlgCw)x%rA4f%Q=dtWM=lnF0i|2Y{YvH!Kii;L@-PURI*lQP0-t8T_&{^nm zamG&RnUcY0o~~6qWBy(4eNK5~Ox(I2w%NP3-IJSYEYXC!` B3(^1p diff --git a/lucene/site/build/site/skin/images/corner-imports.svg.xslt b/lucene/site/build/site/skin/images/corner-imports.svg.xslt deleted file mode 100644 index 95b58d26f3c..00000000000 --- a/lucene/site/build/site/skin/images/corner-imports.svg.xslt +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - 0 - - - - - - fill:; - - - fill:; - - - stroke:; - - - - - - - - - 1 - -1 - - - - - 1 - -1 - - - - - 0 - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/build/site/skin/images/current.gif b/lucene/site/build/site/skin/images/current.gif deleted file mode 100644 index fd82c082012faa682ecd4e68d2eedef9ae2e6231..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmZ?wbhEHb - - - - - - - - - - - diff --git a/lucene/site/build/site/skin/images/external-link.gif b/lucene/site/build/site/skin/images/external-link.gif deleted file mode 100644 index ff2f7b2a0edcd149b45744fdcb0868e37143710c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71 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 P00000NkvXXu0mjfVyU~g diff --git a/lucene/site/build/site/skin/images/hack.jpg b/lucene/site/build/site/skin/images/hack.jpg deleted file mode 100644 index f38d50fe4e87cb4ede05ce4b6f124460b77f2a0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 743 zcmex=i3*BJ!6k`h{6D}T z$iX1OAi~Tj$iO7X$SlbC{|JKw10w@7BLfm(XJ%pJ0LrKcFfc&?GgOv|nURH6kWENf zkwJ-FL|MfMs7f5@Q$`g1tjr8-KnXQL1_q#~fqGzOGcpM(GO!prCNi@M1qv57PW)i> z{}uxePyv%5vmk>#!z=Hw)gfzchs_dwb)6~u-lc{J9p#OZ6SG*{l#7i&yEVyNe`52m z?8<(|$z{?4i%i3(tlGKv6RT2AO_XoH_ze@T4q^E^|1Do4E?duNoY48XDn;^jy+5zl z+XU5E*B@I8^sa2*)?&wgVr`M0ezaz8!s?*grt`V(_w>!37OKV~GNofv@IAJ)s`t@z z^FlA$8!_%?Z7SXJL&p2U66xZ5uJx0j=v`Qu{B@(m?4Vh@_!qo9xtn^QNZp*i{dALZZD-PQj)&8J`hMPbAhvS`-8>JA6F4^r=zKIWe^-BH${BtgXXyz|z4k0IlcQSn1w>fm t4@cY%T^+SFHFVX2^CbaS}9ZZyUVQ>#nGL-7*pWflJ-z4MzO#pq+?lJ%X diff --git a/lucene/site/build/site/skin/images/page.gif b/lucene/site/build/site/skin/images/page.gif deleted file mode 100644 index a144d3295be63ebed0bc574146851a5a392fed89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79 zcmZ?wbhEHbdhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~ fVqj#@VE_V<76vBXp8m=M4RQ+_jm%nu85yhr=(l%9@1H+^e(d%3QEFmIYKlU6W=V!Z zNJgrHyQgmegW^vXMlJ?<1|6VrK&L1$FtGl6px)<@FfXI3FXuO-lg{}=3HMzd?lO3L zx#dpZ)!#>X+9eqkW%l(1I5n-57OUryPc+E=w4h68?FNn6<<|>(K4x18^eZg5rKQDV z@3BU);Ba$^U{iBTYg?00eqp0fAGlb2V`vgV!7II9RxpeOA6%*z! z3|=zZZ0U+wy{kFbDhu{6-#B;oyajyQm3B_wwP9ud)!}=UVM1;xs>^9?e~YDa&(ms`M23tynMtd zBjq3o`n}ocQSKm@lYj+NTmZ@xk6H+e9Xb+?eFj m6JT-u?3~D87X}uGW-eJT5e-Wr)=65ir?#xT#IMM}U=08!4(Bld diff --git a/lucene/site/build/site/skin/images/poddoc.png b/lucene/site/build/site/skin/images/poddoc.png deleted file mode 100644 index a393df7372349f6df300eacf8d62987dba6f85aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 856 zcmV-e1E>6nP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006syVXTxM00006 zVoOIv0RI600RN!9r;`8x010qNS#tmY4#WTe4#WYKD-Ig~00O*8L_t(|+QpVTNE|^J z$A2fM1T`LdK8|#PiddK?TFD{e3)I2~C^izoQX5IcN=2)r5d^`Af`y%hg(!sB1jJZ~ zhhQQ2xbuN2jD|xCJ-y4!uDkAD*4y(U^S#%Bffg1Pd~Ubu+KBq}=IwO^pm2rcF!(l?9kaD>;J^+QI_c}?CwAUL!v{63b zMSwIAqZURm`P~-C@AoSl%Ul|ean#u3@mK?mz^4>(UJ5^_rrx+pOJh1dEH4pbk^qc| zxl{Vd?dDxqS8R>E@IiO~%8JU*q-C#{P-mxZ#<)zE2x%c6UoZ>}L4H2$?ZMa>l$5Az zCnqp40PXEiQ={%(Ux)d5xVqAT?1CXlpEWmw&j&3nP+JR&i!e6_d3i883OPBDoD7?r z(Ax`*jr!5wmzQj8Y$$vp9wq^w1`@Agd>pp7p{ECymW1(_Rc*9OkB?zu0%m5QzFt52 zIwONp5k!(jWwFu7;ZU_IFNgDUI6PF>PfsBw#e8aa7qYWWK9VNW%oiI-Qd5&^mWvCx zzE;=L)BgraO_f<|84UJ5lBVnKhSgPATT?+LwYI{+f%#Nf8EkDmS@Y~Q(i21YCNmR; zhoPb2F}ErzV0IP?3QYMH3+f~e}F{5Y&DV_64k;u-pUk+1@tdkX!Dz!8_URaM9J0C iRWA_nQh{&$5BdZ3oY`MtoEnh;0000 - - - - - - - - - - - - - - - - - - - - - - - POD - - - diff --git a/lucene/site/build/site/skin/images/printer.gif b/lucene/site/build/site/skin/images/printer.gif deleted file mode 100644 index 5021187b064c981bfa6688696d7144557468aaeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 438 zcmZ?wbhEHbRA7*0IP#z2KM*i5+`E78+VyMa&YwHSV0i5Kv8~&-E?u^C&b&EOrcG&S zYbh=)PM*h*oS4i2RBAAXfq~(`fdfF27@+u*g^__lh(QOW7-S~{>;DBReJP%LD^{+1 zWwb0OW|y(&kV>k zoOo=K^QXOuJ0Hm{NahgWnfSbCS&!m_J#TnkY(62tR9SRN+sgHj0JFEIS?oy@Hx34C E05v70Bme*a diff --git a/lucene/site/build/site/skin/images/rc-b-l-15-1body-2menu-3menu.png b/lucene/site/build/site/skin/images/rc-b-l-15-1body-2menu-3menu.png deleted file mode 100644 index cdb460a1da7304fcc2d5e326db43e27c6fa9b025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^{2|H(?D8gCb5n0T@z;^_M8K-LV zNdpBhc)B=-RNPAba`NT>^A2hWNr{PR3em>=;?_TBi7s_Hc|B+4`ZEU(9`l-)7A&jU zw*UXXiOVBh8rmIW1DhHR$*SJK%G8XnD!U=Fb1;@b0XlLnh)q2r=G4T4?@%xY8I4J~G88*bRV z@j)-^8Y2b$lol(aFVkF%GBiAm42+EveLZx3%wg?nJ=YY_W-h?yH diff --git a/lucene/site/build/site/skin/images/rc-b-r-15-1body-2menu-3menu.png b/lucene/site/build/site/skin/images/rc-b-r-15-1body-2menu-3menu.png deleted file mode 100644 index 3eff254fd179852394e8bd960eb1f610f05f2d4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^{2|H(?D8gCb5n0T@z;^_M8K-LV zNdpBpd%8G=RNPAba`NT>^A2hWO5w`f+{Qm=?YwdG#C08QO_zCTW@ch+#j>hKxom73 zTjv>7&YHT!RZ_*3)#Lh^W2X*H5PRiN6|!;D27?YTi6X6M9-jv*7;6_w9) zZgF9{q@i@+@P#?TM-Ci3*X5yc#3IzEqkW;KHHXLNh0Bbb8ks*SpICXq?9mk-FNPk6 z6&k9CCJ5ymU$9Q0)4KMskfp|2uWoLm2qtCuDGUxDJvbN`4z&r&mdK II;Vst0FZQVxBvhE diff --git a/lucene/site/build/site/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png b/lucene/site/build/site/skin/images/rc-b-r-5-1header-2tab-selected-3tab-selected.png deleted file mode 100644 index b175f27b16e19464241853fd16c8030d649b6d4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*J&_z!{$_AZ|c6yYrJh%9Dc;5!1sj8nDw zq=AAqo-U3d6}OVVoP7EJd;{Bz3#=?Zb_B4_oH;{c&DT)DCIv=EySz4*dTBPX4PtS6 mY}~b?ZBH1Y+4#!B*chy;Ss!r=G{ytXVeoYIb6Mw<&;$T7sy6BX diff --git a/lucene/site/build/site/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png b/lucene/site/build/site/skin/images/rc-t-l-5-1header-2searchbox-3searchbox.png deleted file mode 100644 index e9f4440d1f58d53fa16a2ea141bd04cb69f0a595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*J&_z!{$_AZ|c6yYrJh%9Dc;5!1sj8nDw zq=ACgo-U3d6}OWA@U#7wu&b{+{^9NK^tSr?dgBcZEcf=*o%!(mygu6k9cB)L#t;SW l23E(Y39JX26pSx0GKAXcJpW&R>>bb;22WQ%mvv4FO#q7bJP`l@ diff --git a/lucene/site/build/site/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png b/lucene/site/build/site/skin/images/rc-t-l-5-1header-2tab-selected-3tab-selected.png deleted file mode 100644 index f1e015b36c399a2d3a5879d69c3f31a82ee9f7bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*J&_z!{$_AZ|c6yYrJh%9Dc;5!1sj8nDw zq=AC2o-U3d6}OWA@Uz(0{Y#73_gCfc!(wyExc&dn9AFaCcpHE6!;`1hZT9v53>z4P wJ&s(UHx3vIVCg!0D03wUjP6A diff --git a/lucene/site/build/site/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png b/lucene/site/build/site/skin/images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png deleted file mode 100644 index e9f4440d1f58d53fa16a2ea141bd04cb69f0a595..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*J&_z!{$_AZ|c6yYrJh%9Dc;5!1sj8nDw zq=ACgo-U3d6}OWA@U#7wu&b{+{^9NK^tSr?dgBcZEcf=*o%!(mygu6k9cB)L#t;SW l23E(Y39JX26pSx0GKAXcJpW&R>>bb;22WQ%mvv4FO#q7bJP`l@ diff --git a/lucene/site/build/site/skin/images/rc-t-r-15-1body-2menu-3menu.png b/lucene/site/build/site/skin/images/rc-t-r-15-1body-2menu-3menu.png deleted file mode 100644 index 29388b5efc9155a12ec75c7ea12940bf45d5b3fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 390 zcmeAS@N?(olHy`uVBq!ia0vp^{2|H(?D8gCb5n0T@z;^_M8K-LV zNdpCcdAc};RNPAba`NT>^M?+dIdJscF$HbSBMB>)A4*uZ_=JL{)&U2O4GkUk_5X}& zetn+%@YUSqJlo~>r9|v_$Osmj3zsmE%8e hpTGaab)Hi`4ELR~XEsLn)B!_*!PC{xWt~$(69Dz9se1qb diff --git a/lucene/site/build/site/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png b/lucene/site/build/site/skin/images/rc-t-r-5-1header-2searchbox-3searchbox.png deleted file mode 100644 index 944ed73333d834f3509955d65fecc604393bf626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*J&_z!{$_AZ|c6yYrJh%9Dc;5!1sj8nDw zq=AB7o-U3d6}OUWem!|spO%)!#^)EuW@jhJ=H{lxrpBi5bP0l+XkK DqZdXo diff --git a/lucene/site/build/site/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png b/lucene/site/build/site/skin/images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png deleted file mode 100644 index 944ed73333d834f3509955d65fecc604393bf626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 214 zcmeAS@N?(olHy`uVBq!ia0vp^tRT$61|)m))t&+=g=CK)Uj~LMH3o);76yi2K%s^g z3=E|P3=FRl7#OT(FffQ0%-I!a1C(G(@^*J&_z!{$_AZ|c6yYrJh%9Dc;5!1sj8nDw zq=AB7o-U3d6}OUWem!|spO%)!#^)EuW@jhJ=H{lxrpBi5 - - - - - - - - - - diff --git a/lucene/site/build/site/skin/images/remove.jpg b/lucene/site/build/site/skin/images/remove.jpg deleted file mode 100644 index 8c9b9efa8fe95d823706ee9a211f34a0eb6f010a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1251 zcmex=TL z>B-E7X2&P~a4`6jwh^=64%N$KvYWpfx`zxWxwdqUOnSC!Nz1SzY(ekLziD#x^ zN5c#+_UIeyY-pcs;P~|OA~k0Xi4!{~wTsAVnY=KnKKB0f`iUPuesXv@{Yci~8^Yz; ze$Gr6yrcD=n6CQspW#+>&)4KPoVTPS*P1y_xgl9G>4Qerv-iJzj6I!?I`hUW=Uv;# zHL>yT)$${4S$`XkoKG^9y{xuxQw?uJf!VPYKQ*7-)s9v(dui5j;p*Lw-?h_ZE}fNP znwi!fr^&uU)A`}8>{ko!=Ix#T_|WcYS)p$px382xAu?rN%}Uqp&Q)t>SDty!{&wjU zF$1}Yb2`GEzRw9aTyRJxLO(N-d%~h~3;r!CocN-C`qZPZEBp0d?V0X;_S@7qkG}EW zu$cJqO5oK~FE(#jvTvWQ_qU8sn~sKLX5RGeejKvAxN5rQtVLh$3bizMgenJ$X;1#o zkZV6ctbo!DryG5`U%cNA- z37SIO>Jn2uPEOf&tRRquW%=UskTnw*lL4j4_oQFx5`5PDln65ExUE?CQL56{W=O6>4%t1lHGeC6k3=o{392#=l uSM0X)>rLCYt$Mw3&7xT=7q(o#=zPoVy6suxF44RH-vj{rcK4+K diff --git a/lucene/site/build/site/skin/images/rss.png b/lucene/site/build/site/skin/images/rss.png deleted file mode 100644 index f0796ac886201eb43b7a15113e2deb1b32fa9a09..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmV-u0hj)XP)1pTfh($;sL0vc}u{{{FPIw4gub**+Xunj;hMg-Rk@N{o&!^ z{r&#_{{B{et%#+@{r~@)vdh1}zle=^0GR*(m;g35HkdZcHkixXHq)$8FWQhbW?9;ba!ELWdKKV zVQ^?^V?%Flc4cyOWpXuLNbUdt06|GaK~#90Vz9#p80;8u1CXpOE?Whx%fLW2AK{k88_xIu00030{{sMfLr(Xb|5zme0000004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00004XF*Lt006O$eEU(800001 zb5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m_e01m_fl`9S#0007K zNklQ>j$aI!>~6BuS6Q;~j%&nubQBVJyz=J&@KuRzjD; zcW(vZmNxJrKpeyxg%ynaLZD)?XsFw9aUiSZ8VZG+fzrUYH*7w2ey^>)m&eCl6R*)C z%=R)sowX&(lcM0`^0IqGG2rt<`VS6F^(fg`42{LbhhyyM=(-V3aWNTYXHDf22mq(2 z!0IZnumH@>0oT`${)-DBowfmq$k1#2*6To_01OTSmzTiN5im0YjEwi0pxkefcYS?`FcOI) za+39RU|;~)-#0-7IU)dleBQ_~Gz2yi2!}nB!COS^Uf}Q$n3@725l=O*b0CUlauQfs zG1<4Y;LWU?LD?PHl9k7t-wA_?`Mj}fOG*Fq!Zx#ulu6&o$RJ{P>DS%_VhWrCUF3V*)!aYF% O0000 - - - - - - - - - - - - - - - - - - - - - - - TXT - - - diff --git a/lucene/site/build/site/skin/images/update.jpg b/lucene/site/build/site/skin/images/update.jpg deleted file mode 100644 index beb9207336f508e1e60b2154a6292705a7317c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 990 zcmex=`WXCjGV$EqLPXcGp+%Z zNis4pF{2v5&dkcj0+dn`WB}@CL6QbCSy&m^1clgvCWsmRzs0}<)XOBuEXZKbu&nmZ zUEkd+zBN|q$1Ixqrz7BO-I}$>PfA|TKK6C0m9FK+cPkQQjN+DUeXu4u@MF*FfGpz| z8`AsaC+fJb;VhfwY3f*Z%PzR)$hD1?A!ldYs+8Y+P^~-c^*$2O#Z#!G>X}ouT=R2Pc+d@(I!`-o_U*_tEEUB#I-?h1ST9V+k zI{VU>v(|fR-Q8VoVYScfxqV08!yC;RNj^=v(@svZJL)?1=<1$Hzg3pkD(!u`W^Jmq zq~WGkfvK;05)NDre`1gmxMs`dZA!UZ7oHRysABC~;c?pY)vx`JQzm!&aUF{m4Rhs5 zdK>CJP0VJAle6=@^)ogG9&Fz#nj>qy%3IC8JJ*rb?aa5nealbC$aFi_cy83=n6g=U z_lkGjUv!q|+;`>nIhuN9+BOx>^4qS5`wNVpC^$^b3Q2I~6Fng)S{-w=EHJ+_>pw&4 z>sqT;#+&Tg{b{Q$r0 zcjPwoN^N?+#M#1Z;pwWy3EJV(Ic&E?RC2Z^U(MN|Em16H;~rq;EcQAajAv$N9{om-s!5r##+I#Y}qkqPB1#0`7CuktZhxU=!4ohn_gbm zlDj{ppYNW{A@7V3(=UI13-HQKP`M&)Y;@vdl5X=hrHIwv9t##XtHe!Kcxhr7`+BO# gv;PeKu`GXNFaKw_))oI_o&UPMIeaoE+5c|>0A~eb6#xJL diff --git a/lucene/site/build/site/skin/images/valid-html401.png b/lucene/site/build/site/skin/images/valid-html401.png deleted file mode 100644 index 3855210c6c3c85c56f90221b3247fa664374b6bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2948 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 IbxsLQ074N#oB#j- diff --git a/lucene/site/build/site/skin/images/xmldoc.gif b/lucene/site/build/site/skin/images/xmldoc.gif deleted file mode 100644 index ca1224f61f15032439564542f57d501d5cf54b6b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 647 zcmZ?wbhEHbRA5kGSjxaqTv*)F*7E=V_y7O@&zUzTC@|>n->+Z3d^vai-0|ZF9zVYQ z{P{IYOY?vKz7-Ya$;!$Y8W{HVb;`&{7Z&FJ`t|Ak`}fbEKR#i|247#_j*iy(^XL2f`-g-Cb#}G_!ROC!X3d(lYSofmyLM$|Wf>bApFMka%a-L* zQc~&Z>1WUGOHYrVHLK6p*WK7yUrI`1`;P4m4Gmzo0iA~(DgG06E=o--Nlj5G&n(GM z2+2rQaQE~LU{L(Y!pOy7&!7Wz4bZC!3=C}l4$S|+&LPo%;z{9&93j>VD?$ubL~*h% z7dCiX#u=eI`E{=pUl5a$PF%zb6qC`S(^p(YuHP2qAU6MIRkj>f>{N6`=TlY zg@g-5;zY$b#1k0Gd@Fd_1o;JnBmzX4X3R>MmmJH**B&dnb>{4K&J}TzK`Xay-|4hF zxNF6#12Yfhr3P=EAtqLG`bdD(7HJvT8QhmA1aeAq%1H}K^F5PaC9iPt633NFMI|0V zP8mTNWtpw=vKQ|@sO@%o)X1zM!=myee4)#3*7uJbImH*w&)mJh={Qfpwa=1j zVwTNZcQ%=v(oYdH=*`%;faTK4`K!#1cCBRM78i@#&|o-umG7p==q(e{4!ZJ4Y9G*& zjTW2LC0Vlj;Eaz=Y+G0D-^An-&HRE((lAEl>eee7<{f$w3cZS(-v%(g6DyBCDE9Jt eDx<)PxU;*qW?#L+bz+|H?rm>xIyW&eSOWkroh0x8 diff --git a/lucene/site/build/site/skin/menu.js b/lucene/site/build/site/skin/menu.js deleted file mode 100644 index 06ea471dc57..00000000000 --- a/lucene/site/build/site/skin/menu.js +++ /dev/null @@ -1,48 +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. -*/ -/** - * This script, when included in a html file, can be used to make collapsible menus - * - * Typical usage: - * - */ - -if (document.getElementById){ - document.write('') -} - -function SwitchMenu(obj) -{ - if(document.getElementById) { - var el = document.getElementById(obj); - var title = document.getElementById(obj+'Title'); - - if(obj.indexOf("_selected_")==0&&el.style.display == ""){ - el.style.display = "block"; - title.className = "pagegroupselected"; - } - - if(el.style.display != "block"){ - el.style.display = "block"; - title.className = "pagegroupopen"; - } - else{ - el.style.display = "none"; - title.className = "pagegroup"; - } - }// end - if(document.getElementById) -}//end - function SwitchMenu(obj) diff --git a/lucene/site/build/site/skin/note.txt b/lucene/site/build/site/skin/note.txt deleted file mode 100644 index d34c8db5ef4..00000000000 --- a/lucene/site/build/site/skin/note.txt +++ /dev/null @@ -1,50 +0,0 @@ -Notes for developer: - ---Legend------------------- -TODO -> blocker -DONE -> blocker -ToDo -> enhancement bug -done -> enhancement bug - ---Issues------------------- -- the corner images should be rendered through svg with the header color. --> DONE --> ToDo: get rid of the images and use only divs! - -- the menu points should be displayed "better". --> DONE --- Use the krysalis-site menu approach for the overall menu display. --> DONE --- Use the old lenya innermenu approch to further enhance the menu . --> DONE - -- the content area needs some attention. --> DONE --- introduce the heading scheme from krysalis () --> DONE --> ToDo: make box with round corners --> done: make underlined with variable border height --> ToDo: make underline with bottom round corner --- introduce the toc for each html-page --> DONE --- introduce the external-link-images. --> DONE - -- the publish note should be where now only a border is. -Like
    --> DONE -, but make it configurable. --> DONE -- footer needs some attention --> DONE --- the footer do not have the color profile! Enable it! --> DONE --- the footer should as well contain a feedback link. -See http://issues.apache.org/eyebrowse/ReadMsg?listName=forrest-user@xml.apache.org&msgNo=71 --> DONE - -- introduce credits alternativ location --> DONE - -- border for published / breadtrail / menu /tab divs --> ToDo \ No newline at end of file diff --git a/lucene/site/build/site/skin/print.css b/lucene/site/build/site/skin/print.css deleted file mode 100644 index aaa99319acd..00000000000 --- a/lucene/site/build/site/skin/print.css +++ /dev/null @@ -1,54 +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. -*/ -body { - font-family: Georgia, Palatino, serif; - font-size: 12pt; - background: white; -} - -#tabs, -#menu, -#content .toc { - display: none; -} - -#content { - width: auto; - padding: 0; - float: none !important; - color: black; - background: inherit; -} - -a:link, a:visited { - color: #336699; - background: inherit; - text-decoration: underline; -} - -#top .logo { - padding: 0; - margin: 0 0 2em 0; -} - -#footer { - margin-top: 4em; -} - -acronym { - border: 0; -} \ No newline at end of file diff --git a/lucene/site/build/site/skin/profile.css b/lucene/site/build/site/skin/profile.css deleted file mode 100644 index 2ed95546ec6..00000000000 --- a/lucene/site/build/site/skin/profile.css +++ /dev/null @@ -1,175 +0,0 @@ - - -/* ==================== aural ============================ */ - -@media aural { - h1, h2, h3, h4, h5, h6 { voice-family: paul, male; stress: 20; richness: 90 } - h1 { pitch: x-low; pitch-range: 90 } - h2 { pitch: x-low; pitch-range: 80 } - h3 { pitch: low; pitch-range: 70 } - h4 { pitch: medium; pitch-range: 60 } - h5 { pitch: medium; pitch-range: 50 } - h6 { pitch: medium; pitch-range: 40 } - li, dt, dd { pitch: medium; richness: 60 } - dt { stress: 80 } - pre, code, tt { pitch: medium; pitch-range: 0; stress: 0; richness: 80 } - em { pitch: medium; pitch-range: 60; stress: 60; richness: 50 } - strong { pitch: medium; pitch-range: 60; stress: 90; richness: 90 } - dfn { pitch: high; pitch-range: 60; stress: 60 } - s, strike { richness: 0 } - i { pitch: medium; pitch-range: 60; stress: 60; richness: 50 } - b { pitch: medium; pitch-range: 60; stress: 90; richness: 90 } - u { richness: 0 } - - :link { voice-family: harry, male } - :visited { voice-family: betty, female } - :active { voice-family: betty, female; pitch-range: 80; pitch: x-high } -} - -a.external { - padding: 0 20px 0px 0px; - display:inline; - background-repeat: no-repeat; - background-position: center right; - background-image: url(images/external-link.gif); -} - -#top { background-color: #FFFFFF;} - -#top .header .current { background-color: #4C6C8F;} -#top .header .current a:link { color: #ffffff; } -#top .header .current a:visited { color: #ffffff; } -#top .header .current a:hover { color: #ffffff; } - -#tabs li { background-color: #E5E4D9 ;} -#tabs li a:link { color: #000000; } -#tabs li a:visited { color: #000000; } -#tabs li a:hover { color: #000000; } - -#level2tabs a.selected { background-color: #4C6C8F ;} -#level2tabs a:link { color: #ffffff; } -#level2tabs a:visited { color: #ffffff; } -#level2tabs a:hover { color: #ffffff; } - -#level2tabs { background-color: #E5E4D9;} -#level2tabs a.unselected:link { color: #000000; } -#level2tabs a.unselected:visited { color: #000000; } -#level2tabs a.unselected:hover { color: #000000; } - -.heading { background-color: #E5E4D9;} - -.boxed { background-color: #E5E4D9;} -.underlined_5 {border-bottom: solid 5px #E5E4D9;} -.underlined_10 {border-bottom: solid 10px #E5E4D9;} -table caption { -background-color: #E5E4D9; -color: #000000; -} - -#feedback { -color: #FFFFFF; -background: #4C6C8F; -text-align: center; -} -#feedback #feedbackto { -color: #FFFFFF; -} - -#publishedStrip { -color: #FFFFFF; -background: #4C6C8F; -} - -#publishedStrip { -color: #000000; -background: #E5E4D9; -} - -#menu .menupagetitle { background-color: #CFDCED; - color: #000000;} - -#menu { border-color: #999999;} -#menu .menupagetitle { border-color: #999999;} -#menu .menupageitemgroup { border-color: #999999;} - -#menu { background-color: #4C6C8F;} -#menu { color: #ffffff;} -#menu a:link { color: #ffffff;} -#menu a:visited { color: #ffffff;} -#menu a:hover { -background-color: #4C6C8F; -color: #ffffff;} - -#menu h1 { -color: #000000; -background-color: #cfdced; -} - -#top .searchbox { -background-color: #E5E4D9 ; -color: #000000; -} - -#menu .menupageitemgroup { -background-color: #E5E4D9; -} -#menu .menupageitem { -color: #000000; -} -#menu .menupageitem a:link { color: #000000;} -#menu .menupageitem a:visited { color: #000000;} -#menu .menupageitem a:hover { -background-color: #E5E4D9; -color: #000000; -} - -body{ -background-color: #ffffff; -color: #000000; -} -a:link { color:#0000ff} -a:visited { color:#009999} -a:hover { color:#6587ff} - - -.ForrestTable { background-color: #ccc;} - -.ForrestTable td { background-color: #ffffff;} - -.highlight { background-color: #ffff00;} - -.fixme { border-color: #c60;} - -.note { border-color: #069;} - -.warning { border-color: #900;} - -.code { border-color: #a5b6c6;} - -#footer { background-color: #E5E4D9;} -/* extra-css */ - - p.quote { - margin-left: 2em; - padding: .5em; - background-color: #f0f0f0; - font-family: monospace; - } - img.float-right { - float: right; - margin-left: 2em; - padding: .5em; - } - - #footer a { color: #0F3660; } - #footer a:visited { color: #009999; } - - pre.code { - margin-left: 2em; - margin-right: 2em; - padding: 0.5em; - background-color: #f0f0f0; - } - - - \ No newline at end of file diff --git a/lucene/site/build/site/skin/prototype.js b/lucene/site/build/site/skin/prototype.js deleted file mode 100644 index ed7d920cb5f..00000000000 --- a/lucene/site/build/site/skin/prototype.js +++ /dev/null @@ -1,1257 +0,0 @@ -/* Prototype JavaScript framework, version 1.4.0_pre4 - * (c) 2005 Sam Stephenson - * - * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff - * against the source tree, available from the Prototype darcs repository. - * - * Prototype is freely distributable under the terms of an MIT-style license. - * - * For details, see the Prototype web site: http://prototype.conio.net/ - * -/*--------------------------------------------------------------------------*/ - -var Prototype = { - Version: '1.4.0_pre4', - - emptyFunction: function() {}, - K: function(x) {return x} -} - -var Class = { - create: function() { - return function() { - this.initialize.apply(this, arguments); - } - } -} - -var Abstract = new Object(); - -Object.extend = function(destination, source) { - for (property in source) { - destination[property] = source[property]; - } - return destination; -} - -Function.prototype.bind = function(object) { - var __method = this; - return function() { - return __method.apply(object, arguments); - } -} - -Function.prototype.bindAsEventListener = function(object) { - var __method = this; - return function(event) { - return __method.call(object, event || window.event); - } -} - -Number.prototype.toColorPart = function() { - var digits = this.toString(16); - if (this < 16) return '0' + digits; - return digits; -} - -var Try = { - these: function() { - var returnValue; - - for (var i = 0; i < arguments.length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) {} - } - - return returnValue; - } -} - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create(); -PeriodicalExecuter.prototype = { - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.callback(); - } finally { - this.currentlyExecuting = false; - } - } - } -} - -/*--------------------------------------------------------------------------*/ - -function $() { - var elements = new Array(); - - for (var i = 0; i < arguments.length; i++) { - var element = arguments[i]; - if (typeof element == 'string') - element = document.getElementById(element); - - if (arguments.length == 1) - return element; - - elements.push(element); - } - - return elements; -} - -if (!Array.prototype.push) { - Array.prototype.push = function() { - var startLength = this.length; - for (var i = 0; i < arguments.length; i++) - this[startLength + i] = arguments[i]; - return this.length; - } -} - -if (!Function.prototype.apply) { - // Based on code from http://www.youngpup.net/ - Function.prototype.apply = function(object, parameters) { - var parameterStrings = new Array(); - if (!object) object = window; - if (!parameters) parameters = new Array(); - - for (var i = 0; i < parameters.length; i++) - parameterStrings[i] = 'parameters[' + i + ']'; - - object.__apply__ = this; - var result = eval('object.__apply__(' + - parameterStrings.join(', ') + ')'); - object.__apply__ = null; - - return result; - } -} - -Object.extend(String.prototype, { - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - escapeHTML: function() { - var div = document.createElement('div'); - var text = document.createTextNode(this); - div.appendChild(text); - return div.innerHTML; - }, - - unescapeHTML: function() { - var div = document.createElement('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0].nodeValue; - }, - - parseQuery: function() { - var str = this; - if (str.substring(0,1) == '?') { - str = this.substring(1); - } - var result = {}; - var pairs = str.split('&'); - for (var i = 0; i < pairs.length; i++) { - var pair = pairs[i].split('='); - result[pair[0]] = pair[1]; - } - return result; - } -}); - - -var _break = new Object(); -var _continue = new Object(); - -var Enumerable = { - each: function(iterator) { - var index = 0; - try { - this._each(function(value) { - try { - iterator(value, index++); - } catch (e) { - if (e != _continue) throw e; - } - }); - } catch (e) { - if (e != _break) throw e; - } - }, - - all: function(iterator) { - var result = true; - this.each(function(value, index) { - if (!(result &= (iterator || Prototype.K)(value, index))) - throw _break; - }); - return result; - }, - - any: function(iterator) { - var result = true; - this.each(function(value, index) { - if (result &= (iterator || Prototype.K)(value, index)) - throw _break; - }); - return result; - }, - - collect: function(iterator) { - var results = []; - this.each(function(value, index) { - results.push(iterator(value, index)); - }); - return results; - }, - - detect: function (iterator) { - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw _break; - } - }); - return result; - }, - - findAll: function(iterator) { - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(pattern, iterator) { - var results = []; - this.each(function(value, index) { - var stringValue = value.toString(); - if (stringValue.match(pattern)) - results.push((iterator || Prototype.K)(value, index)); - }) - return results; - }, - - include: function(object) { - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw _break; - } - }); - return found; - }, - - inject: function(memo, iterator) { - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.collect(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator) { - var result; - this.each(function(value, index) { - value = (iterator || Prototype.K)(value, index); - if (value >= (result || value)) - result = value; - }); - return result; - }, - - min: function(iterator) { - var result; - this.each(function(value, index) { - value = (iterator || Prototype.K)(value, index); - if (value <= (result || value)) - result = value; - }); - return result; - }, - - partition: function(iterator) { - var trues = [], falses = []; - this.each(function(value, index) { - ((iterator || Prototype.K)(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value, index) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator) { - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator) { - return this.collect(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.collect(Prototype.K); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (typeof args.last() == 'function') - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - iterator(value = collections.pluck(index)); - return value; - }); - } -} - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray -}); - -$A = Array.from = function(iterable) { - var results = []; - for (var i = 0; i < iterable.length; i++) - results.push(iterable[i]); - return results; -} - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0; i < this.length; i++) - iterator(this[i]); - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - } -}); - -Object.extend(Array.prototype, Enumerable); - - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')}, - function() {return new XMLHttpRequest()} - ) || false; - } -} - -Ajax.Base = function() {}; -Ajax.Base.prototype = { - setOptions: function(options) { - this.options = { - method: 'post', - asynchronous: true, - parameters: '' - } - Object.extend(this.options, options || {}); - }, - - responseIsSuccess: function() { - return this.transport.status == undefined - || this.transport.status == 0 - || (this.transport.status >= 200 && this.transport.status < 300); - }, - - responseIsFailure: function() { - return !this.responseIsSuccess(); - } -} - -Ajax.Request = Class.create(); -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Request.prototype = Object.extend(new Ajax.Base(), { - initialize: function(url, options) { - this.transport = Ajax.getTransport(); - this.setOptions(options); - this.request(url); - }, - - request: function(url) { - var parameters = this.options.parameters || ''; - if (parameters.length > 0) parameters += '&_='; - - try { - if (this.options.method == 'get') - url += '?' + parameters; - - this.transport.open(this.options.method, url, - this.options.asynchronous); - - if (this.options.asynchronous) { - this.transport.onreadystatechange = this.onStateChange.bind(this); - setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10); - } - - this.setRequestHeaders(); - - var body = this.options.postBody ? this.options.postBody : parameters; - this.transport.send(this.options.method == 'post' ? body : null); - - } catch (e) { - } - }, - - setRequestHeaders: function() { - var requestHeaders = - ['X-Requested-With', 'XMLHttpRequest', - 'X-Prototype-Version', Prototype.Version]; - - if (this.options.method == 'post') { - requestHeaders.push('Content-type', - 'application/x-www-form-urlencoded'); - - /* Force "Connection: close" for Mozilla browsers to work around - * a bug where XMLHttpReqeuest sends an incorrect Content-length - * header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType) - requestHeaders.push('Connection', 'close'); - } - - if (this.options.requestHeaders) - requestHeaders.push.apply(requestHeaders, this.options.requestHeaders); - - for (var i = 0; i < requestHeaders.length; i += 2) - this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]); - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState != 1) - this.respondToReadyState(this.transport.readyState); - }, - - respondToReadyState: function(readyState) { - var event = Ajax.Request.Events[readyState]; - - if (event == 'Complete') - (this.options['on' + this.transport.status] - || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(this.transport); - - (this.options['on' + event] || Prototype.emptyFunction)(this.transport); - - /* Avoid memory leak in MSIE: clean up the oncomplete event handler */ - if (event == 'Complete') - this.transport.onreadystatechange = Prototype.emptyFunction; - } -}); - -Ajax.Updater = Class.create(); -Ajax.Updater.ScriptFragment = '(?:)((\n|.)*?)(?:<\/script>)'; - -Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { - initialize: function(container, url, options) { - this.containers = { - success: container.success ? $(container.success) : $(container), - failure: container.failure ? $(container.failure) : - (container.success ? null : $(container)) - } - - this.transport = Ajax.getTransport(); - this.setOptions(options); - - var onComplete = this.options.onComplete || Prototype.emptyFunction; - this.options.onComplete = (function() { - this.updateContent(); - onComplete(this.transport); - }).bind(this); - - this.request(url); - }, - - updateContent: function() { - var receiver = this.responseIsSuccess() ? - this.containers.success : this.containers.failure; - - var match = new RegExp(Ajax.Updater.ScriptFragment, 'img'); - var response = this.transport.responseText.replace(match, ''); - var scripts = this.transport.responseText.match(match); - - if (receiver) { - if (this.options.insertion) { - new this.options.insertion(receiver, response); - } else { - receiver.innerHTML = response; - } - } - - if (this.responseIsSuccess()) { - if (this.onComplete) - setTimeout((function() {this.onComplete( - this.transport)}).bind(this), 10); - } - - if (this.options.evalScripts && scripts) { - match = new RegExp(Ajax.Updater.ScriptFragment, 'im'); - setTimeout((function() { - for (var i = 0; i < scripts.length; i++) - eval(scripts[i].match(match)[1]); - }).bind(this), 10); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(); -Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { - initialize: function(container, url, options) { - this.setOptions(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = 1; - - this.updater = {}; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Ajax.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(request) { - if (this.options.decay) { - this.decay = (request.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = request.responseText; - } - this.timer = setTimeout(this.onTimerEvent.bind(this), - this.decay * this.frequency * 1000); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); - -document.getElementsByClassName = function(className) { - var children = document.getElementsByTagName('*') || document.all; - var elements = new Array(); - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - var classNames = child.className.split(' '); - for (var j = 0; j < classNames.length; j++) { - if (classNames[j] == className) { - elements.push(child); - break; - } - } - } - - return elements; -} - -/*--------------------------------------------------------------------------*/ - -if (!window.Element) { - var Element = new Object(); -} - -Object.extend(Element, { - toggle: function() { - for (var i = 0; i < arguments.length; i++) { - var element = $(arguments[i]); - element.style.display = - (element.style.display == 'none' ? '' : 'none'); - } - }, - - hide: function() { - for (var i = 0; i < arguments.length; i++) { - var element = $(arguments[i]); - element.style.display = 'none'; - } - }, - - show: function() { - for (var i = 0; i < arguments.length; i++) { - var element = $(arguments[i]); - element.style.display = ''; - } - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - }, - - getHeight: function(element) { - element = $(element); - return element.offsetHeight; - }, - - hasClassName: function(element, className) { - element = $(element); - if (!element) - return; - var a = element.className.split(' '); - for (var i = 0; i < a.length; i++) { - if (a[i] == className) - return true; - } - return false; - }, - - addClassName: function(element, className) { - element = $(element); - Element.removeClassName(element, className); - element.className += ' ' + className; - }, - - removeClassName: function(element, className) { - element = $(element); - if (!element) - return; - var newClassName = ''; - var a = element.className.split(' '); - for (var i = 0; i < a.length; i++) { - if (a[i] != className) { - if (i > 0) - newClassName += ' '; - newClassName += a[i]; - } - } - element.className = newClassName; - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - var element = $(element); - for (var i = 0; i < element.childNodes.length; i++) { - var node = element.childNodes[i]; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - Element.remove(node); - } - } -}); - -var Toggle = new Object(); -Toggle.display = Element.toggle; - -/*--------------------------------------------------------------------------*/ - -Abstract.Insertion = function(adjacency) { - this.adjacency = adjacency; -} - -Abstract.Insertion.prototype = { - initialize: function(element, content) { - this.element = $(element); - this.content = content; - - if (this.adjacency && this.element.insertAdjacentHTML) { - this.element.insertAdjacentHTML(this.adjacency, this.content); - } else { - this.range = this.element.ownerDocument.createRange(); - if (this.initializeRange) this.initializeRange(); - this.fragment = this.range.createContextualFragment(this.content); - this.insertContent(); - } - } -} - -var Insertion = new Object(); - -Insertion.Before = Class.create(); -Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { - initializeRange: function() { - this.range.setStartBefore(this.element); - }, - - insertContent: function() { - this.element.parentNode.insertBefore(this.fragment, this.element); - } -}); - -Insertion.Top = Class.create(); -Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { - initializeRange: function() { - this.range.selectNodeContents(this.element); - this.range.collapse(true); - }, - - insertContent: function() { - this.element.insertBefore(this.fragment, this.element.firstChild); - } -}); - -Insertion.Bottom = Class.create(); -Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { - initializeRange: function() { - this.range.selectNodeContents(this.element); - this.range.collapse(this.element); - }, - - insertContent: function() { - this.element.appendChild(this.fragment); - } -}); - -Insertion.After = Class.create(); -Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { - initializeRange: function() { - this.range.setStartAfter(this.element); - }, - - insertContent: function() { - this.element.parentNode.insertBefore(this.fragment, - this.element.nextSibling); - } -}); - -var Field = { - clear: function() { - for (var i = 0; i < arguments.length; i++) - $(arguments[i]).value = ''; - }, - - focus: function(element) { - $(element).focus(); - }, - - present: function() { - for (var i = 0; i < arguments.length; i++) - if ($(arguments[i]).value == '') return false; - return true; - }, - - select: function(element) { - $(element).select(); - }, - - activate: function(element) { - $(element).focus(); - $(element).select(); - } -} - -/*--------------------------------------------------------------------------*/ - -var Form = { - serialize: function(form) { - var elements = Form.getElements($(form)); - var queryComponents = new Array(); - - for (var i = 0; i < elements.length; i++) { - var queryComponent = Form.Element.serialize(elements[i]); - if (queryComponent) - queryComponents.push(queryComponent); - } - - return queryComponents.join('&'); - }, - - getElements: function(form) { - var form = $(form); - var elements = new Array(); - - for (tagName in Form.Element.Serializers) { - var tagElements = form.getElementsByTagName(tagName); - for (var j = 0; j < tagElements.length; j++) - elements.push(tagElements[j]); - } - return elements; - }, - - getInputs: function(form, typeName, name) { - var form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) - return inputs; - - var matchingInputs = new Array(); - for (var i = 0; i < inputs.length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || - (name && input.name != name)) - continue; - matchingInputs.push(input); - } - - return matchingInputs; - }, - - disable: function(form) { - var elements = Form.getElements(form); - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - element.blur(); - element.disabled = 'true'; - } - }, - - enable: function(form) { - var elements = Form.getElements(form); - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - element.disabled = ''; - } - }, - - focusFirstElement: function(form) { - var form = $(form); - var elements = Form.getElements(form); - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - if (element.type != 'hidden' && !element.disabled) { - Field.activate(element); - break; - } - } - }, - - reset: function(form) { - $(form).reset(); - } -} - -Form.Element = { - serialize: function(element) { - var element = $(element); - var method = element.tagName.toLowerCase(); - var parameter = Form.Element.Serializers[method](element); - - if (parameter) - return encodeURIComponent(parameter[0]) + '=' + - encodeURIComponent(parameter[1]); - }, - - getValue: function(element) { - var element = $(element); - var method = element.tagName.toLowerCase(); - var parameter = Form.Element.Serializers[method](element); - - if (parameter) - return parameter[1]; - } -} - -Form.Element.Serializers = { - input: function(element) { - switch (element.type.toLowerCase()) { - case 'submit': - case 'hidden': - case 'password': - case 'text': - return Form.Element.Serializers.textarea(element); - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element); - } - return false; - }, - - inputSelector: function(element) { - if (element.checked) - return [element.name, element.value]; - }, - - textarea: function(element) { - return [element.name, element.value]; - }, - - select: function(element) { - var value = ''; - if (element.type == 'select-one') { - var index = element.selectedIndex; - if (index >= 0) - value = element.options[index].value || element.options[index].text; - } else { - value = new Array(); - for (var i = 0; i < element.length; i++) { - var opt = element.options[i]; - if (opt.selected) - value.push(opt.value || opt.text); - } - } - return [element.name, value]; - } -} - -/*--------------------------------------------------------------------------*/ - -var $F = Form.Element.getValue; - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = function() {} -Abstract.TimedObserver.prototype = { - initialize: function(element, frequency, callback) { - this.frequency = frequency; - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - this.registerCallback(); - }, - - registerCallback: function() { - setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - onTimerEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - } -} - -Form.Element.Observer = Class.create(); -Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(); -Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = function() {} -Abstract.EventObserver.prototype = { - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - var elements = Form.getElements(this.element); - for (var i = 0; i < elements.length; i++) - this.registerCallback(elements[i]); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - element.target = this; - element.prev_onclick = element.onclick || Prototype.emptyFunction; - element.onclick = function() { - this.prev_onclick(); - this.target.onElementEvent(); - } - break; - case 'password': - case 'text': - case 'textarea': - case 'select-one': - case 'select-multiple': - element.target = this; - element.prev_onchange = element.onchange || Prototype.emptyFunction; - element.onchange = function() { - this.prev_onchange(); - this.target.onElementEvent(); - } - break; - } - } - } -} - -Form.Element.EventObserver = Class.create(); -Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(); -Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { - getValue: function() { - return Form.serialize(this.element); - } -}); - - -if (!window.Event) { - var Event = new Object(); -} - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - - element: function(event) { - return event.target || event.srcElement; - }, - - isLeftClick: function(event) { - return (((event.which) && (event.which == 1)) || - ((event.button) && (event.button == 1))); - }, - - pointerX: function(event) { - return event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)); - }, - - pointerY: function(event) { - return event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)); - }, - - stop: function(event) { - if (event.preventDefault) { - event.preventDefault(); - event.stopPropagation(); - } else { - event.returnValue = false; - } - }, - - // find the first node with the given tagName, starting from the - // node the event was triggered on; traverses the DOM upwards - findElement: function(event, tagName) { - var element = Event.element(event); - while (element.parentNode && (!element.tagName || - (element.tagName.toUpperCase() != tagName.toUpperCase()))) - element = element.parentNode; - return element; - }, - - observers: false, - - _observeAndCache: function(element, name, observer, useCapture) { - if (!this.observers) this.observers = []; - if (element.addEventListener) { - this.observers.push([element, name, observer, useCapture]); - element.addEventListener(name, observer, useCapture); - } else if (element.attachEvent) { - this.observers.push([element, name, observer, useCapture]); - element.attachEvent('on' + name, observer); - } - }, - - unloadCache: function() { - if (!Event.observers) return; - for (var i = 0; i < Event.observers.length; i++) { - Event.stopObserving.apply(this, Event.observers[i]); - Event.observers[i][0] = null; - } - Event.observers = false; - }, - - observe: function(element, name, observer, useCapture) { - var element = $(element); - useCapture = useCapture || false; - - if (name == 'keypress' && - ((/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - || element.attachEvent)) - name = 'keydown'; - - this._observeAndCache(element, name, observer, useCapture); - }, - - stopObserving: function(element, name, observer, useCapture) { - var element = $(element); - useCapture = useCapture || false; - - if (name == 'keypress' && - ((/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - || element.detachEvent)) - name = 'keydown'; - - if (element.removeEventListener) { - element.removeEventListener(name, observer, useCapture); - } else if (element.detachEvent) { - element.detachEvent('on' + name, observer); - } - } -}); - -/* prevent memory leaks in IE */ -Event.observe(window, 'unload', Event.unloadCache, false); - -var Position = { - - // set to true if needed, warning: firefox performance problems - // NOT neeeded for page scrolling, only if draggable contained in - // scrollable elements - includeScrollOffsets: false, - - // must be called before calling withinIncludingScrolloffset, every time the - // page is scrolled - prepare: function() { - this.deltaX = window.pageXOffset - || document.documentElement.scrollLeft - || document.body.scrollLeft - || 0; - this.deltaY = window.pageYOffset - || document.documentElement.scrollTop - || document.body.scrollTop - || 0; - }, - - realOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return [valueL, valueT]; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return [valueL, valueT]; - }, - - // caches x/y coordinate pair to use with overlap - within: function(element, x, y) { - if (this.includeScrollOffsets) - return this.withinIncludingScrolloffsets(element, x, y); - this.xcomp = x; - this.ycomp = y; - this.offset = this.cumulativeOffset(element); - - return (y >= this.offset[1] && - y < this.offset[1] + element.offsetHeight && - x >= this.offset[0] && - x < this.offset[0] + element.offsetWidth); - }, - - withinIncludingScrolloffsets: function(element, x, y) { - var offsetcache = this.realOffset(element); - - this.xcomp = x + offsetcache[0] - this.deltaX; - this.ycomp = y + offsetcache[1] - this.deltaY; - this.offset = this.cumulativeOffset(element); - - return (this.ycomp >= this.offset[1] && - this.ycomp < this.offset[1] + element.offsetHeight && - this.xcomp >= this.offset[0] && - this.xcomp < this.offset[0] + element.offsetWidth); - }, - - // within must be called directly before - overlap: function(mode, element) { - if (!mode) return 0; - if (mode == 'vertical') - return ((this.offset[1] + element.offsetHeight) - this.ycomp) / - element.offsetHeight; - if (mode == 'horizontal') - return ((this.offset[0] + element.offsetWidth) - this.xcomp) / - element.offsetWidth; - }, - - clone: function(source, target) { - source = $(source); - target = $(target); - target.style.position = 'absolute'; - var offsets = this.cumulativeOffset(source); - target.style.top = offsets[1] + 'px'; - target.style.left = offsets[0] + 'px'; - target.style.width = source.offsetWidth + 'px'; - target.style.height = source.offsetHeight + 'px'; - } -} diff --git a/lucene/site/build/site/skin/screen.css b/lucene/site/build/site/skin/screen.css deleted file mode 100644 index c6084f81df3..00000000000 --- a/lucene/site/build/site/skin/screen.css +++ /dev/null @@ -1,587 +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. -*/ -body { margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; } - -h1 { font-size : 160%; margin: 0px 0px 0px 0px; padding: 0px; } -h2 { font-size : 140%; margin: 1em 0px 0.8em 0px; padding: 0px; font-weight : bold;} -h3 { font-size : 130%; margin: 0.8em 0px 0px 0px; padding: 0px; font-weight : bold; } -.h3 { margin: 22px 0px 3px 0px; } -h4 { font-size : 120%; margin: 0.7em 0px 0px 0px; padding: 0px; font-weight : normal; text-align: left; } -.h4 { margin: 18px 0px 0px 0px; } -h4.faq { font-size : 120%; margin: 18px 0px 0px 0px; padding: 0px; font-weight : bold; text-align: left; } -h5 { font-size : 100%; margin: 14px 0px 0px 0px; padding: 0px; font-weight : normal; text-align: left; } - -/** -* table -*/ -table .title { background-color: #000000; } -.ForrestTable { - color: #ffffff; - background-color: #7099C5; - width: 100%; - font-size : 100%; - empty-cells: show; -} -table caption { - padding-left: 5px; - color: white; - text-align: left; - font-weight: bold; - background-color: #000000; -} -.ForrestTable td { - color: black; - background-color: #f0f0ff; -} -.ForrestTable th { text-align: center; } -/** - * Page Header - */ - -#top { - position: relative; - float: left; - width: 100%; - background: #294563; /* if you want a background in the header, put it here */ -} - -#top .breadtrail { - background: #CFDCED; - color: black; - border-bottom: solid 1px white; - padding: 3px 10px; - font-size: 75%; -} -#top .breadtrail a { color: black; } - -#top .header { - float: left; - width: 100%; - background: url("images/header_white_line.gif") repeat-x bottom; -} - -#top .grouplogo { - padding: 7px 0 10px 10px; - float: left; - text-align: left; -} -#top .projectlogo { - padding: 7px 0 10px 10px; - float: left; - width: 33%; - text-align: right; -} -#top .projectlogoA1 { - padding: 7px 0 10px 10px; - float: right; -} -html>body #top .searchbox { - bottom: 0px; -} -#top .searchbox { - position: absolute; - right: 10px; - height: 42px; - font-size: 70%; - white-space: nowrap; - text-align: right; - color: white; - background-color: #000000; - z-index:0; - background-image: url(images/rc-t-l-5-1header-2searchbox-3searchbox.png); - background-repeat: no-repeat; - background-position: top left; - bottom: -1px; /* compensate for IE rendering issue */ -} - -#top .searchbox form { - padding: 5px 10px; - margin: 0; -} -#top .searchbox p { - padding: 0 0 2px 0; - margin: 0; -} -#top .searchbox input { - font-size: 100%; -} - -#tabs { - clear: both; - padding-left: 10px; - margin: 0; - list-style: none; -} -/* background: #CFDCED url("images/tab-right.gif") no-repeat right top;*/ -#tabs li { - float: left; - background-image: url(images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png); - background-repeat: no-repeat; - background-position: top right; - background-color: #000000; - margin: 0 3px 0 0; - padding: 0; -} - -/*background: url("images/tab-left.gif") no-repeat left top;*/ -#tabs li a { - float: left; - display: block; - font-family: verdana, arial, sans-serif; - text-decoration: none; - color: black; - white-space: nowrap; - background-image: url(images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png); - background-repeat: no-repeat; - background-position: top left; - padding: 5px 15px 4px; - width: .1em; /* IE/Win fix */ -} - -#tabs li a:hover { - - cursor: pointer; - text-decoration:underline; -} - -#tabs > li a { width: auto; } /* Rest of IE/Win fix */ - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#tabs a { float: none; } -/* End IE5-Mac hack */ - -#top .header .current { - background-color: #4C6C8F; - background-image: url(images/rc-t-r-5-1header-2tab-selected-3tab-selected.png); - background-repeat: no-repeat; - background-position: top right; -} -#top .header .current a { - font-weight: bold; - padding-bottom: 5px; - color: white; - background-image: url(images/rc-t-l-5-1header-2tab-selected-3tab-selected.png); - background-repeat: no-repeat; - background-position: top left; -} -#publishedStrip { - padding-right: 10px; - padding-left: 20px; - padding-top: 3px; - padding-bottom:3px; - color: #ffffff; - font-size : 60%; - font-weight: bold; - background-color: #4C6C8F; - text-align:right; -} - -#level2tabs { -margin: 0; -float:left; -position:relative; - -} - - - -#level2tabs a:hover { - - cursor: pointer; - text-decoration:underline; - -} - -#level2tabs a{ - - cursor: pointer; - text-decoration:none; - background-image: url('images/chapter.gif'); - background-repeat: no-repeat; - background-position: center left; - padding-left: 6px; - margin-left: 6px; -} - -/* -* border-top: solid #4C6C8F 15px; -*/ -#main { - position: relative; - background: white; - clear:both; -} -#main .breadtrail { - clear:both; - position: relative; - background: #CFDCED; - color: black; - border-bottom: solid 1px black; - border-top: solid 1px black; - padding: 0px 180px; - font-size: 75%; - z-index:10; -} -/** -* Round corner -*/ -#roundtop { - background-image: url(images/rc-t-r-15-1body-2menu-3menu.png); - background-repeat: no-repeat; - background-position: top right; -} - -#roundbottom { - background-image: url(images/rc-b-r-15-1body-2menu-3menu.png); - background-repeat: no-repeat; - background-position: top right; -} - -img.corner { - width: 15px; - height: 15px; - border: none; - display: block !important; -} - -.roundtopsmall { - background-image: url(images/rc-t-r-5-1header-2searchbox-3searchbox.png); - background-repeat: no-repeat; - background-position: top right; -} - -#roundbottomsmall { - background-image: url(images/rc-b-r-5-1header-2tab-selected-3tab-selected.png); - background-repeat: no-repeat; - background-position: top right; -} - -img.cornersmall { - width: 5px; - height: 5px; - border: none; - display: block !important; -} -/** - * Side menu - */ -#menu a { font-weight: normal; text-decoration: none;} -#menu a:visited { font-weight: normal; } -#menu a:active { font-weight: normal; } -#menu a:hover { font-weight: normal; text-decoration:underline;} - -#menuarea { width:10em;} -#menu { - position: relative; - float: left; - width: 160px; - padding-top: 0px; - top:-18px; - left:10px; - z-index: 20; - background-color: #f90; - font-size : 70%; - -} - -.menutitle { - cursor:pointer; - padding: 3px 12px; - margin-left: 10px; - background-image: url('images/chapter.gif'); - background-repeat: no-repeat; - background-position: center left; - font-weight : bold; - - -} - -.menutitle:hover{text-decoration:underline;cursor: pointer;} - -#menu .menuitemgroup { - margin: 0px 0px 6px 8px; - padding: 0px; - font-weight : bold; } - -#menu .selectedmenuitemgroup{ - margin: 0px 0px 0px 8px; - padding: 0px; - font-weight : normal; - - } - -#menu .menuitem { - padding: 2px 0px 1px 13px; - background-image: url('images/page.gif'); - background-repeat: no-repeat; - background-position: center left; - font-weight : normal; - margin-left: 10px; -} - -#menu .menupage { - margin: 2px 0px 1px 10px; - padding: 0px 3px 0px 12px; - background-image: url('images/page.gif'); - background-repeat: no-repeat; - background-position: center left; - font-style : normal; -} -#menu .menupagetitle { - padding: 0px 0px 0px 1px; - font-style : normal; - border-style: solid; - border-width: 1px; - margin-right: 10px; - -} -#menu .menupageitemgroup { - padding: 3px 0px 4px 6px; - font-style : normal; - border-bottom: 1px solid ; - border-left: 1px solid ; - border-right: 1px solid ; - margin-right: 10px; -} -#menu .menupageitem { - font-style : normal; - font-weight : normal; - border-width: 0px; - font-size : 90%; -} -#menu #credit { - text-align: center; -} -#menu #credit2 { - text-align: center; - padding: 3px 3px 3px 3px; - background-color: #ffffff; -} -#menu .searchbox { - text-align: center; -} -#menu .searchbox form { - padding: 3px 3px; - margin: 0; -} -#menu .searchbox input { - font-size: 100%; -} - -#content { - padding: 20px 20px 20px 180px; - margin: 0; - font : small Verdana, Helvetica, sans-serif; - font-size : 80%; -} - -#content ul { - margin: 0; - padding: 0 25px; -} -#content li { - padding: 0 5px; -} -#feedback { - color: black; - background: #CFDCED; - text-align:center; - margin-top: 5px; -} -#feedback #feedbackto { - font-size: 90%; - color: black; -} -#footer { - clear: both; - position: relative; /* IE bugfix (http://www.dracos.co.uk/web/css/ie6floatbug/) */ - width: 100%; - background: #CFDCED; - border-top: solid 1px #4C6C8F; - color: black; -} -#footer .copyright { - position: relative; /* IE bugfix cont'd */ - padding: 5px; - margin: 0; - width: 45%; -} -#footer .lastmodified { - position: relative; /* IE bugfix cont'd */ - float: right; - width: 45%; - padding: 5px; - margin: 0; - text-align: right; -} -#footer a { color: white; } - -#footer #logos { - text-align: left; -} - - -/** - * Misc Styles - */ - -acronym { cursor: help; } -.boxed { background-color: #a5b6c6;} -.underlined_5 {border-bottom: solid 5px #4C6C8F;} -.underlined_10 {border-bottom: solid 10px #4C6C8F;} -/* ==================== snail trail ============================ */ - -.trail { - position: relative; /* IE bugfix cont'd */ - font-size: 70%; - text-align: right; - float: right; - margin: -10px 5px 0px 5px; - padding: 0; -} - -#motd-area { - position: relative; /* IE bugfix cont'd */ - float: right; - width: 35%; - background-color: #f0f0ff; - border-top: solid 1px #4C6C8F; - border-bottom: solid 1px #4C6C8F; - margin-bottom: 15px; - margin-left: 15px; - margin-right: 10%; - padding-bottom: 5px; - padding-top: 5px; -} - -#minitoc-area { - border-top: solid 1px #4C6C8F; - border-bottom: solid 1px #4C6C8F; - margin: 15px 10% 5px 15px; - /* margin-bottom: 15px; - margin-left: 15px; - margin-right: 10%;*/ - padding-bottom: 7px; - padding-top: 5px; -} -.minitoc { - list-style-image: url('images/current.gif'); - font-weight: normal; -} - -li p { - margin: 0; - padding: 0; -} - -.pdflink { - position: relative; /* IE bugfix cont'd */ - float: right; - margin: 0px 5px; - padding: 0; -} -.pdflink br { - margin-top: -10px; - padding-left: 1px; -} -.pdflink a { - display: block; - font-size: 70%; - text-align: center; - margin: 0; - padding: 0; -} - -.pdflink img { - display: block; - height: 16px; - width: 16px; -} -.xmllink { - position: relative; /* IE bugfix cont'd */ - float: right; - margin: 0px 5px; - padding: 0; -} -.xmllink br { - margin-top: -10px; - padding-left: 1px; -} -.xmllink a { - display: block; - font-size: 70%; - text-align: center; - margin: 0; - padding: 0; -} - -.xmllink img { - display: block; - height: 16px; - width: 16px; -} -.podlink { - position: relative; /* IE bugfix cont'd */ - float: right; - margin: 0px 5px; - padding: 0; -} -.podlink br { - margin-top: -10px; - padding-left: 1px; -} -.podlink a { - display: block; - font-size: 70%; - text-align: center; - margin: 0; - padding: 0; -} - -.podlink img { - display: block; - height: 16px; - width: 16px; -} - -.printlink { - position: relative; /* IE bugfix cont'd */ - float: right; -} -.printlink br { - margin-top: -10px; - padding-left: 1px; -} -.printlink a { - display: block; - font-size: 70%; - text-align: center; - margin: 0; - padding: 0; -} -.printlink img { - display: block; - height: 16px; - width: 16px; -} - -p.instruction { - display: list-item; - list-style-image: url('../images/instruction_arrow.png'); - list-style-position: outside; - margin-left: 2em; -} \ No newline at end of file diff --git a/lucene/site/build/site/skin/skinconf.xsl b/lucene/site/build/site/skin/skinconf.xsl deleted file mode 100644 index 2f8df12903c..00000000000 --- a/lucene/site/build/site/skin/skinconf.xsl +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/build/site/systemrequirements.html b/lucene/site/build/site/systemrequirements.html deleted file mode 100644 index 895464176fc..00000000000 --- a/lucene/site/build/site/systemrequirements.html +++ /dev/null @@ -1,299 +0,0 @@ - - - - - - - -Apache Lucene - System Requirements - - - - - - - - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    Apache Lucene - System Requirements

    - - - - -

    System Requirements

    -
    -

    - Lucene Core has the following minimum requirements: -

      - -
    • Java 1.6.x or greater.
    • - -
    • ANT 1.7.0 or greater.
    • - -
    • CPU, Disk and Memory requirements are based on the many choices made in implementing Lucene (document size, number of documents, and number of hits retrieved to name a few.)
    • - -
    - -

    -

    Some modules may have other requirements, refer to their documentation and build files for information.

    -
    - - - -
    - -
     
    -
    - - - - diff --git a/lucene/site/forrest.properties b/lucene/site/forrest.properties deleted file mode 100755 index 63f08f9d2de..00000000000 --- a/lucene/site/forrest.properties +++ /dev/null @@ -1,130 +0,0 @@ -# Copyright 2002-2005 The Apache Software Foundation or its licensors, -# as applicable. -# -# Licensed 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. - -############## -# Properties used by forrest.build.xml for building the website -# These are the defaults, un-comment them only if you need to change them. -############## - -# Prints out a summary of Forrest settings for this project -#forrest.echo=true - -# Project name (used to name .war file) -#project.name=my-project - -# Specifies name of Forrest skin to use -# See list at http://forrest.apache.org/docs/skins.html -project.skin=lucene - -# Descriptors for plugins and skins -# comma separated list, file:// is supported -#forrest.skins.descriptors=http://forrest.apache.org/skins/skins.xml,file:///c:/myskins/skins.xml -#forrest.plugins.descriptors=http://forrest.apache.org/plugins/plugins.xml,http://forrest.apache.org/plugins/whiteboard-plugins.xml - -############## -# behavioural properties -#project.menu-scheme=tab_attributes -#project.menu-scheme=directories - -############## -# layout properties - -# Properties that can be set to override the default locations -# -# Parent properties must be set. This usually means uncommenting -# project.content-dir if any other property using it is uncommented - -#project.status=status.xml -#project.content-dir=src/documentation -#project.raw-content-dir=${project.content-dir}/content -#project.conf-dir=${project.content-dir}/conf -#project.sitemap-dir=${project.content-dir} -#project.xdocs-dir=${project.content-dir}/content/xdocs -#project.resources-dir=${project.content-dir}/resources -#project.stylesheets-dir=${project.resources-dir}/stylesheets -#project.images-dir=${project.resources-dir}/images -#project.schema-dir=${project.resources-dir}/schema -#project.skins-dir=${project.content-dir}/skins -#project.skinconf=${project.content-dir}/skinconf.xml -#project.lib-dir=${project.content-dir}/lib -#project.classes-dir=${project.content-dir}/classes -#project.translations-dir=${project.content-dir}/translations -project.configfile=${project.home}/src/documentation/conf/cli.xconf - -############## -# validation properties - -# This set of properties determine if validation is performed -# Values are inherited unless overridden. -# e.g. if forrest.validate=false then all others are false unless set to true. -#forrest.validate=true -#forrest.validate.xdocs=${forrest.validate} -#forrest.validate.skinconf=${forrest.validate} -#forrest.validate.sitemap=${forrest.validate} -#forrest.validate.stylesheets=${forrest.validate} -#forrest.validate.skins=${forrest.validate} -#forrest.validate.skins.stylesheets=${forrest.validate.skins} - -# *.failonerror=(true|false) - stop when an XML file is invalid -#forrest.validate.failonerror=true - -# *.excludes=(pattern) - comma-separated list of path patterns to not validate -# e.g. -#forrest.validate.xdocs.excludes=samples/subdir/**, samples/faq.xml -#forrest.validate.xdocs.excludes= - - -############## -# General Forrest properties - -# The URL to start crawling from -#project.start-uri=linkmap.html - -# Set logging level for messages printed to the console -# (DEBUG, INFO, WARN, ERROR, FATAL_ERROR) -#project.debuglevel=ERROR - -# Max memory to allocate to Java -#forrest.maxmemory=64m - -# Any other arguments to pass to the JVM. For example, to run on an X-less -# server, set to -Djava.awt.headless=true -#forrest.jvmargs= - -# The bugtracking URL - the issue number will be appended -#project.bugtracking-url=http://issues.apache.org/bugzilla/show_bug.cgi?id= -#project.bugtracking-url=http://issues.apache.org/jira/browse/ - -# The issues list as rss -#project.issues-rss-url= - -#I18n Property. Based on the locale request for the browser. -#If you want to use it for static site then modify the JVM system.language -# and run once per language -#project.i18n=true - -# The names of plugins that are required to build the project -# comma separated list (no spaces) -# You can request a specific version by appending "-VERSION" to the end of -# the plugin name. If you exclude a version number the latest released version -# will be used, however, be aware that this may be a development version. In -# a production environment it is recomended that you specify a known working -# version. -# Run "forrest available-plugins" for a list of plug-ins currently available -#project.required.plugins=org.apache.forrest.plugin.output.pdf - -# Proxy configuration -# proxy.host= -# proxy.port= diff --git a/lucene/site/html/demo.html b/lucene/site/html/demo.html new file mode 100644 index 00000000000..102cc752713 --- /dev/null +++ b/lucene/site/html/demo.html @@ -0,0 +1,72 @@ + + + +Apache Lucene - Building and Installing the Basic Demo + + +

    Apache Lucene - Building and Installing the Basic Demo

    + + +

    About this Document

    +
    +

    This document is intended as a "getting started" guide to using and running +the Lucene demos. It walks you through some basic installation and +configuration.

    +
    + +

    About the Demo

    +
    +

    The Lucene command-line demo code consists of an application that +demonstrates various functionalities of Lucene and how you can add Lucene to +your applications.

    +
    + +

    Setting your CLASSPATH

    +
    +

    First, you should download the latest +Lucene distribution and then extract it to a working directory.

    +

    You need three JARs: the Lucene JAR, the common analysis JAR, and the Lucene +demo JAR. You should see the Lucene JAR file in the core/ directory you created +when you extracted the archive -- it should be named something like +lucene-core-{version}.jar. You should also see +files called lucene-analyzers-common-{version}.jar and lucene-demo-{version}.jar under analysis/common/ and demo/, +respectively.

    +

    Put all three of these files in your Java CLASSPATH.

    +
    + +

    Indexing Files

    +
    +

    Once you've gotten this far you're probably itching to go. Let's build an +index! Assuming you've set your CLASSPATH correctly, just type:

    +
    +    java org.apache.lucene.demo.IndexFiles -docs {path-to-lucene}/src
    +
    +This will produce a subdirectory called index +which will contain an index of all of the Lucene source code. +

    To search the index type:

    +
    +    java org.apache.lucene.demo.SearchFiles
    +
    +You'll be prompted for a query. Type in a swear word and press the enter key. +You'll see that the Lucene developers are very well mannered and get no +results. Now try entering the word "string". That should return a whole bunch +of documents. The results will page at every tenth result and ask you whether +you want more results.
    + +

    About the code...

    + + + diff --git a/lucene/site/html/demo2.html b/lucene/site/html/demo2.html new file mode 100644 index 00000000000..8c7a74ce66e --- /dev/null +++ b/lucene/site/html/demo2.html @@ -0,0 +1,148 @@ + + + +Apache Lucene - Basic Demo Sources Walk-through + + +

    Apache Lucene - Basic Demo Sources Walk-through

    + + +

    About the Code

    +
    +

    In this section we walk through the sources behind the command-line Lucene +demo: where to find them, their parts and their function. This section is +intended for Java developers wishing to understand how to use Lucene in their +applications.

    +
    + +

    Location of the source

    +
    +

    NOTE: to examine the sources, you need to download and extract a source +checkout of Lucene: (lucene-{version}-src.zip).

    +

    Relative to the directory created when you extracted Lucene, you should see +a directory called lucene/demo/. This is the root +for the Lucene demo. Under this directory is src/java/org/apache/lucene/demo/. This is where all the Java +sources for the demo live.

    +

    Within this directory you should see the IndexFiles.java class we executed earlier. Bring it up in +vi or your editor of choice and let's take a look +at it.

    +
    + +

    IndexFiles

    +
    +

    As we discussed in the previous walk-through, the IndexFiles class creates +a Lucene Index. Let's take a look at how it does this.

    +

    The main() method parses the command-line +parameters, then in preparation for instantiating IndexWriter, opens a +Directory and +instantiates +StandardAnalyzer and IndexWriterConfig.

    +

    The value of the -index command-line parameter +is the name of the filesystem directory where all index information should be +stored. If IndexFiles is invoked with a relative +path given in the -index command-line parameter, +or if the -index command-line parameter is not +given, causing the default relative index path "index" to be used, the index path will be created as a +subdirectory of the current working directory (if it does not already exist). +On some platforms, the index path may be created in a different directory (such +as the user's home directory).

    +

    The -docs command-line parameter value is the +location of the directory containing files to be indexed.

    +

    The -update command-line parameter tells +IndexFiles not to delete the index if it already +exists. When -update is not given, IndexFiles will first wipe the slate clean before indexing +any documents.

    +

    Lucene Directorys are used by +the IndexWriter to store information in the +index. In addition to the FSDirectory +implementation we are using, there are several other Directory subclasses that can write to RAM, to databases, +etc.

    +

    Lucene Analyzers are +processing pipelines that break up text into indexed tokens, a.k.a. terms, and +optionally perform other operations on these tokens, e.g. downcasing, synonym +insertion, filtering out unwanted tokens, etc. The Analyzer we are using is StandardAnalyzer, which creates tokens using the Word Break +rules from the Unicode Text Segmentation algorithm specified in Unicode Standard Annex #29; converts +tokens to lowercase; and then filters out stopwords. Stopwords are common +language words such as articles (a, an, the, etc.) and other tokens that may +have less value for searching. It should be noted that there are different +rules for every language, and you should use the proper analyzer for each. +Lucene currently provides Analyzers for a number of different languages (see +the javadocs under lucene/analysis/common/src/java/org/apache/lucene/analysis).

    +

    The IndexWriterConfig instance holds all +configuration for IndexWriter. For example, we +set the OpenMode to use here based on the value +of the -update command-line parameter.

    +

    Looking further down in the file, after IndexWriter is instantiated, you should see the indexDocs() code. This recursive function crawls the +directories and creates Document objects. The +Document is simply a data object to represent the +text content from the file as well as its creation time and location. These +instances are added to the IndexWriter. If the +-update command-line parameter is given, the +IndexWriter OpenMode will be set to OpenMode.CREATE_OR_APPEND, and rather than adding documents +to the index, the IndexWriter will +update them in the index by attempting to find an +already-indexed document with the same identifier (in our case, the file path +serves as the identifier); deleting it from the index if it exists; and then +adding the new document to the index.

    +
    + +

    Searching Files

    +
    +

    The SearchFiles class is +quite simple. It primarily collaborates with an IndexSearcher, + +StandardAnalyzer (which is used in the IndexFiles class as well) +and a QueryParser. The +query parser is constructed with an analyzer used to interpret your query text +in the same way the documents are interpreted: finding word boundaries, +downcasing, and removing useless words like 'a', 'an' and 'the'. The Query object contains the +results from the QueryParser which +is passed to the searcher. Note that it's also possible to programmatically +construct a rich Query object without using +the query parser. The query parser just enables decoding the Lucene query syntax into the corresponding +Query object.

    +

    SearchFiles uses the IndexSearcher.search(query,n) method that returns TopDocs with max +n hits. The results are printed in pages, sorted +by score (i.e. relevance).

    +
    + + diff --git a/lucene/site/html/fileformats.html b/lucene/site/html/fileformats.html new file mode 100644 index 00000000000..3ce4940caee --- /dev/null +++ b/lucene/site/html/fileformats.html @@ -0,0 +1,1120 @@ + + + +Apache Lucene - Index File Formats + + + + +

    Apache Lucene - Index File Formats

    + + +

    Index File Formats

    +
    +

    This document defines the index file formats used in this version of Lucene. +If you are using a different version of Lucene, please consult the copy of +docs/fileformats.html that was distributed with +the version you are using.

    +

    Apache Lucene is written in Java, but several efforts are underway to write +versions of +Lucene in other programming languages. If these versions are to remain +compatible with Apache Lucene, then a language-independent definition of the +Lucene index format is required. This document thus attempts to provide a +complete and independent definition of the Apache Lucene file formats.

    +

    As Lucene evolves, this document should evolve. Versions of Lucene in +different programming languages should endeavor to agree on file formats, and +generate new versions of this document.

    +

    Compatibility notes are provided in this document, describing how file +formats have changed from prior versions.

    +

    In version 2.1, the file format was changed to allow lock-less commits (ie, +no more commit lock). The change is fully backwards compatible: you can open a +pre-2.1 index for searching or adding/deleting of docs. When the new segments +file is saved (committed), it will be written in the new file format (meaning +no specific "upgrade" process is needed). But note that once a commit has +occurred, pre-2.1 Lucene will not be able to read the index.

    +

    In version 2.3, the file format was changed to allow segments to share a +single set of doc store (vectors & stored fields) files. This allows for +faster indexing in certain cases. The change is fully backwards compatible (in +the same way as the lock-less commits change in 2.1).

    +

    In version 2.4, Strings are now written as true UTF-8 byte sequence, not +Java's modified UTF-8. See issue LUCENE-510 for details.

    +

    In version 2.9, an optional opaque Map<String,String> CommitUserData +may be passed to IndexWriter's commit methods (and later retrieved), which is +recorded in the segments_N file. See issue LUCENE-1382 for details. Also, +diagnostics were added to each segment written recording details about why it +was written (due to flush, merge; which OS/JRE was used; etc.). See issue +LUCENE-1654 for details.

    +

    In version 3.0, compressed fields are no longer written to the index (they +can still be read, but on merge the new segment will write them, uncompressed). +See issue LUCENE-1960 for details.

    +

    In version 3.1, segments records the code version that created them. See +LUCENE-2720 for details. Additionally segments track explicitly whether or not +they have term vectors. See LUCENE-2811 for details.

    +

    In version 3.2, numeric fields are written as natively to stored fields +file, previously they were stored in text format only.

    +

    In version 3.4, fields can omit position data while still indexing term +frequencies.

    +
    + +

    Definitions

    +
    +

    The fundamental concepts in Lucene are index, document, field and term.

    +

    An index contains a sequence of documents.

    +
      +
    • +

      A document is a sequence of fields.

      +
    • +
    • +

      A field is a named sequence of terms.

      +
    • +
    • A term is a string.
    • +
    +

    The same string in two different fields is considered a different term. Thus +terms are represented as a pair of strings, the first naming the field, and the +second naming text within the field.

    + +

    Inverted Indexing

    +

    The index stores statistics about terms in order to make term-based search +more efficient. Lucene's index falls into the family of indexes known as an +inverted index. This is because it can list, for a term, the documents +that contain it. This is the inverse of the natural relationship, in which +documents list terms.

    + +

    Types of Fields

    +

    In Lucene, fields may be stored, in which case their text is stored +in the index literally, in a non-inverted manner. Fields that are inverted are +called indexed. A field may be both stored and indexed.

    +

    The text of a field may be tokenized into terms to be indexed, or the +text of a field may be used literally as a term to be indexed. Most fields are +tokenized, but sometimes it is useful for certain identifier fields to be +indexed literally.

    +

    See the Field +java docs for more information on Fields.

    + +

    Segments

    +

    Lucene indexes may be composed of multiple sub-indexes, or segments. +Each segment is a fully independent index, which could be searched separately. +Indexes evolve by:

    +
      +
    1. +

      Creating new segments for newly added documents.

      +
    2. +
    3. +

      Merging existing segments.

      +
    4. +
    +

    Searches may involve multiple segments and/or multiple indexes, each index +potentially composed of a set of segments.

    + +

    Document Numbers

    +

    Internally, Lucene refers to documents by an integer document number. +The first document added to an index is numbered zero, and each subsequent +document added gets a number one greater than the previous.

    +


    +

    Note that a document's number may change, so caution should be taken when +storing these numbers outside of Lucene. In particular, numbers may change in +the following situations:

    +
      +
    • +

      The numbers stored in each segment are unique only within the segment, and +must be converted before they can be used in a larger context. The standard +technique is to allocate each segment a range of values, based on the range of +numbers used in that segment. To convert a document number from a segment to an +external value, the segment's base document number is added. To convert +an external value back to a segment-specific value, the segment is identified +by the range that the external value is in, and the segment's base value is +subtracted. For example two five document segments might be combined, so that +the first segment has a base value of zero, and the second of five. Document +three from the second segment would have an external value of eight.

      +
    • +
    • +

      When documents are deleted, gaps are created in the numbering. These are +eventually removed as the index evolves through merging. Deleted documents are +dropped when segments are merged. A freshly-merged segment thus has no gaps in +its numbering.

      +
    • +
    +
    + +

    Overview

    +
    +

    Each segment index maintains the following:

    +
      +
    • +

      Field names. This contains the set of field names used in the index.

      +
    • +
    • +

      Stored Field values. This contains, for each document, a list of +attribute-value pairs, where the attributes are field names. These are used to +store auxiliary information about the document, such as its title, url, or an +identifier to access a database. The set of stored fields are what is returned +for each hit when searching. This is keyed by document number.

      +
    • +
    • +

      Term dictionary. A dictionary containing all of the terms used in all of the +indexed fields of all of the documents. The dictionary also contains the number +of documents which contain the term, and pointers to the term's frequency and +proximity data.

      +
    • +
    • +

      Term Frequency data. For each term in the dictionary, the numbers of all the +documents that contain that term, and the frequency of the term in that +document, unless frequencies are omitted (IndexOptions.DOCS_ONLY)

      +
    • +
    • +

      Term Proximity data. For each term in the dictionary, the positions that the +term occurs in each document. Note that this will not exist if all fields in +all documents omit position data.

      +
    • +
    • +

      Normalization factors. For each field in each document, a value is stored +that is multiplied into the score for hits on that field.

      +
    • +
    • +

      Term Vectors. For each field in each document, the term vector (sometimes +called document vector) may be stored. A term vector consists of term text and +term frequency. To add Term Vectors to your index see the Field constructors

      +
    • +
    • +

      Deleted documents. An optional file indicating which documents are +deleted.

      +
    • +
    +

    Details on each of these are provided in subsequent sections.

    +
    + +

    File Naming

    +
    +

    All files belonging to a segment have the same name with varying extensions. +The extensions correspond to the different file formats described below. When +using the Compound File format (default in 1.4 and greater) these files are +collapsed into a single .cfs file (see below for details)

    +

    Typically, all segments in an index are stored in a single directory, +although this is not required.

    +

    As of version 2.1 (lock-less commits), file names are never re-used (there +is one exception, "segments.gen", see below). That is, when any file is saved +to the Directory it is given a never before used filename. This is achieved +using a simple generations approach. For example, the first segments file is +segments_1, then segments_2, etc. The generation is a sequential long integer +represented in alpha-numeric (base 36) form.

    +
    + +

    Summary of File Extensions

    +
    +

    The following table summarizes the names and extensions of the files in +Lucene:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameExtensionBrief Description
    Segments Filesegments.gen, segments_NStores information about segments
    Lock Filewrite.lockThe Write lock prevents multiple IndexWriters from writing to the same +file.
    Compound File.cfsAn optional "virtual" file consisting of all the other index files for +systems that frequently run out of file handles.
    Compound File Entry table.cfeThe "virtual" compound file's entry table holding all entries in the +corresponding .cfs file (Since 3.4)
    Fields.fnmStores information about the fields
    Field Index.fdxContains pointers to field data
    Field Data.fdtThe stored fields for documents
    Term Infos.tisPart of the term dictionary, stores term info
    Term Info Index.tiiThe index into the Term Infos file
    Frequencies.frqContains the list of docs which contain each term along with frequency
    Positions.prxStores position information about where a term occurs in the index
    Norms.nrmEncodes length and boost factors for docs and fields
    Term Vector Index.tvxStores offset into the document data file
    Term Vector Documents.tvdContains information about each document that has term vectors
    Term Vector Fields.tvfThe field level info about term vectors
    Deleted Documents.delInfo about what files are deleted
    +
    + +

    Primitive Types

    +
    +

    Byte

    +

    The most primitive type is an eight-bit byte. Files are accessed as +sequences of bytes. All other data types are defined as sequences of bytes, so +file formats are byte-order independent.

    + +

    UInt32

    +

    32-bit unsigned integers are written as four bytes, high-order bytes +first.

    +

    UInt32 --> <Byte>4

    + +

    Uint64

    +

    64-bit unsigned integers are written as eight bytes, high-order bytes +first.

    +

    UInt64 --> <Byte>8

    + +

    VInt

    +

    A variable-length format for positive integers is defined where the +high-order bit of each byte indicates whether more bytes remain to be read. The +low-order seven bits are appended as increasingly more significant bits in the +resulting integer value. Thus values from zero to 127 may be stored in a single +byte, values from 128 to 16,383 may be stored in two bytes, and so on.

    +

    VInt Encoding Example

    + +++++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    Value

    +
    +

    First byte

    +
    +

    Second byte

    +
    +

    Third byte

    +
    +

    0

    +
    +

    00000000

    +
    +


    +
    +


    +
    +

    1

    +
    +

    00000001

    +
    +


    +
    +


    +
    +

    2

    +
    +

    00000010

    +
    +


    +
    +


    +
    +

    ...

    +
    +


    +
    +


    +
    +


    +
    +

    127

    +
    +

    01111111

    +
    +


    +
    +


    +
    +

    128

    +
    +

    10000000

    +
    +

    00000001

    +
    +


    +
    +

    129

    +
    +

    10000001

    +
    +

    00000001

    +
    +


    +
    +

    130

    +
    +

    10000010

    +
    +

    00000001

    +
    +


    +
    +

    ...

    +
    +


    +
    +


    +
    +


    +
    +

    16,383

    +
    +

    11111111

    +
    +

    01111111

    +
    +


    +
    +

    16,384

    +
    +

    10000000

    +
    +

    10000000

    +
    +

    00000001

    +
    +

    16,385

    +
    +

    10000001

    +
    +

    10000000

    +
    +

    00000001

    +
    +

    ...

    +
    +


    +
    +


    +
    +


    +
    +

    This provides compression while still being efficient to decode.

    + +

    Chars

    +

    Lucene writes unicode character sequences as UTF-8 encoded bytes.

    + +

    String

    +

    Lucene writes strings as UTF-8 encoded bytes. First the length, in bytes, is +written as a VInt, followed by the bytes.

    +

    String --> VInt, Chars

    +
    + +

    Compound Types

    +
    +

    Map<String,String>

    +

    In a couple places Lucene stores a Map String->String.

    +

    Map<String,String> --> +Count<String,String>Count

    +
    + +

    Per-Index Files

    +
    +

    The files in this section exist one-per-index.

    + +

    Segments File

    +

    The active segments in the index are stored in the segment info file, +segments_N. There may be one or more segments_N files in the +index; however, the one with the largest generation is the active one (when +older segments_N files are present it's because they temporarily cannot be +deleted, or, a writer is in the process of committing, or a custom IndexDeletionPolicy +is in use). This file lists each segment by name, has details about the +separate norms and deletion files, and also contains the size of each +segment.

    +

    As of 2.1, there is also a file segments.gen. This file contains +the current generation (the _N in segments_N) of the index. +This is used only as a fallback in case the current generation cannot be +accurately determined by directory listing alone (as is the case for some NFS +clients with time-based directory cache expiraation). This file simply contains +an Int32 version header (SegmentInfos.FORMAT_LOCKLESS = -2), followed by the +generation recorded as Int64, written twice.

    +

    3.1 Segments --> Format, Version, NameCounter, SegCount, +<SegVersion, SegName, SegSize, DelGen, DocStoreOffset, [DocStoreSegment, +DocStoreIsCompoundFile], HasSingleNormFile, NumField, +NormGenNumField, IsCompoundFile, DeletionCount, HasProx, +Diagnostics, HasVectors>SegCount, CommitUserData, Checksum

    +

    Format, NameCounter, SegCount, SegSize, NumField, DocStoreOffset, +DeletionCount --> Int32

    +

    Version, DelGen, NormGen, Checksum --> Int64

    +

    SegVersion, SegName, DocStoreSegment --> String

    +

    Diagnostics --> Map<String,String>

    +

    IsCompoundFile, HasSingleNormFile, DocStoreIsCompoundFile, HasProx, +HasVectors --> Int8

    +

    CommitUserData --> Map<String,String>

    +

    Format is -9 (SegmentInfos.FORMAT_DIAGNOSTICS).

    +

    Version counts how often the index has been changed by adding or deleting +documents.

    +

    NameCounter is used to generate names for new segment files.

    +

    SegVersion is the code version that created the segment.

    +

    SegName is the name of the segment, and is used as the file name prefix for +all of the files that compose the segment's index.

    +

    SegSize is the number of documents contained in the segment index.

    +

    DelGen is the generation count of the separate deletes file. If this is -1, +there are no separate deletes. If it is 0, this is a pre-2.1 segment and you +must check filesystem for the existence of _X.del. Anything above zero means +there are separate deletes (_X_N.del).

    +

    NumField is the size of the array for NormGen, or -1 if there are no +NormGens stored.

    +

    NormGen records the generation of the separate norms files. If NumField is +-1, there are no normGens stored and they are all assumed to be 0 when the +segment file was written pre-2.1 and all assumed to be -1 when the segments +file is 2.1 or above. The generation then has the same meaning as delGen +(above).

    +

    IsCompoundFile records whether the segment is written as a compound file or +not. If this is -1, the segment is not a compound file. If it is 1, the segment +is a compound file. Else it is 0, which means we check filesystem to see if +_X.cfs exists.

    +

    If HasSingleNormFile is 1, then the field norms are written as a single +joined file (with extension .nrm); if it is 0 then each field's norms +are stored as separate .fN files. See "Normalization Factors" below +for details.

    +

    DocStoreOffset, DocStoreSegment, DocStoreIsCompoundFile: If DocStoreOffset +is -1, this segment has its own doc store (stored fields values and term +vectors) files and DocStoreSegment and DocStoreIsCompoundFile are not stored. +In this case all files for stored field values (*.fdt and +*.fdx) and term vectors (*.tvf, *.tvd and +*.tvx) will be stored with this segment. Otherwise, DocStoreSegment is +the name of the segment that has the shared doc store files; +DocStoreIsCompoundFile is 1 if that segment is stored in compound file format +(as a .cfx file); and DocStoreOffset is the starting document in the +shared doc store files where this segment's documents begin. In this case, this +segment does not store its own doc store files but instead shares a single set +of these files with other segments.

    +

    Checksum contains the CRC32 checksum of all bytes in the segments_N file up +until the checksum. This is used to verify integrity of the file on opening the +index.

    +

    DeletionCount records the number of deleted documents in this segment.

    +

    HasProx is 1 if any fields in this segment have position data +(IndexOptions.DOCS_AND_FREQS_AND_POSITIONS); else, it's 0.

    +

    CommitUserData stores an optional user-supplied opaque +Map<String,String> that was passed to IndexWriter's commit or +prepareCommit, or IndexReader's flush methods.

    +

    The Diagnostics Map is privately written by IndexWriter, as a debugging aid, +for each segment it creates. It includes metadata like the current Lucene +version, OS, Java version, why the segment was created (merge, flush, +addIndexes), etc.

    +

    HasVectors is 1 if this segment stores term vectors, else it's 0.

    + +

    Lock File

    +

    The write lock, which is stored in the index directory by default, is named +"write.lock". If the lock directory is different from the index directory then +the write lock will be named "XXXX-write.lock" where XXXX is a unique prefix +derived from the full path to the index directory. When this file is present, a +writer is currently modifying the index (adding or removing documents). This +lock file ensures that only one writer is modifying the index at a time.

    + +

    Deletable File

    +

    A writer dynamically computes the files that are deletable, instead, so no +file is written.

    + +

    Compound Files

    +

    Starting with Lucene 1.4 the compound file format became default. This is +simply a container for all files described in the next section (except for the +.del file).

    +

    Compound Entry Table (.cfe) --> Version, FileCount, <FileName, +DataOffset, DataLength> FileCount

    +

    Compound (.cfs) --> FileData FileCount

    +

    Version --> Int

    +

    FileCount --> VInt

    +

    DataOffset --> Long

    +

    DataLength --> Long

    +

    FileName --> String

    +

    FileData --> raw file data

    +

    The raw file data is the data from the individual files named above.

    +

    Starting with Lucene 2.3, doc store files (stored field values and term +vectors) can be shared in a single set of files for more than one segment. When +compound file is enabled, these shared files will be added into a single +compound file (same format as above) but with the extension .cfx.

    +
    + +

    Per-Segment Files

    +
    +

    The remaining files are all per-segment, and are thus defined by suffix.

    + +

    Fields

    +


    +Field Info

    +

    Field names are stored in the field info file, with suffix .fnm.

    +

    FieldInfos (.fnm) --> FNMVersion,FieldsCount, <FieldName, +FieldBits> FieldsCount

    +

    FNMVersion, FieldsCount --> VInt

    +

    FieldName --> String

    +

    FieldBits --> Byte

    +
      +
    • The low-order bit is one for indexed fields, and zero for non-indexed +fields.
    • +
    • The second lowest-order bit is one for fields that have term vectors +stored, and zero for fields without term vectors.
    • +
    • If the fifth lowest-order bit is set (0x10), norms are omitted for the +indexed field.
    • +
    • If the sixth lowest-order bit is set (0x20), payloads are stored for the +indexed field.
    • +
    • If the seventh lowest-order bit is set (0x40), term frequencies and +positions omitted for the indexed field.
    • +
    • If the eighth lowest-order bit is set (0x80), positions are omitted for the +indexed field.
    • +
    +

    FNMVersion (added in 2.9) is -2 for indexes from 2.9 - 3.3. It is -3 for +indexes in Lucene 3.4+

    +

    Fields are numbered by their order in this file. Thus field zero is the +first field in the file, field one the next, and so on. Note that, like +document numbers, field numbers are segment relative.

    +


    +Stored Fields

    +

    Stored fields are represented by two files:

    +
      +
    1. +

      The field index, or .fdx file.

      +

      This contains, for each document, a pointer to its field data, as +follows:

      +

      FieldIndex (.fdx) --> <FieldValuesPosition> SegSize

      +

      FieldValuesPosition --> Uint64

      +

      This is used to find the location within the field data file of the fields +of a particular document. Because it contains fixed-length data, this file may +be easily randomly accessed. The position of document n 's field data is +the Uint64 at n*8 in this file.

      +
    2. +
    3. +

      The field data, or .fdt file.

      +

      This contains the stored fields of each document, as follows:

      +

      FieldData (.fdt) --> <DocFieldData> SegSize

      +

      DocFieldData --> FieldCount, <FieldNum, Bits, Value> +FieldCount

      +

      FieldCount --> VInt

      +

      FieldNum --> VInt

      +

      Bits --> Byte

      +
        +
      • low order bit is one for tokenized fields
      • +
      • second bit is one for fields containing binary data
      • +
      • third bit is one for fields with compression option enabled (if compression +is enabled, the algorithm used is ZLIB), only available for indexes until +Lucene version 2.9.x
      • +
      • 4th to 6th bit (mask: 0x7<<3) define the type of a numeric field: +
          +
        • all bits in mask are cleared if no numeric field at all
        • +
        • 1<<3: Value is Int
        • +
        • 2<<3: Value is Long
        • +
        • 3<<3: Value is Int as Float (as of Float.intBitsToFloat)
        • +
        • 4<<3: Value is Long as Double (as of Double.longBitsToDouble)
        • +
        +
      • +
      +

      Value --> String | BinaryValue | Int | Long (depending on Bits)

      +

      BinaryValue --> ValueSize, <Byte>^ValueSize

      +

      ValueSize --> VInt

      +
    4. +
    + +

    Term Dictionary

    +

    The term dictionary is represented as two files:

    +
      +
    1. +

      The term infos, or tis file.

      +

      TermInfoFile (.tis)--> TIVersion, TermCount, IndexInterval, SkipInterval, +MaxSkipLevels, TermInfos

      +

      TIVersion --> UInt32

      +

      TermCount --> UInt64

      +

      IndexInterval --> UInt32

      +

      SkipInterval --> UInt32

      +

      MaxSkipLevels --> UInt32

      +

      TermInfos --> <TermInfo> TermCount

      +

      TermInfo --> <Term, DocFreq, FreqDelta, ProxDelta, SkipDelta>

      +

      Term --> <PrefixLength, Suffix, FieldNum>

      +

      Suffix --> String

      +

      PrefixLength, DocFreq, FreqDelta, ProxDelta, SkipDelta
      +--> VInt

      +

      This file is sorted by Term. Terms are ordered first lexicographically (by +UTF16 character code) by the term's field name, and within that +lexicographically (by UTF16 character code) by the term's text.

      +

      TIVersion names the version of the format of this file and is equal to +TermInfosWriter.FORMAT_CURRENT.

      +

      Term text prefixes are shared. The PrefixLength is the number of initial +characters from the previous term which must be pre-pended to a term's suffix +in order to form the term's text. Thus, if the previous term's text was "bone" +and the term is "boy", the PrefixLength is two and the suffix is "y".

      +

      FieldNumber determines the term's field, whose name is stored in the .fdt +file.

      +

      DocFreq is the count of documents which contain the term.

      +

      FreqDelta determines the position of this term's TermFreqs within the .frq +file. In particular, it is the difference between the position of this term's +data in that file and the position of the previous term's data (or zero, for +the first term in the file).

      +

      ProxDelta determines the position of this term's TermPositions within the +.prx file. In particular, it is the difference between the position of this +term's data in that file and the position of the previous term's data (or zero, +for the first term in the file. For fields that omit position data, this will +be 0 since prox information is not stored.

      +

      SkipDelta determines the position of this term's SkipData within the .frq +file. In particular, it is the number of bytes after TermFreqs that the +SkipData starts. In other words, it is the length of the TermFreq data. +SkipDelta is only stored if DocFreq is not smaller than SkipInterval.

      +
    2. +
    3. +

      The term info index, or .tii file.

      +

      This contains every IndexInterval th entry from the .tis file, +along with its location in the "tis" file. This is designed to be read entirely +into memory and used to provide random access to the "tis" file.

      +

      The structure of this file is very similar to the .tis file, with the +addition of one item per record, the IndexDelta.

      +

      TermInfoIndex (.tii)--> TIVersion, IndexTermCount, IndexInterval, +SkipInterval, MaxSkipLevels, TermIndices

      +

      TIVersion --> UInt32

      +

      IndexTermCount --> UInt64

      +

      IndexInterval --> UInt32

      +

      SkipInterval --> UInt32

      +

      TermIndices --> <TermInfo, IndexDelta> +IndexTermCount

      +

      IndexDelta --> VLong

      +

      IndexDelta determines the position of this term's TermInfo within the .tis +file. In particular, it is the difference between the position of this term's +entry in that file and the position of the previous term's entry.

      +

      SkipInterval is the fraction of TermDocs stored in skip tables. It is used +to accelerate TermDocs.skipTo(int). Larger values result in smaller indexes, +greater acceleration, but fewer accelerable cases, while smaller values result +in bigger indexes, less acceleration (in case of a small value for +MaxSkipLevels) and more accelerable cases.

      +

      MaxSkipLevels is the max. number of skip levels stored for each term in the +.frq file. A low value results in smaller indexes but less acceleration, a +larger value results in slighly larger indexes but greater acceleration. See +format of .frq file for more information about skip levels.

      +
    4. +
    + +

    Frequencies

    +

    The .frq file contains the lists of documents which contain each term, along +with the frequency of the term in that document (except when frequencies are +omitted: IndexOptions.DOCS_ONLY).

    +

    FreqFile (.frq) --> <TermFreqs, SkipData> TermCount

    +

    TermFreqs --> <TermFreq> DocFreq

    +

    TermFreq --> DocDelta[, Freq?]

    +

    SkipData --> <<SkipLevelLength, SkipLevel> +NumSkipLevels-1, SkipLevel> <SkipDatum>

    +

    SkipLevel --> <SkipDatum> DocFreq/(SkipInterval^(Level + +1))

    +

    SkipDatum --> +DocSkip,PayloadLength?,FreqSkip,ProxSkip,SkipChildLevelPointer?

    +

    DocDelta,Freq,DocSkip,PayloadLength,FreqSkip,ProxSkip --> VInt

    +

    SkipChildLevelPointer --> VLong

    +

    TermFreqs are ordered by term (the term is implicit, from the .tis +file).

    +

    TermFreq entries are ordered by increasing document number.

    +

    DocDelta: if frequencies are indexed, this determines both the document +number and the frequency. In particular, DocDelta/2 is the difference between +this document number and the previous document number (or zero when this is the +first document in a TermFreqs). When DocDelta is odd, the frequency is one. +When DocDelta is even, the frequency is read as another VInt. If frequencies +are omitted, DocDelta contains the gap (not multiplied by 2) between document +numbers and no frequency information is stored.

    +

    For example, the TermFreqs for a term which occurs once in document seven +and three times in document eleven, with frequencies indexed, would be the +following sequence of VInts:

    +

    15, 8, 3

    +

    If frequencies were omitted (IndexOptions.DOCS_ONLY) it would be this +sequence of VInts instead:

    +

    7,4

    +

    DocSkip records the document number before every SkipInterval th +document in TermFreqs. If payloads are disabled for the term's field, then +DocSkip represents the difference from the previous value in the sequence. If +payloads are enabled for the term's field, then DocSkip/2 represents the +difference from the previous value in the sequence. If payloads are enabled and +DocSkip is odd, then PayloadLength is stored indicating the length of the last +payload before the SkipIntervalth document in TermPositions. +FreqSkip and ProxSkip record the position of every SkipInterval th +entry in FreqFile and ProxFile, respectively. File positions are relative to +the start of TermFreqs and Positions, to the previous SkipDatum in the +sequence.

    +

    For example, if DocFreq=35 and SkipInterval=16, then there are two SkipData +entries, containing the 15 th and 31 st document numbers +in TermFreqs. The first FreqSkip names the number of bytes after the beginning +of TermFreqs that the 16 th SkipDatum starts, and the second the +number of bytes after that that the 32 nd starts. The first ProxSkip +names the number of bytes after the beginning of Positions that the 16 +th SkipDatum starts, and the second the number of bytes after that +that the 32 nd starts.

    +

    Each term can have multiple skip levels. The amount of skip levels for a +term is NumSkipLevels = Min(MaxSkipLevels, +floor(log(DocFreq/log(SkipInterval)))). The number of SkipData entries for a +skip level is DocFreq/(SkipInterval^(Level + 1)), whereas the lowest skip level +is Level=0.
    +Example: SkipInterval = 4, MaxSkipLevels = 2, DocFreq = 35. Then skip level 0 +has 8 SkipData entries, containing the 3rd, 7th, +11th, 15th, 19th, 23rd, +27th, and 31st document numbers in TermFreqs. Skip level +1 has 2 SkipData entries, containing the 15th and 31st +document numbers in TermFreqs.
    +The SkipData entries on all upper levels > 0 contain a SkipChildLevelPointer +referencing the corresponding SkipData entry in level-1. In the example has +entry 15 on level 1 a pointer to entry 15 on level 0 and entry 31 on level 1 a +pointer to entry 31 on level 0.

    + +

    Positions

    +

    The .prx file contains the lists of positions that each term occurs at +within documents. Note that fields omitting positional data do not store +anything into this file, and if all fields in the index omit positional data +then the .prx file will not exist.

    +

    ProxFile (.prx) --> <TermPositions> TermCount

    +

    TermPositions --> <Positions> DocFreq

    +

    Positions --> <PositionDelta,Payload?> Freq

    +

    Payload --> <PayloadLength?,PayloadData>

    +

    PositionDelta --> VInt

    +

    PayloadLength --> VInt

    +

    PayloadData --> bytePayloadLength

    +

    TermPositions are ordered by term (the term is implicit, from the .tis +file).

    +

    Positions entries are ordered by increasing document number (the document +number is implicit from the .frq file).

    +

    PositionDelta is, if payloads are disabled for the term's field, the +difference between the position of the current occurrence in the document and +the previous occurrence (or zero, if this is the first occurrence in this +document). If payloads are enabled for the term's field, then PositionDelta/2 +is the difference between the current and the previous position. If payloads +are enabled and PositionDelta is odd, then PayloadLength is stored, indicating +the length of the payload at the current term position.

    +

    For example, the TermPositions for a term which occurs as the fourth term in +one document, and as the fifth and ninth term in a subsequent document, would +be the following sequence of VInts (payloads disabled):

    +

    4, 5, 4

    +

    PayloadData is metadata associated with the current term position. If +PayloadLength is stored at the current position, then it indicates the length +of this Payload. If PayloadLength is not stored, then this Payload has the same +length as the Payload at the previous position.

    + +

    Normalization Factors

    +

    There's a single .nrm file containing all norms:

    +

    AllNorms (.nrm) --> NormsHeader,<Norms> +NumFieldsWithNorms

    +

    Norms --> <Byte> SegSize

    +

    NormsHeader --> 'N','R','M',Version

    +

    Version --> Byte

    +

    NormsHeader has 4 bytes, last of which is the format version for this file, +currently -1.

    +

    Each byte encodes a floating point value. Bits 0-2 contain the 3-bit +mantissa, and bits 3-8 contain the 5-bit exponent.

    +

    These are converted to an IEEE single float value as follows:

    +
      +
    1. +

      If the byte is zero, use a zero float.

      +
    2. +
    3. +

      Otherwise, set the sign bit of the float to zero;

      +
    4. +
    5. +

      add 48 to the exponent and use this as the float's exponent;

      +
    6. +
    7. +

      map the mantissa to the high-order 3 bits of the float's mantissa; and

      +
    8. +
    9. +

      set the low-order 21 bits of the float's mantissa to zero.

      +
    10. +
    +

    A separate norm file is created when the norm values of an existing segment +are modified. When field N is modified, a separate norm file +.sN is created, to maintain the norm values for that field.

    +

    Separate norm files are created (when adequate) for both compound and non +compound segments.

    + +

    Term Vectors

    +

    Term Vector support is an optional on a field by field basis. It consists of +3 files.

    +
      +
    1. +

      The Document Index or .tvx file.

      +

      For each document, this stores the offset into the document data (.tvd) and +field data (.tvf) files.

      +

      DocumentIndex (.tvx) --> TVXVersion<DocumentPosition,FieldPosition> +NumDocs

      +

      TVXVersion --> Int (TermVectorsReader.CURRENT)

      +

      DocumentPosition --> UInt64 (offset in the .tvd file)

      +

      FieldPosition --> UInt64 (offset in the .tvf file)

      +
    2. +
    3. +

      The Document or .tvd file.

      +

      This contains, for each document, the number of fields, a list of the fields +with term vector info and finally a list of pointers to the field information +in the .tvf (Term Vector Fields) file.

      +

      Document (.tvd) --> TVDVersion<NumFields, FieldNums, +FieldPositions> NumDocs

      +

      TVDVersion --> Int (TermVectorsReader.FORMAT_CURRENT)

      +

      NumFields --> VInt

      +

      FieldNums --> <FieldNumDelta> NumFields

      +

      FieldNumDelta --> VInt

      +

      FieldPositions --> <FieldPositionDelta> NumFields-1

      +

      FieldPositionDelta --> VLong

      +

      The .tvd file is used to map out the fields that have term vectors stored +and where the field information is in the .tvf file.

      +
    4. +
    5. +

      The Field or .tvf file.

      +

      This file contains, for each field that has a term vector stored, a list of +the terms, their frequencies and, optionally, position and offest +information.

      +

      Field (.tvf) --> TVFVersion<NumTerms, Position/Offset, TermFreqs> +NumFields

      +

      TVFVersion --> Int (TermVectorsReader.FORMAT_CURRENT)

      +

      NumTerms --> VInt

      +

      Position/Offset --> Byte

      +

      TermFreqs --> <TermText, TermFreq, Positions?, Offsets?> +NumTerms

      +

      TermText --> <PrefixLength, Suffix>

      +

      PrefixLength --> VInt

      +

      Suffix --> String

      +

      TermFreq --> VInt

      +

      Positions --> <VInt>TermFreq

      +

      Offsets --> <VInt, VInt>TermFreq

      +
      +

      Notes:

      +
        +
      • Position/Offset byte stores whether this term vector has position or offset +information stored.
      • +
      • Term text prefixes are shared. The PrefixLength is the number of initial +characters from the previous term which must be pre-pended to a term's suffix +in order to form the term's text. Thus, if the previous term's text was "bone" +and the term is "boy", the PrefixLength is two and the suffix is "y".
      • +
      • Positions are stored as delta encoded VInts. This means we only store the +difference of the current position from the last position
      • +
      • Offsets are stored as delta encoded VInts. The first VInt is the +startOffset, the second is the endOffset.
      • +
      +
    6. +
    + +

    Deleted Documents

    +

    The .del file is optional, and only exists when a segment contains +deletions.

    +

    Although per-segment, this file is maintained exterior to compound segment +files.

    +

    Deletions (.del) --> [Format],ByteCount,BitCount, Bits | DGaps (depending +on Format)

    +

    Format,ByteSize,BitCount --> Uint32

    +

    Bits --> <Byte> ByteCount

    +

    DGaps --> <DGap,NonzeroByte> NonzeroBytesCount

    +

    DGap --> VInt

    +

    NonzeroByte --> Byte

    +

    Format is Optional. -1 indicates DGaps. Non-negative value indicates Bits, +and that Format is excluded.

    +

    ByteCount indicates the number of bytes in Bits. It is typically +(SegSize/8)+1.

    +

    BitCount indicates the number of bits that are currently set in Bits.

    +

    Bits contains one bit for each document indexed. When the bit corresponding +to a document number is set, that document is marked as deleted. Bit ordering +is from least to most significant. Thus, if Bits contains two bytes, 0x00 and +0x02, then document 9 is marked as deleted.

    +

    DGaps represents sparse bit-vectors more efficiently than Bits. It is made +of DGaps on indexes of nonzero bytes in Bits, and the nonzero bytes themselves. +The number of nonzero bytes in Bits (NonzeroBytesCount) is not stored.

    +

    For example, if there are 8000 bits and only bits 10,12,32 are set, DGaps +would be used:

    +

    (VInt) 1 , (byte) 20 , (VInt) 3 , (Byte) 1

    +
    + +

    Limitations

    +
    +

    When referring to term numbers, Lucene's current implementation uses a Java +int to hold the term index, which means the +maximum number of unique terms in any single index segment is ~2.1 billion +times the term index interval (default 128) = ~274 billion. This is technically +not a limitation of the index file format, just of Lucene's current +implementation.

    +

    Similarly, Lucene uses a Java int to refer to +document numbers, and the index file format uses an Int32 on-disk to store document numbers. This is a limitation +of both the index file format and the current implementation. Eventually these +should be replaced with either UInt64 values, or +better yet, VInt values which have no limit.

    +
    + + diff --git a/lucene/site/html/lucene_green_300.gif b/lucene/site/html/lucene_green_300.gif new file mode 100644 index 0000000000000000000000000000000000000000..f3778ba27f4c3735bec7030f9402201868bde609 GIT binary patch literal 2231 zcmbu4`#;kQ1INGHe7Emhx7jelcWxmq9Q6|CGGe(bDUxbqbaE?NC3L}PxeUvF!&>Ni zbRjt|5o45a+@?^;EtfixbR*TCr{`aI-amYPe1Bf=?e28@twB}@D)0pOiK@CP4u>PJ z(}rQ#)Y90>%F5c>+Qxpz-eCb|ZUf$l`e!;s~EEb#14(6~TBO{{{!Z{qy znat?K#6&Kan_A2j2n2aIG9?nprCQ;w_RDwf+^HYD)7;$LK5@Udw|8i0=;h0oQ&Urm zi;JH>e^w|I|NH;HhO(-J1prIH>Zj#r6M$Ao^Eu|KSo`)X#~(8U&SK9)cL9I>>(^qs z7f!cKRK+ow9i818AxMrY529-I{`%NICA$GNn+oweh|u1Sm+EK-AMS z5(AYl4p@!gVaeI-ik^_LYRgShwKe<-+K zzS)}GqE<`|!7_hITDmRd@h!&mRYYk=hK`IUTJ|V35UrG#R!7r$XdhJo z9F|_)*Gz9*+4&sl^LBQlbOhxw%M_MKoRWWItu5<}_p&^(M+LIPd^igMY#Ec^G(@^m z3%)E(%R)OMV8FA12H>ii72_x*lQU?r(`2vs)oP?jHVDFD^REf=g z?ObE>VL=POVzvXLSHCYpNqe+QF5?Dl z1j{Szi0dcS5?)8--==E4m>ju%AfMgibwc&K?Xdvg$*F&K%gW`ZXLhNjJVCk1Z}->x z&%Pn2GdG7{?()WRYwN|jof|&#tAwbdtoX+cOufN%FNLCEAIo1lOpXvJ##Cp_S`coz zOX#nHt`&{<{HgSDkGDs_ukor6X{%Gn5rATTIUqaz5d%&Frg-V6D6dr~Eut#SI-l|iMh+pv!{?uh& z&wP8H@8Z3!`P)1=v_po9MRT*$x9B&)3r<)55_R+pp> z&JE|+u2PQzHz*c>HTgppMX+M6p|1#{hf7lm5}Wj5UWRFI2tcL{T&+GE_kiS2o~a+G$`?id%2+Lj~dX07$J9a)*ju;Y#Gx(}9iu)^BX z*w8+7X|1|Hl%C1#e+A&TD#i0@f1DHN&U!Pu!)}&+?1OdHHk9p zp1vI%Lu5sgWS_FTFe(nD*m(04x9_u6#}Vuer%Ytd&p!`T^%UspL(h?I(TKt=0w^ml z9o>WncE2$ulZag^y531S6 zHfFuy(cVucdARscdnk(Vz&N!WQBj_~R^FIT}$Zo@2~8JU`W| V1plI`WLxLBHi}2+dgB1V@jq|qwUz(? literal 0 HcmV?d00001 diff --git a/lucene/site/build/site/scoring.html b/lucene/site/html/scoring.html similarity index 53% rename from lucene/site/build/site/scoring.html rename to lucene/site/html/scoring.html index 15c8ee94469..4bfeb72f377 100644 --- a/lucene/site/build/site/scoring.html +++ b/lucene/site/html/scoring.html @@ -1,235 +1,10 @@ - - - - - - Apache Lucene - Scoring - - - - - - - +Apache Lucene - Scoring - - -
    - - - -
    - - - - - - - - - - - - -
    -
    -
    -
    - -
    - - -
    - -
    - -   -
    - - - - - -
    -

    - Apache Lucene - Scoring -

    + +

    Apache Lucene - Scoring

    • @@ -297,10 +72,10 @@ document.write("Last Published: " + document.lastModified); Lucene Wiki IR references.

      The rest of this document will cover Scoring basics and how to change your - Similarity. Next it will cover ways you can + Similarity. Next it will cover ways you can customize the Lucene internals in Changing your Scoring -- Expert Level which gives details on implementing your own - Query class and related functionality. Finally, we + Query class and related functionality. Finally, we will finish up with some reference material in the Appendix.

    @@ -314,21 +89,21 @@ document.write("Last Published: " + document.lastModified); and the Lucene file formats before continuing on with this section.) It is also assumed that readers know how to use the - Searcher.explain(Query query, int doc) functionality, + Searcher.explain(Query query, int doc) functionality, which can go a long way in informing why a score is returned.

    Fields and Documents

    In Lucene, the objects we are scoring are - Documents. A Document is a collection + Documents. A Document is a collection of - Fields. Each Field has semantics about how + Fields. Each Field has semantics about how it is created and stored (i.e. tokenized, untokenized, raw data, compressed, etc.) It is important to note that Lucene scoring works on Fields and then combines the results to return Documents. This is important because two Documents with the exact same content, but one having the content in two Fields and the other in one Field will return different scores for the same query due to length normalization (assumming the - DefaultSimilarity + DefaultSimilarity on the Fields).

    @@ -339,21 +114,21 @@ document.write("Last Published: " + document.lastModified);
  • Document level boosting - while indexing - by calling - document.setBoost() + document.setBoost() before a document is added to the index.
  • Document's Field level boosting - while indexing - by calling - field.setBoost() + field.setBoost() before adding a field to the document (and before adding the document to the index).
  • Query level boosting - during search, by setting a boost on a query clause, calling - Query.setBoost(). + Query.setBoost().
@@ -374,52 +149,52 @@ document.write("Last Published: " + document.lastModified);

This composition of 1-byte representation of norms (that is, indexing time multiplication of field boosts & doc boost & field-length-norm) is nicely described in - Fieldable.setBoost(). + Fieldable.setBoost().

Encoding and decoding of the resulted float norm in a single byte are done by the static methods of the class Similarity: - encodeNorm() and - decodeNorm(). + encodeNorm() and + decodeNorm(). Due to loss of precision, it is not guaranteed that decode(encode(x)) = x, e.g. decode(encode(0.89)) = 0.75. At scoring (search) time, this norm is brought into the score of document as norm(t, d), as shown by the formula in - Similarity. + Similarity.

Understanding the Scoring Formula

This scoring formula is described in the - Similarity class. Please take the time to study this formula, as it contains much of the information about how the + Similarity class. Please take the time to study this formula, as it contains much of the information about how the basics of Lucene scoring work, especially the - TermQuery. + TermQuery.

The Big Picture

OK, so the tf-idf formula and the - Similarity + Similarity is great for understanding the basics of Lucene scoring, but what really drives Lucene scoring are the use and interactions between the - Query classes, as created by each application in + Query classes, as created by each application in response to a user's information need.

-

In this regard, Lucene offers a wide variety of Query implementations, most of which are in the - org.apache.lucene.search package. +

In this regard, Lucene offers a wide variety of Query implementations, most of which are in the + org.apache.lucene.search package. These implementations can be combined in a wide variety of ways to provide complex querying capabilities along with information about where matches took place in the document collection. The Query section below highlights some of the more important Query classes. For information on the other ones, see the - package summary. For details on implementing + package summary. For details on implementing your own Query class, see Changing your Scoring -- Expert Level below.

Once a Query has been created and submitted to the - IndexSearcher, the scoring process + IndexSearcher, the scoring process begins. (See the Appendix Algorithm section for more notes on the process.) After some infrastructure setup, - control finally passes to the Weight implementation and its - Scorer instance. In the case of any type of - BooleanQuery, scoring is handled by the + control finally passes to the Weight implementation and its + Scorer instance. In the case of any type of + BooleanQuery, scoring is handled by the BooleanWeight2 (link goes to ViewVC BooleanQuery java code which contains the BooleanWeight2 inner class) or BooleanWeight @@ -429,7 +204,7 @@ document.write("Last Published: " + document.lastModified); Assuming the use of the BooleanWeight2, a BooleanScorer2 is created by bringing together all of the - Scorers from the sub-clauses of the BooleanQuery. + Scorers from the sub-clauses of the BooleanQuery. When the BooleanScorer2 is asked to score it delegates its work to an internal Scorer based on the type of clauses in the Query. This internal Scorer essentially loops over the sub scorers and sums the scores provided by each scorer while factoring in the coord() score. @@ -438,14 +213,14 @@ document.write("Last Published: " + document.lastModified);

Query Classes

For information on the Query Classes, refer to the - search package javadocs + search package javadocs

Changing Similarity

One of the ways of changing the scoring characteristics of Lucene is to change the similarity factors. For information on how to do this, see the - search package javadocs + search package javadocs

@@ -454,7 +229,7 @@ document.write("Last Published: " + document.lastModified);

At a much deeper level, one can affect scoring by implementing their own Query classes (and related scoring classes.) To learn more about how to do this, refer to the - search package javadocs + search package javadocs

@@ -468,19 +243,19 @@ document.write("Last Published: " + document.lastModified);

This section is mostly notes on stepping through the Scoring process and serves as fertilizer for the earlier sections.

In the typical search application, a - Query + Query is passed to the - Searcher + Searcher , beginning the scoring process.

Once inside the Searcher, a - Collector + Collector is used for the scoring and sorting of the search results. These important objects are involved in a search:

  1. The - Weight + Weight object of the Query. The Weight object is an internal representation of the Query that allows the Query to be reused by the Searcher.
  2. @@ -488,12 +263,12 @@ document.write("Last Published: " + document.lastModified);
  3. The Searcher that initiated the call.
  4. A - Filter + Filter for limiting the result set. Note, the Filter may be null.
  5. A - Sort + Sort object for specifying how to sort the results if the standard score based sort method is not desired.
  6. @@ -504,44 +279,44 @@ document.write("Last Published: " + document.lastModified);

    Assuming we are not sorting (since sorting doesn't effect the raw Lucene score), we call one of the search methods of the Searcher, passing in the - Weight + Weight object created by Searcher.createWeight(Query), - Filter + Filter and the number of results we want. This method returns a - TopDocs + TopDocs object, which is an internal collection of search results. The Searcher creates a - TopScoreDocCollector + TopScoreDocCollector and passes it along with the Weight, Filter to another expert search method (for more on the - Collector + Collector mechanism, see - Searcher + Searcher .) The TopDocCollector uses a - PriorityQueue + PriorityQueue to collect the top results for the search.

    If a Filter is being used, some initial setup is done to determine which docs to include. Otherwise, we ask the Weight for a - Scorer + Scorer for the - IndexReader + IndexReader of the current searcher and we proceed by calling the score method on the - Scorer + Scorer .

    At last, we are actually going to score some documents. The score method takes in the Collector (most likely the TopScoreDocCollector or TopFieldCollector) and does its business. Of course, here is where things get involved. The - Scorer + Scorer that is returned by the - Weight + Weight object depends on what type of Query was submitted. In most real world applications with multiple query terms, the - Scorer + Scorer is going to be a BooleanScorer2 (see the section on customizing your scoring for info on changing this.) @@ -558,42 +333,6 @@ document.write("Last Published: " + document.lastModified); your internal Scorer is most likely a DisjunctionSumScorer, which essentially combines the scorers from the sub scorers of the OR'd terms.

    - - - -
     
    - - - diff --git a/lucene/site/src/documentation/classes/CatalogManager.properties b/lucene/site/src/documentation/classes/CatalogManager.properties deleted file mode 100755 index af7b5ab3235..00000000000 --- a/lucene/site/src/documentation/classes/CatalogManager.properties +++ /dev/null @@ -1,57 +0,0 @@ -# Copyright 2002-2005 The Apache Software Foundation or its licensors, -# as applicable. -# -# Licensed 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. - -#======================================================================= -# CatalogManager.properties for Catalog Entity Resolver. -# -# This is the default properties file for your project. -# This facilitates local configuration of application-specific catalogs. -# If you have defined any local catalogs, then they will be loaded -# before Forrest's core catalogs. -# -# See the Apache Forrest documentation: -# http://forrest.apache.org/docs/your-project.html -# http://forrest.apache.org/docs/validation.html - -# verbosity: -# The level of messages for status/debug (messages go to standard output). -# The setting here is for your own local catalogs. -# The verbosity of Forrest's core catalogs is controlled via -# main/webapp/WEB-INF/cocoon.xconf -# -# The following messages are provided ... -# 0 = none -# 1 = ? (... not sure yet) -# 2 = 1+, Loading catalog, Resolved public, Resolved system -# 3 = 2+, Catalog does not exist, resolvePublic, resolveSystem -# 10 = 3+, List all catalog entries when loading a catalog -# (Cocoon also logs the "Resolved public" messages.) -verbosity=1 - -# catalogs ... list of additional catalogs to load -# (Note that Apache Forrest will automatically load its own default catalog -# from main/webapp/resources/schema/catalog.xcat) -# Use either full pathnames or relative pathnames. -# pathname separator is always semi-colon (;) regardless of operating system -# directory separator is always slash (/) regardless of operating system -catalogs=../resources/schema/catalog.xcat - -# relative-catalogs -# If false, relative catalog URIs are made absolute with respect to the -# base URI of the CatalogManager.properties file. This setting only -# applies to catalog URIs obtained from the catalogs property in the -# CatalogManager.properties file -# Example: relative-catalogs=[yes|no] -relative-catalogs=no diff --git a/lucene/site/src/documentation/conf/cli.xconf b/lucene/site/src/documentation/conf/cli.xconf deleted file mode 100644 index 86a80132ba5..00000000000 --- a/lucene/site/src/documentation/conf/cli.xconf +++ /dev/null @@ -1,322 +0,0 @@ - - - - - - - - . - WEB-INF/cocoon.xconf - ../tmp/cocoon-work - ../site - - - - - - - - - - - - - - - index.html - - - - - - - */* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/content/.htaccess b/lucene/site/src/documentation/content/.htaccess deleted file mode 100644 index f1650fa44a6..00000000000 --- a/lucene/site/src/documentation/content/.htaccess +++ /dev/null @@ -1,3 +0,0 @@ -#Forrest generates UTF-8 by default, but these httpd servers are -#ignoring the meta http-equiv charset tags -AddDefaultCharset off diff --git a/lucene/site/src/documentation/content/xdocs/contributions.xml b/lucene/site/src/documentation/content/xdocs/contributions.xml deleted file mode 100644 index 697e969c46a..00000000000 --- a/lucene/site/src/documentation/content/xdocs/contributions.xml +++ /dev/null @@ -1,350 +0,0 @@ - - -
    - - Apache Lucene - Contributions - -
    - - - Peter Carlson - - - -
    - Overview -

    This page lists external Lucene resources. If you have - written something that should be included, please post all - relevant information to one of the mailing lists. Nothing - listed here is directly supported by the Lucene - developers, so if you encounter any problems with any of - this software, please use the author's contact information - to get help.

    -

    If you are looking for information on contributing patches or other improvements to Lucene, see - How To Contribute on the Lucene Wiki.

    -
    - -
    - Lucene Tools -

    - Software that works with Lucene indices. -

    -
    Luke - - - - - - - - - -
    - URL - - - http://www.getopt.org/luke/ - -
    - author - - Andrzej Bialecki -
    -
    -
    - LIMO (Lucene Index Monitor) - - - - - - - - - -
    - URL - - - http://limo.sf.net/ - -
    - author - - Julien Nioche -
    -
    -
    - -
    - Lucene Document Converters -

    - Lucene requires information you want to index to be - converted into a Document class. Here are - contributions for various solutions that convert different - content types to Lucene's Document classes. -

    -
    - XML Document #1 - - - - - - - - - -
    - URL - - - http://marc.theaimsgroup.com/?l=lucene-dev&m=100723333506246&w=2 - -
    - author - - Philip Ogren - ogren@mayo.edu -
    -
    -
    - XML Document #2 - - - - - - - - - -
    - URL - - - http://www.mail-archive.com/lucene-user@jakarta.apache.org/msg00346.html - -
    - author - - Peter Carlson - carlson@bookandhammer.com -
    -
    -
    - PDF Box - - - - - - - - - -
    - URL - - - http://www.pdfbox.org/ - -
    - author - - Ben Litchfield - ben@csh.rit.edu -
    -
    -
    - XPDF - PDF Document Conversion - - - - - - - - - -
    - URL - - - http://www.foolabs.com/xpdf - -
    - author - - N/A -
    -
    -
    - PDFTextStream -- PDF text and metadata extraction - - - - - - - - - -
    - URL - - - http://snowtide.com - -
    - author - - N/A -
    -
    -
    - PJ Classic & PJ Professional - PDF Document Conversion - - - - - - - - - -
    - URL - - - http://www.etymon.com/ - -
    - author - - N/A -
    -
    -
    - -
    - Miscellaneous -

    -

    -
    - Arabic Analyzer for Java - - - - - - - - - -
    - URL - - - http://savannah.nongnu.org/projects/aramorph - -
    - author - - Pierrick Brihaye -
    -
    -
    - Phonetix - - - - - - - - - -
    - URL - - - http://www.companywebstore.de/tangentum/mirror/en/products/phonetix/index.html - -
    - author - - tangentum technologies -
    -
    -
    - ejIndex - JBoss MBean for Lucene -

    -

    - - - - - - - - - -
    - URL - - - http://ejindex.sourceforge.net/ - -
    - author - - Andy Scholz -
    -
    -
    - JavaCC - - - - - - - - - -
    - URL - - - https://javacc.dev.java.net/ - -
    - author - - Sun Microsystems (java.net) -
    -
    -
    - LuSQL - Index databases with Lucene - - - - - - - - - -
    - URL - - - http://lab.cisti-icist.nrc-cnrc.gc.ca/cistilabswiki/index.php/LuSql - -
    - author - - Glen Newton -
    -
    -
    - -
    diff --git a/lucene/site/src/documentation/content/xdocs/demo.xml b/lucene/site/src/documentation/content/xdocs/demo.xml deleted file mode 100644 index df447e78a4c..00000000000 --- a/lucene/site/src/documentation/content/xdocs/demo.xml +++ /dev/null @@ -1,79 +0,0 @@ - - -
    - - Apache Lucene - Building and Installing the Basic Demo - -
    - -Andrew C. Oliver - - - -
    About this Document -

    -This document is intended as a "getting started" guide to using and running the Lucene demos. -It walks you through some basic installation and configuration. -

    -
    - - -
    About the Demo -

    -The Lucene command-line demo code consists of an application that demonstrates various -functionalities of Lucene and how you can add Lucene to your applications. -

    -
    - -
    Setting your CLASSPATH -

    -First, you should download the -latest Lucene distribution and then extract it to a working directory. -

    -

    -You need three JARs: the Lucene JAR, the common analysis JAR, and the Lucene demo JAR. You should -see the Lucene JAR file in the core/ directory you created when you extracted the archive -- it -should be named something like lucene-core-{version}.jar. You should also see files -called lucene-analyzers-common-{version}.jar and lucene-demo-{version}.jar -under analysis/common/ and demo/, respectively. -

    -

    -Put all three of these files in your Java CLASSPATH. -

    -
    - -
    Indexing Files -

    -Once you've gotten this far you're probably itching to go. Let's build an index! Assuming -you've set your CLASSPATH correctly, just type: - -

    -    java org.apache.lucene.demo.IndexFiles -docs {path-to-lucene}/src
    -
    - -This will produce a subdirectory called index which will contain an index of all of the -Lucene source code. -

    -

    -To search the index type: - -

    -    java org.apache.lucene.demo.SearchFiles
    -
    - -You'll be prompted for a query. Type in a swear word and press the enter key. You'll see that the -Lucene developers are very well mannered and get no results. Now try entering the word "string". -That should return a whole bunch of documents. The results will page at every tenth result and ask -you whether you want more results. -

    -
    - -
    About the code... -

    -read on>>> -

    -
    - - -
    - diff --git a/lucene/site/src/documentation/content/xdocs/demo2.xml b/lucene/site/src/documentation/content/xdocs/demo2.xml deleted file mode 100644 index db80b877609..00000000000 --- a/lucene/site/src/documentation/content/xdocs/demo2.xml +++ /dev/null @@ -1,154 +0,0 @@ - - -
    - - Apache Lucene - Basic Demo Sources Walk-through - -
    - -Andrew C. Oliver - - - -
    About the Code -

    -In this section we walk through the sources behind the command-line Lucene demo: where to find them, -their parts and their function. This section is intended for Java developers wishing to understand -how to use Lucene in their applications. -

    -
    - - -
    Location of the source - -

    -NOTE: to examine the sources, you need to download and extract a source checkout of -Lucene: (lucene-{version}-src.zip). -

    - -

    -Relative to the directory created when you extracted Lucene, you -should see a directory called lucene/demo/. This is the root for the Lucene -demo. Under this directory is src/java/org/apache/lucene/demo/. This is where all -the Java sources for the demo live. -

    - -

    -Within this directory you should see the IndexFiles.java class we executed earlier. -Bring it up in vi or your editor of choice and let's take a look at it. -

    - -
    - -
    IndexFiles - -

    -As we discussed in the previous walk-through, the IndexFiles class creates a Lucene -Index. Let's take a look at how it does this. -

    - -

    -The main() method parses the command-line parameters, then in preparation for -instantiating IndexWriter, opens a -Directory and instantiates -StandardAnalyzer and -IndexWriterConfig. -

    - -

    -The value of the -index command-line parameter is the name of the filesystem directory -where all index information should be stored. If IndexFiles is invoked with a -relative path given in the -index command-line parameter, or if the -index -command-line parameter is not given, causing the default relative index path "index" -to be used, the index path will be created as a subdirectory of the current working directory -(if it does not already exist). On some platforms, the index path may be created in a different -directory (such as the user's home directory). -

    - -

    -The -docs command-line parameter value is the location of the directory containing -files to be indexed. -

    - -

    -The -update command-line parameter tells IndexFiles not to delete the -index if it already exists. When -update is not given, IndexFiles will -first wipe the slate clean before indexing any documents. -

    - -

    -Lucene Directorys are used by the -IndexWriter to store information in the index. In addition to the -FSDirectory implementation we are using, -there are several other Directory subclasses that can write to RAM, to databases, etc. -

    - -

    -Lucene Analyzers are processing pipelines -that break up text into indexed tokens, a.k.a. terms, and optionally perform other operations on these -tokens, e.g. downcasing, synonym insertion, filtering out unwanted tokens, etc. The Analyzer -we are using is StandardAnalyzer, which creates tokens using the Word Break rules from the -Unicode Text Segmentation algorithm specified in Unicode -Standard Annex #29; converts tokens to lowercase; and then filters out stopwords. Stopwords are -common language words such as articles (a, an, the, etc.) and other tokens that may have less value for -searching. It should be noted that there are different rules for every language, and you should use the -proper analyzer for each. Lucene currently provides Analyzers for a number of different languages (see -the javadocs under -lucene/analysis/common/src/java/org/apache/lucene/analysis). -

    - -

    -The IndexWriterConfig instance holds all configuration for IndexWriter. For -example, we set the OpenMode to use here based on the value of the -update -command-line parameter. -

    - -

    -Looking further down in the file, after IndexWriter is instantiated, you should see the -indexDocs() code. This recursive function crawls the directories and creates -Document objects. The -Document is simply a data object to represent the text content from the file as well as -its creation time and location. These instances are added to the IndexWriter. If -the -update command-line parameter is given, the IndexWriter -OpenMode will be set to OpenMode.CREATE_OR_APPEND, and rather than -adding documents to the index, the IndexWriter will update them -in the index by attempting to find an already-indexed document with the same identifier (in our -case, the file path serves as the identifier); deleting it from the index if it exists; and then -adding the new document to the index. -

    - -
    - -
    Searching Files - -

    -The SearchFiles class is -quite simple. It primarily collaborates with an -IndexSearcher, -StandardAnalyzer (which is used in the -IndexFiles class as well) -and a QueryParser. The -query parser is constructed with an analyzer used to interpret your query text in the same way the -documents are interpreted: finding word boundaries, downcasing, and removing useless words like -'a', 'an' and 'the'. The Query -object contains the results from the -QueryParser which is passed -to the searcher. Note that it's also possible to programmatically construct a rich -Query object without using the query -parser. The query parser just enables decoding the Lucene query -syntax into the corresponding Query -object. -

    - -

    -SearchFiles uses the IndexSearcher.search(query,n) method that returns -TopDocs with max n hits. -The results are printed in pages, sorted by score (i.e. relevance). -

    -
    - -
    diff --git a/lucene/site/src/documentation/content/xdocs/fileformats.xml b/lucene/site/src/documentation/content/xdocs/fileformats.xml deleted file mode 100644 index 4525096fdfe..00000000000 --- a/lucene/site/src/documentation/content/xdocs/fileformats.xml +++ /dev/null @@ -1,1934 +0,0 @@ - - - -
    - - Apache Lucene - Index File Formats - -
    - - -
    Index File Formats - -

    - This document defines the index file formats used - in this version of Lucene. If you are using a different - version of Lucene, please consult the copy of - docs/fileformats.html - that was distributed - with the version you are using. -

    - -

    - Apache Lucene is written in Java, but several - efforts are underway to write - versions - of Lucene in other programming - languages. If these versions are to remain compatible with Apache - Lucene, then a language-independent definition of the Lucene index - format is required. This document thus attempts to provide a - complete and independent definition of the Apache Lucene file - formats. -

    - -

    - As Lucene evolves, this document should evolve. - Versions of Lucene in different programming languages should endeavor - to agree on file formats, and generate new versions of this document. -

    - -

    - Compatibility notes are provided in this document, - describing how file formats have changed from prior versions. -

    - -

    - In version 2.1, the file format was changed to allow - lock-less commits (ie, no more commit lock). The - change is fully backwards compatible: you can open a - pre-2.1 index for searching or adding/deleting of - docs. When the new segments file is saved - (committed), it will be written in the new file format - (meaning no specific "upgrade" process is needed). - But note that once a commit has occurred, pre-2.1 - Lucene will not be able to read the index. -

    - -

    - In version 2.3, the file format was changed to allow - segments to share a single set of doc store (vectors & - stored fields) files. This allows for faster indexing - in certain cases. The change is fully backwards - compatible (in the same way as the lock-less commits - change in 2.1). -

    - -

    - In version 2.4, Strings are now written as true UTF-8 - byte sequence, not Java's modified UTF-8. See issue - LUCENE-510 for details. -

    - -

    - In version 2.9, an optional opaque Map<String,String> - CommitUserData may be passed to IndexWriter's commit - methods (and later retrieved), which is recorded in - the segments_N file. See issue LUCENE-1382 for - details. Also, diagnostics were added to each segment - written recording details about why it was written - (due to flush, merge; which OS/JRE was used; etc.). - See issue LUCENE-1654 for details. -

    - -

    - In version 3.0, compressed fields are no longer - written to the index (they can still be read, but on - merge the new segment will write them, - uncompressed). See issue LUCENE-1960 for details. -

    - -

    - In version 3.1, segments records the code version - that created them. See LUCENE-2720 for details. - - Additionally segments track explicitly whether or - not they have term vectors. See LUCENE-2811 for details. -

    -

    - In version 3.2, numeric fields are written as natively - to stored fields file, previously they were stored in - text format only. -

    -

    - In version 3.4, fields can omit position data while - still indexing term frequencies. -

    -
    - -
    Definitions - -

    - The fundamental concepts in Lucene are index, - document, field and term. -

    - - -

    - An index contains a sequence of documents. -

    - -
      -
    • -

      - A document is a sequence of fields. -

      -
    • - -
    • -

      - A field is a named sequence of terms. -

      -
    • - -
    • - A term is a string. -
    • -
    - -

    - The same string in two different fields is - considered a different term. Thus terms are represented as a pair of - strings, the first naming the field, and the second naming text - within the field. -

    - -
    Inverted Indexing - -

    - The index stores statistics about terms in order - to make term-based search more efficient. Lucene's - index falls into the family of indexes known as an inverted - index. This is because it can list, for a term, the documents that contain - it. This is the inverse of the natural relationship, in which - documents list terms. -

    -
    -
    - Types of Fields -

    - In Lucene, fields may be stored, in which - case their text is stored in the index literally, in a non-inverted - manner. Fields that are inverted are called indexed. A field - may be both stored and indexed.

    - -

    The text of a field may be tokenized into terms to be - indexed, or the text of a field may be used literally as a term to be indexed. - Most fields are - tokenized, but sometimes it is useful for certain identifier fields - to be indexed literally. -

    -

    See the Field java docs for more information on Fields.

    -
    - -
    Segments - -

    - Lucene indexes may be composed of multiple sub-indexes, or - segments. Each segment is a fully independent index, which could be searched - separately. Indexes evolve by: -

    - -
      -
    1. -

      Creating new segments for newly added documents.

      -
    2. -
    3. -

      Merging existing segments.

      -
    4. -
    - -

    - Searches may involve multiple segments and/or multiple indexes, each - index potentially composed of a set of segments. -

    -
    - -
    Document Numbers - -

    - Internally, Lucene refers to documents by an integer document - number. The first document added to an index is numbered zero, and each - subsequent document added gets a number one greater than the previous. -

    - -

    -
    -

    - -

    - Note that a document's number may change, so caution should be taken - when storing these numbers outside of Lucene. In particular, numbers may - change in the following situations: -

    - - -
      -
    • -

      - The - numbers stored in each segment are unique only within the segment, - and must be converted before they can be used in a larger context. - The standard technique is to allocate each segment a range of - values, based on the range of numbers used in that segment. To - convert a document number from a segment to an external value, the - segment's base document - number is added. To convert an external value back to a - segment-specific value, the segment is identified by the range that - the external value is in, and the segment's base value is - subtracted. For example two five document segments might be - combined, so that the first segment has a base value of zero, and - the second of five. Document three from the second segment would - have an external value of eight. -

      -
    • -
    • -

      - When documents are deleted, gaps are created - in the numbering. These are eventually removed as the index evolves - through merging. Deleted documents are dropped when segments are - merged. A freshly-merged segment thus has no gaps in its numbering. -

      -
    • -
    - -
    - -
    - -
    Overview - -

    - Each segment index maintains the following: -

    -
      -
    • -

      Field names. This - contains the set of field names used in the index. - -

      -
    • -
    • -

      Stored Field - values. This contains, for each document, a list of attribute-value - pairs, where the attributes are field names. These are used to - store auxiliary information about the document, such as its title, - url, or an identifier to access a - database. The set of stored fields are what is returned for each hit - when searching. This is keyed by document number. -

      -
    • -
    • -

      Term dictionary. - A dictionary containing all of the terms used in all of the indexed - fields of all of the documents. The dictionary also contains the - number of documents which contain the term, and pointers to the - term's frequency and proximity data. -

      -
    • - -
    • -

      Term Frequency - data. For each term in the dictionary, the numbers of all the - documents that contain that term, and the frequency of the term in - that document, unless frequencies are omitted (IndexOptions.DOCS_ONLY) -

      -
    • - -
    • -

      Term Proximity - data. For each term in the dictionary, the positions that the term - occurs in each document. Note that this will - not exist if all fields in all documents omit position data. -

      -
    • - -
    • -

      Normalization - factors. For each field in each document, a value is stored that is - multiplied into the score for hits on that field. -

      -
    • -
    • -

      Term Vectors. For each field in each document, the term vector - (sometimes called document vector) may be stored. A term vector consists - of term text and term frequency. To add Term Vectors to your index see the - Field - constructors -

      -
    • -
    • -

      Deleted documents. - An optional file indicating which documents are deleted. -

      -
    • -
    - -

    Details on each of these are provided in subsequent sections. -

    -
    - -
    File Naming - -

    - All files belonging to a segment have the same name with varying - extensions. The extensions correspond to the different file formats - described below. When using the Compound File format (default in 1.4 and greater) these files are - collapsed into a single .cfs file (see below for details) -

    - -

    - Typically, all segments - in an index are stored in a single directory, although this is not - required. -

    - -

    - As of version 2.1 (lock-less commits), file names are - never re-used (there is one exception, "segments.gen", - see below). That is, when any file is saved to the - Directory it is given a never before used filename. - This is achieved using a simple generations approach. - For example, the first segments file is segments_1, - then segments_2, etc. The generation is a sequential - long integer represented in alpha-numeric (base 36) - form. -

    - -
    -
    Summary of File Extensions -

    The following table summarizes the names and extensions of the files in Lucene: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameExtensionBrief Description
    Segments Filesegments.gen, segments_NStores information about segments
    Lock Filewrite.lockThe Write lock prevents multiple IndexWriters from writing to the same file.
    Compound File.cfsAn optional "virtual" file consisting of all the other index files for systems - that frequently run out of file handles.
    Compound File Entry table.cfeThe "virtual" compound file's entry table holding all entries in the corresponding .cfs file (Since 3.4)
    Fields.fnmStores information about the fields
    Field Index.fdxContains pointers to field data
    Field Data.fdtThe stored fields for documents
    Term Infos.tisPart of the term dictionary, stores term info
    Term Info Index.tiiThe index into the Term Infos file
    Frequencies.frqContains the list of docs which contain each term along with frequency
    Positions.prxStores position information about where a term occurs in the index
    Norms.nrmEncodes length and boost factors for docs and fields
    Term Vector Index.tvxStores offset into the document data file
    Term Vector Documents.tvdContains information about each document that has term vectors
    Term Vector Fields.tvfThe field level info about term vectors
    Deleted Documents.delInfo about what files are deleted
    - -

    -
    - -
    Primitive Types - -
    Byte - -

    - The most primitive type - is an eight-bit byte. Files are accessed as sequences of bytes. All - other data types are defined as sequences - of bytes, so file formats are byte-order independent. -

    - -
    - -
    UInt32 - -

    - 32-bit unsigned integers are written as four - bytes, high-order bytes first. -

    -

    - UInt32 --> <Byte>4 -

    - -
    - -
    Uint64 - -

    - 64-bit unsigned integers are written as eight - bytes, high-order bytes first. -

    - -

    UInt64 --> <Byte>8 -

    - -
    - -
    VInt - -

    - A variable-length format for positive integers is - defined where the high-order bit of each byte indicates whether more - bytes remain to be read. The low-order seven bits are appended as - increasingly more significant bits in the resulting integer value. - Thus values from zero to 127 may be stored in a single byte, values - from 128 to 16,383 may be stored in two bytes, and so on. -

    - -

    - VInt Encoding Example -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    -

    - Value -

    -
    -

    - First byte -

    -
    -

    - Second byte -

    -
    -

    - Third byte -

    -
    -

    0 -

    -
    -

    - 00000000 -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    1 -

    -
    -

    - 00000001 -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    2 -

    -
    -

    - 00000010 -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    ... -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    127 -

    -
    -

    - 01111111 -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    128 -

    -
    -

    - 10000000 -

    -
    -

    - 00000001 -

    -
    -

    -
    - -

    -
    -

    129 -

    -
    -

    - 10000001 -

    -
    -

    - 00000001 -

    -
    -

    -
    - -

    -
    -

    130 -

    -
    -

    - 10000010 -

    -
    -

    - 00000001 -

    -
    -

    -
    - -

    -
    -

    ... -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    16,383 -

    -
    -

    - 11111111 -

    -
    -

    - 01111111 -

    -
    -

    -
    - -

    -
    -

    16,384 -

    -
    -

    - 10000000 -

    -
    -

    - 10000000 -

    -
    -

    - 00000001 -

    -
    -

    16,385 -

    -
    -

    - 10000001 -

    -
    -

    - 10000000 -

    -
    -

    - 00000001 -

    -
    -

    ... -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    -

    -
    - -

    -
    - -

    - This provides compression while still being - efficient to decode. -

    - -
    - -
    Chars - -

    - Lucene writes unicode - character sequences as UTF-8 encoded bytes. -

    - - -
    - -
    String - -

    - Lucene writes strings as UTF-8 encoded bytes. - First the length, in bytes, is written as a VInt, - followed by the bytes. -

    - -

    - String --> VInt, Chars -

    - -
    -
    - -
    Compound Types -
    Map<String,String> - -

    - In a couple places Lucene stores a Map - String->String. -

    - -

    - Map<String,String> --> Count<String,String>Count -

    - -
    - -
    - -
    Per-Index Files - -

    - The files in this section exist one-per-index. -

    - -
    Segments File - -

    - The active segments in the index are stored in the - segment info file, - segments_N. - There may - be one or more - segments_N - files in the - index; however, the one with the largest - generation is the active one (when older - segments_N files are present it's because they - temporarily cannot be deleted, or, a writer is in - the process of committing, or a custom - IndexDeletionPolicy - is in use). This file lists each - segment by name, has details about the separate - norms and deletion files, and also contains the - size of each segment. -

    - -

    - As of 2.1, there is also a file - segments.gen. - This file contains the - current generation (the - _N - in - segments_N) - of the index. This is - used only as a fallback in case the current - generation cannot be accurately determined by - directory listing alone (as is the case for some - NFS clients with time-based directory cache - expiraation). This file simply contains an Int32 - version header (SegmentInfos.FORMAT_LOCKLESS = - -2), followed by the generation recorded as Int64, - written twice. -

    -

    - 3.1 - Segments --> Format, Version, NameCounter, SegCount, <SegVersion, SegName, SegSize, DelGen, DocStoreOffset, [DocStoreSegment, DocStoreIsCompoundFile], HasSingleNormFile, NumField, - NormGenNumField, - IsCompoundFile, DeletionCount, HasProx, Diagnostics, HasVectors>SegCount, CommitUserData, Checksum -

    - -

    - Format, NameCounter, SegCount, SegSize, NumField, - DocStoreOffset, DeletionCount --> Int32 -

    - -

    - Version, DelGen, NormGen, Checksum --> Int64 -

    - -

    - SegVersion, SegName, DocStoreSegment --> String -

    - -

    - Diagnostics --> Map<String,String> -

    - -

    - IsCompoundFile, HasSingleNormFile, - DocStoreIsCompoundFile, HasProx, HasVectors --> Int8 -

    - -

    - CommitUserData --> Map<String,String> -

    - -

    - Format is -9 (SegmentInfos.FORMAT_DIAGNOSTICS). -

    - -

    - Version counts how often the index has been - changed by adding or deleting documents. -

    - -

    - NameCounter is used to generate names for new segment files. -

    - -

    - SegVersion is the code version that created the segment. -

    - -

    - SegName is the name of the segment, and is used as the file name prefix - for all of the files that compose the segment's index. -

    - -

    - SegSize is the number of documents contained in the segment index. -

    - -

    - DelGen is the generation count of the separate - deletes file. If this is -1, there are no - separate deletes. If it is 0, this is a pre-2.1 - segment and you must check filesystem for the - existence of _X.del. Anything above zero means - there are separate deletes (_X_N.del). -

    - -

    - NumField is the size of the array for NormGen, or - -1 if there are no NormGens stored. -

    - -

    - NormGen records the generation of the separate - norms files. If NumField is -1, there are no - normGens stored and they are all assumed to be 0 - when the segment file was written pre-2.1 and all - assumed to be -1 when the segments file is 2.1 or - above. The generation then has the same meaning - as delGen (above). -

    - -

    - IsCompoundFile records whether the segment is - written as a compound file or not. If this is -1, - the segment is not a compound file. If it is 1, - the segment is a compound file. Else it is 0, - which means we check filesystem to see if _X.cfs - exists. -

    - -

    - If HasSingleNormFile is 1, then the field norms are - written as a single joined file (with extension - .nrm); if it is 0 then each field's norms - are stored as separate .fN files. See - "Normalization Factors" below for details. -

    - -

    - DocStoreOffset, DocStoreSegment, - DocStoreIsCompoundFile: If DocStoreOffset is -1, - this segment has its own doc store (stored fields - values and term vectors) files and DocStoreSegment - and DocStoreIsCompoundFile are not stored. In - this case all files for stored field values - (*.fdt and *.fdx) and term - vectors (*.tvf, *.tvd and - *.tvx) will be stored with this segment. - Otherwise, DocStoreSegment is the name of the - segment that has the shared doc store files; - DocStoreIsCompoundFile is 1 if that segment is - stored in compound file format (as a .cfx - file); and DocStoreOffset is the starting document - in the shared doc store files where this segment's - documents begin. In this case, this segment does - not store its own doc store files but instead - shares a single set of these files with other - segments. -

    - -

    - Checksum contains the CRC32 checksum of all bytes - in the segments_N file up until the checksum. - This is used to verify integrity of the file on - opening the index. -

    - -

    - DeletionCount records the number of deleted - documents in this segment. -

    - -

    - HasProx is 1 if any fields in this segment have - position data (IndexOptions.DOCS_AND_FREQS_AND_POSITIONS); else, it's 0. -

    - -

    - CommitUserData stores an optional user-supplied - opaque Map<String,String> that was passed to - IndexWriter's commit or prepareCommit, or - IndexReader's flush methods. -

    -

    - The Diagnostics Map is privately written by - IndexWriter, as a debugging aid, for each segment - it creates. It includes metadata like the current - Lucene version, OS, Java version, why the segment - was created (merge, flush, addIndexes), etc. -

    - -

    HasVectors is 1 if this segment stores term vectors, - else it's 0. -

    - -
    - -
    Lock File - -

    - The write lock, which is stored in the index - directory by default, is named "write.lock". If - the lock directory is different from the index - directory then the write lock will be named - "XXXX-write.lock" where XXXX is a unique prefix - derived from the full path to the index directory. - When this file is present, a writer is currently - modifying the index (adding or removing - documents). This lock file ensures that only one - writer is modifying the index at a time. -

    -
    - -
    Deletable File - -

    - A writer dynamically computes - the files that are deletable, instead, so no file - is written. -

    - -
    - -
    Compound Files - -

    Starting with Lucene 1.4 the compound file format became default. This - is simply a container for all files described in the next section - (except for the .del file).

    -

    Compound Entry Table (.cfe) --> Version, FileCount, <FileName, DataOffset, DataLength> - FileCount -

    - -

    Compound (.cfs) --> FileData FileCount -

    - -

    Version --> Int

    - -

    FileCount --> VInt

    - -

    DataOffset --> Long

    - -

    DataLength --> Long

    - -

    FileName --> String

    - -

    FileData --> raw file data

    -

    The raw file data is the data from the individual files named above.

    - -

    Starting with Lucene 2.3, doc store files (stored - field values and term vectors) can be shared in a - single set of files for more than one segment. When - compound file is enabled, these shared files will be - added into a single compound file (same format as - above) but with the extension .cfx. -

    - -
    - -
    - -
    Per-Segment Files - -

    - The remaining files are all per-segment, and are - thus defined by suffix. -

    -
    Fields -

    -
    - Field Info -
    -

    - -

    - Field names are - stored in the field info file, with suffix .fnm. -

    -

    - FieldInfos - (.fnm) --> FNMVersion,FieldsCount, <FieldName, - FieldBits> - FieldsCount -

    - -

    - FNMVersion, FieldsCount --> VInt -

    - -

    - FieldName --> String -

    - -

    - FieldBits --> Byte -

    - -

    -

      -
    • - The low-order bit is one for - indexed fields, and zero for non-indexed fields. -
    • -
    • - The second lowest-order - bit is one for fields that have term vectors stored, and zero for fields - without term vectors. -
    • -
    • If the fifth lowest-order bit is set (0x10), norms are omitted for the indexed field.
    • -
    • If the sixth lowest-order bit is set (0x20), payloads are stored for the indexed field.
    • -
    • If the seventh lowest-order bit is set (0x40), term frequencies and positions omitted for the indexed field.
    • -
    • If the eighth lowest-order bit is set (0x80), positions are omitted for the indexed field.
    • -
    -

    - -

    - FNMVersion (added in 2.9) is -2 for indexes from 2.9 - 3.3. It is -3 for indexes in Lucene 3.4+ -

    - -

    - Fields are numbered by their order in this file. Thus field zero is - the - first field in the file, field one the next, and so on. Note that, - like document numbers, field numbers are segment relative. -

    - - - -

    -
    - Stored Fields -
    -

    - -

    - Stored fields are represented by two files: -

    - -
      -
    1. -

      - The field index, or .fdx file. -

      - -

      - This contains, for each document, a pointer to - its field data, as follows: -

      - -

      - FieldIndex - (.fdx) --> - <FieldValuesPosition> - SegSize -

      -

      FieldValuesPosition - --> Uint64 -

      -

      This - is used to find the location within the field data file of the - fields of a particular document. Because it contains fixed-length - data, this file may be easily randomly accessed. The position of - document - n - 's - - field data is the Uint64 at - n*8 - in - this file. -

      -
    2. -
    3. -

      - The field data, or .fdt file. - -

      - -

      - This contains the stored fields of each document, - as follows: -

      - -

      - FieldData (.fdt) --> - <DocFieldData> - SegSize -

      -

      DocFieldData --> - FieldCount, <FieldNum, Bits, Value> - FieldCount -

      -

      FieldCount --> - VInt -

      -

      FieldNum --> - VInt -

      -

      Bits --> - Byte -

      -

      -

        -
      • low order bit is one for tokenized fields
      • -
      • second bit is one for fields containing binary data
      • -
      • third bit is one for fields with compression option enabled - (if compression is enabled, the algorithm used is ZLIB), - only available for indexes until Lucene version 2.9.x
      • -
      • 4th to 6th bit (mask: 0x7<<3) define the type of a - numeric field:
          -
        • all bits in mask are cleared if no numeric field at all
        • -
        • 1<<3: Value is Int
        • -
        • 2<<3: Value is Long
        • -
        • 3<<3: Value is Int as Float (as of Float.intBitsToFloat)
        • -
        • 4<<3: Value is Long as Double (as of Double.longBitsToDouble)
        • -
      • -
      -

      -

      Value --> - String | BinaryValue | Int | Long (depending on Bits) -

      -

      BinaryValue --> - ValueSize, <Byte>^ValueSize -

      -

      ValueSize --> - VInt -

      - -
    4. -
    - -
    -
    Term Dictionary - -

    - The term dictionary is represented as two files: -

    -
      -
    1. -

      - The term infos, or tis file. -

      - -

      - TermInfoFile (.tis)--> - TIVersion, TermCount, IndexInterval, SkipInterval, MaxSkipLevels, TermInfos -

      -

      TIVersion --> - UInt32 -

      -

      TermCount --> - UInt64 -

      -

      IndexInterval --> - UInt32 -

      -

      SkipInterval --> - UInt32 -

      -

      MaxSkipLevels --> - UInt32 -

      -

      TermInfos --> - <TermInfo> - TermCount -

      -

      TermInfo --> - <Term, DocFreq, FreqDelta, ProxDelta, SkipDelta> -

      -

      Term --> - <PrefixLength, Suffix, FieldNum> -

      -

      Suffix --> - String -

      -

      PrefixLength, - DocFreq, FreqDelta, ProxDelta, SkipDelta -
      - --> VInt -

      -

      - This file is sorted by Term. Terms are - ordered first lexicographically (by UTF16 - character code) by the term's field name, - and within that lexicographically (by - UTF16 character code) by the term's text. -

      -

      TIVersion names the version of the format - of this file and is equal to TermInfosWriter.FORMAT_CURRENT. -

      -

      Term - text prefixes are shared. The PrefixLength is the number of initial - characters from the previous term which must be pre-pended to a - term's suffix in order to form the term's text. Thus, if the - previous term's text was "bone" and the term is "boy", - the PrefixLength is two and the suffix is "y". -

      -

      FieldNumber - determines the term's field, whose name is stored in the .fdt file. -

      -

      DocFreq - is the count of documents which contain the term. -

      -

      FreqDelta - determines the position of this term's TermFreqs within the .frq - file. In particular, it is the difference between the position of - this term's data in that file and the position of the previous - term's data (or zero, for the first term in the file). -

      -

      ProxDelta - determines the position of this term's TermPositions within the .prx - file. In particular, it is the difference between the position of - this term's data in that file and the position of the previous - term's data (or zero, for the first term in the file. For fields - that omit position data, this will be 0 since - prox information is not stored. -

      -

      SkipDelta determines the position of this - term's SkipData within the .frq file. In - particular, it is the number of bytes - after TermFreqs that the SkipData starts. - In other words, it is the length of the - TermFreq data. SkipDelta is only stored - if DocFreq is not smaller than SkipInterval. -

      -
    2. -
    3. -

      - The term info index, or .tii file. -

      - -

      - This contains every IndexInterval - th - entry from the .tis - file, along with its location in the "tis" file. This is - designed to be read entirely into memory and used to provide random - access to the "tis" file. -

      - -

      - The structure of this file is very similar to the - .tis file, with the addition of one item per record, the IndexDelta. -

      - -

      - TermInfoIndex (.tii)--> - TIVersion, IndexTermCount, IndexInterval, SkipInterval, MaxSkipLevels, TermIndices -

      -

      TIVersion --> - UInt32 -

      -

      IndexTermCount --> - UInt64 -

      -

      IndexInterval --> - UInt32 -

      -

      SkipInterval --> - UInt32 -

      -

      TermIndices --> - <TermInfo, IndexDelta> - IndexTermCount -

      -

      IndexDelta --> - VLong -

      -

      IndexDelta - determines the position of this term's TermInfo within the .tis file. In - particular, it is the difference between the position of this term's - entry in that file and the position of the previous term's entry. -

      -

      SkipInterval is the fraction of TermDocs stored in skip tables. It is used to accelerate TermDocs.skipTo(int). - Larger values result in smaller indexes, greater acceleration, but fewer accelerable cases, while - smaller values result in bigger indexes, less acceleration (in case of a small value for MaxSkipLevels) and more - accelerable cases.

      -

      MaxSkipLevels is the max. number of skip levels stored for each term in the .frq file. A low value results in - smaller indexes but less acceleration, a larger value results in slighly larger indexes but greater acceleration. - See format of .frq file for more information about skip levels.

      -
    4. -
    -
    - -
    Frequencies - -

    - The .frq file contains the lists of documents - which contain each term, along with the frequency of the term in that - document (except when frequencies are omitted: IndexOptions.DOCS_ONLY). -

    -

    FreqFile (.frq) --> - <TermFreqs, SkipData> - TermCount -

    -

    TermFreqs --> - <TermFreq> - DocFreq -

    -

    TermFreq --> - DocDelta[, Freq?] -

    -

    SkipData --> - <<SkipLevelLength, SkipLevel> - NumSkipLevels-1, SkipLevel> - <SkipDatum> -

    -

    SkipLevel --> - <SkipDatum> - DocFreq/(SkipInterval^(Level + 1)) -

    -

    SkipDatum --> - DocSkip,PayloadLength?,FreqSkip,ProxSkip,SkipChildLevelPointer? -

    -

    DocDelta,Freq,DocSkip,PayloadLength,FreqSkip,ProxSkip --> - VInt -

    -

    SkipChildLevelPointer --> - VLong -

    -

    TermFreqs - are ordered by term (the term is implicit, from the .tis file). -

    -

    TermFreq - entries are ordered by increasing document number. -

    -

    DocDelta: if frequencies are indexed, this determines both - the document number and the frequency. In - particular, DocDelta/2 is the difference between - this document number and the previous document - number (or zero when this is the first document in - a TermFreqs). When DocDelta is odd, the frequency - is one. When DocDelta is even, the frequency is - read as another VInt. If frequencies are omitted, DocDelta - contains the gap (not multiplied by 2) between - document numbers and no frequency information is - stored. -

    -

    For example, the TermFreqs for a term which occurs - once in document seven and three times in document - eleven, with frequencies indexed, would be the following - sequence of VInts: -

    -

    15, 8, 3 -

    -

    If frequencies were omitted (IndexOptions.DOCS_ONLY) it would be this sequence - of VInts instead: -

    -

    - 7,4 -

    -

    DocSkip records the document number before every - SkipInterval - th - document in TermFreqs. - If payloads are disabled for the term's field, - then DocSkip represents the difference from the - previous value in the sequence. - If payloads are enabled for the term's field, - then DocSkip/2 represents the difference from the - previous value in the sequence. If payloads are enabled - and DocSkip is odd, - then PayloadLength is stored indicating the length - of the last payload before the SkipIntervalth - document in TermPositions. - FreqSkip and ProxSkip record the position of every - SkipInterval - th - entry in FreqFile and - ProxFile, respectively. File positions are - relative to the start of TermFreqs and Positions, - to the previous SkipDatum in the sequence. -

    -

    For example, if DocFreq=35 and SkipInterval=16, - then there are two SkipData entries, containing - the 15 - th - and 31 - st - document - numbers in TermFreqs. The first FreqSkip names - the number of bytes after the beginning of - TermFreqs that the 16 - th - SkipDatum - starts, and the second the number of bytes after - that that the 32 - nd - starts. The first - ProxSkip names the number of bytes after the - beginning of Positions that the 16 - th - SkipDatum starts, and the second the number of - bytes after that that the 32 - nd - starts. -

    -

    Each term can have multiple skip levels. - The amount of skip levels for a term is NumSkipLevels = Min(MaxSkipLevels, floor(log(DocFreq/log(SkipInterval)))). - The number of SkipData entries for a skip level is DocFreq/(SkipInterval^(Level + 1)), whereas the lowest skip - level is Level=0.

    - Example: SkipInterval = 4, MaxSkipLevels = 2, DocFreq = 35. Then skip level 0 has 8 SkipData entries, - containing the 3rd, 7th, 11th, 15th, 19th, 23rd, - 27th, and 31st document numbers in TermFreqs. Skip level 1 has 2 SkipData entries, containing the - 15th and 31st document numbers in TermFreqs.

    - The SkipData entries on all upper levels > 0 contain a SkipChildLevelPointer referencing the corresponding SkipData - entry in level-1. In the example has entry 15 on level 1 a pointer to entry 15 on level 0 and entry 31 on level 1 a pointer - to entry 31 on level 0. -

    - -
    -
    Positions - -

    - The .prx file contains the lists of positions that - each term occurs at within documents. Note that - fields omitting positional data do not store - anything into this file, and if all fields in the - index omit positional data then the .prx file will not - exist. -

    -

    ProxFile (.prx) --> - <TermPositions> - TermCount -

    -

    TermPositions --> - <Positions> - DocFreq -

    -

    Positions --> - <PositionDelta,Payload?> - Freq -

    -

    Payload --> - <PayloadLength?,PayloadData> -

    -

    PositionDelta --> - VInt -

    -

    PayloadLength --> - VInt -

    -

    PayloadData --> - bytePayloadLength -

    -

    TermPositions - are ordered by term (the term is implicit, from the .tis file). -

    -

    Positions - entries are ordered by increasing document number (the document - number is implicit from the .frq file). -

    -

    PositionDelta - is, if payloads are disabled for the term's field, the difference - between the position of the current occurrence in - the document and the previous occurrence (or zero, if this is the - first occurrence in this document). - If payloads are enabled for the term's field, then PositionDelta/2 - is the difference between the current and the previous position. If - payloads are enabled and PositionDelta is odd, then PayloadLength is - stored, indicating the length of the payload at the current term position. -

    -

    - For example, the TermPositions for a - term which occurs as the fourth term in one document, and as the - fifth and ninth term in a subsequent document, would be the following - sequence of VInts (payloads disabled): -

    -

    4, - 5, 4 -

    -

    PayloadData - is metadata associated with the current term position. If PayloadLength - is stored at the current position, then it indicates the length of this - Payload. If PayloadLength is not stored, then this Payload has the same - length as the Payload at the previous position. -

    -
    -
    Normalization Factors - -

    There's a single .nrm file containing all norms: -

    -

    AllNorms - (.nrm) --> NormsHeader,<Norms> - NumFieldsWithNorms -

    -

    Norms - --> <Byte> - SegSize -

    -

    NormsHeader - --> 'N','R','M',Version -

    -

    Version - --> Byte -

    -

    NormsHeader - has 4 bytes, last of which is the format version for this file, currently -1. -

    -

    Each - byte encodes a floating point value. Bits 0-2 contain the 3-bit - mantissa, and bits 3-8 contain the 5-bit exponent. -

    -

    These - are converted to an IEEE single float value as follows: -

    -
      -
    1. -

      If - the byte is zero, use a zero float. -

      -
    2. -
    3. -

      Otherwise, - set the sign bit of the float to zero; -

      -
    4. -
    5. -

      add - 48 to the exponent and use this as the float's exponent; -

      -
    6. -
    7. -

      map - the mantissa to the high-order 3 bits of the float's mantissa; and - -

      -
    8. -
    9. -

      set - the low-order 21 bits of the float's mantissa to zero. -

      -
    10. -
    -

    A separate norm file is created when the norm values of an existing segment are modified. - When field N is modified, a separate norm file .sN - is created, to maintain the norm values for that field. -

    -

    Separate norm files are created (when adequate) for both compound and non compound segments. -

    - -
    -
    Term Vectors -

    - Term Vector support is an optional on a field by - field basis. It consists of 3 files. -

    -
      -
    1. -

      The Document Index or .tvx file.

      -

      For each document, this stores the offset - into the document data (.tvd) and field - data (.tvf) files. -

      -

      DocumentIndex (.tvx) --> TVXVersion<DocumentPosition,FieldPosition> - NumDocs -

      -

      TVXVersion --> Int (TermVectorsReader.CURRENT)

      -

      DocumentPosition --> UInt64 (offset in - the .tvd file)

      -

      FieldPosition --> UInt64 (offset in the - .tvf file)

      -
    2. -
    3. -

      The Document or .tvd file.

      -

      This contains, for each document, the number of fields, a list of the fields with - term vector info and finally a list of pointers to the field information in the .tvf - (Term Vector Fields) file.

      -

      - Document (.tvd) --> TVDVersion<NumFields, FieldNums, FieldPositions> - NumDocs -

      -

      TVDVersion --> Int (TermVectorsReader.FORMAT_CURRENT)

      -

      NumFields --> VInt

      -

      FieldNums --> <FieldNumDelta> - NumFields -

      -

      FieldNumDelta --> VInt

      -

      FieldPositions --> <FieldPositionDelta> - NumFields-1 -

      -

      FieldPositionDelta --> VLong

      -

      The .tvd file is used to map out the fields that have term vectors stored and - where the field information is in the .tvf file.

      -
    4. -
    5. -

      The Field or .tvf file.

      -

      This file contains, for each field that has a term vector stored, a list of - the terms, their frequencies and, optionally, position and offest information.

      -

      Field (.tvf) --> TVFVersion<NumTerms, Position/Offset, TermFreqs> - NumFields -

      -

      TVFVersion --> Int (TermVectorsReader.FORMAT_CURRENT)

      -

      NumTerms --> VInt

      -

      Position/Offset --> Byte

      -

      TermFreqs --> <TermText, TermFreq, Positions?, Offsets?> - NumTerms -

      -

      TermText --> <PrefixLength, Suffix>

      -

      PrefixLength --> VInt

      -

      Suffix --> String

      -

      TermFreq --> VInt

      -

      Positions --> <VInt>TermFreq

      -

      Offsets --> <VInt, VInt>TermFreq

      -
      -

      Notes:

      -
        -
      • Position/Offset byte stores whether this term vector has position or offset information stored.
      • -
      • Term - text prefixes are shared. The PrefixLength is the number of initial - characters from the previous term which must be pre-pended to a - term's suffix in order to form the term's text. Thus, if the - previous term's text was "bone" and the term is "boy", - the PrefixLength is two and the suffix is "y". -
      • -
      • Positions are stored as delta encoded VInts. This means we only store the difference of the current position from the last position
      • -
      • Offsets are stored as delta encoded VInts. The first VInt is the startOffset, the second is the endOffset.
      • -
      - - -
    6. -
    -
    - -
    Deleted Documents - -

    The .del file is - optional, and only exists when a segment contains deletions. -

    - -

    Although per-segment, this file is maintained exterior to compound segment files. -

    -

    - Deletions - (.del) --> [Format],ByteCount,BitCount, Bits | DGaps (depending on Format) -

    - -

    Format,ByteSize,BitCount --> - Uint32 -

    - -

    Bits --> - <Byte> - ByteCount -

    - -

    DGaps --> - <DGap,NonzeroByte> - NonzeroBytesCount -

    - -

    DGap --> - VInt -

    - -

    NonzeroByte --> - Byte -

    - -

    Format - is Optional. -1 indicates DGaps. Non-negative value indicates Bits, and that Format is excluded. -

    - -

    ByteCount - indicates the number of bytes in Bits. It is typically - (SegSize/8)+1. -

    - -

    - BitCount - indicates the number of bits that are currently set in Bits. -

    - -

    Bits - contains one bit for each document indexed. When the bit - corresponding to a document number is set, that document is marked as - deleted. Bit ordering is from least to most significant. Thus, if - Bits contains two bytes, 0x00 and 0x02, then document 9 is marked as - deleted. -

    - -

    DGaps - represents sparse bit-vectors more efficiently than Bits. - It is made of DGaps on indexes of nonzero bytes in Bits, - and the nonzero bytes themselves. The number of nonzero bytes - in Bits (NonzeroBytesCount) is not stored. -

    -

    For example, - if there are 8000 bits and only bits 10,12,32 are set, - DGaps would be used: -

    -

    - (VInt) 1 , (byte) 20 , (VInt) 3 , (Byte) 1 -

    -
    -
    - -
    Limitations - -

    - When referring to term numbers, Lucene's current - implementation uses a Java int to hold the - term index, which means the maximum number of unique - terms in any single index segment is ~2.1 billion times - the term index interval (default 128) = ~274 billion. - This is technically not a limitation of the index file - format, just of Lucene's current implementation. -

    -

    - Similarly, Lucene uses a Java int to refer - to document numbers, and the index file format uses an - Int32 on-disk to store document numbers. - This is a limitation of both the index file format and - the current implementation. Eventually these should be - replaced with either UInt64 values, or - better yet, VInt values which have no - limit. -

    - -
    - - - -
    diff --git a/lucene/site/src/documentation/content/xdocs/gettingstarted.xml b/lucene/site/src/documentation/content/xdocs/gettingstarted.xml deleted file mode 100644 index 7ab6441214e..00000000000 --- a/lucene/site/src/documentation/content/xdocs/gettingstarted.xml +++ /dev/null @@ -1,41 +0,0 @@ - - -
    - - Apache Lucene - Getting Started Guide - -
    - -Andrew C. Oliver - - - -
    - Getting Started -

    -This document is intended as a "getting started" guide. It has three audiences: first-time users -looking to install Apache Lucene in their application; developers looking to modify or base -the applications they develop on Lucene; and developers looking to become involved in and contribute -to the development of Lucene. This document is written in tutorial and walk-through format. The -goal is to help you "get started". It does not go into great depth on some of the conceptual or -inner details of Lucene. -

    - -

    -Each section listed below builds on one another. More advanced users -may wish to skip sections. -

    - -
    -
    - - - - diff --git a/lucene/site/src/documentation/content/xdocs/images/asf-logo.gif b/lucene/site/src/documentation/content/xdocs/images/asf-logo.gif deleted file mode 100644 index 22eb9d7358ef57c3488331845e680b72c9b7c8e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7279 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 F{{tbU1q=WH diff --git a/lucene/site/src/documentation/content/xdocs/images/chapter.gif b/lucene/site/src/documentation/content/xdocs/images/chapter.gif deleted file mode 100644 index d3d8245d0c7693b5b6c6f25ca9d615858656d4ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmZ?wbhEHbWMN=uXkcJiy6xEi|Nj+#vM@3*Ff!;c00Bsbfr-O~Pb~Az>JSYEYXC!` B3(^1p diff --git a/lucene/site/src/documentation/content/xdocs/images/current.gif b/lucene/site/src/documentation/content/xdocs/images/current.gif deleted file mode 100644 index fd82c082012faa682ecd4e68d2eedef9ae2e6231..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmZ?wbhEHb?^rw&K&!5AS?T6x?8fb0RhOq?+ z*9Na4R+@~)d!3M!O2OmtVCO|eTU#6M-5o=EV?N}ya_AZBgOSNW^-oPmNl%5RmnRtE z3|Lcake#0kQF{rxySp(mGJ=$kUiq2Qy;e&^uvxAUPnhkzg1`0bXz>HzzLgz)u z>T1A^j|M9}8q6FXZjasuPn?J_P6TWnC=eEiAd-nuURjQK0UsrUa(G1eBC|3VRt`3h zc2;5Pw<#R6F-FUSE=VL2L}i_Zg|jv6=niN)*8(qJZ@7edpuA5G??`_{7xNKUnhKK5 zNzhzqP}J5#*dj$&R~M*MDk9?87@ru&AyY$$FIQr6d=mHX--i*|1V(lwn7UZO(!&mC zZni+uD??#h8T>iH$UG|oJDP*YG%k{4S>Wc!L(ozPR#r4D+^wNdoJEyf2C=jVx%oom z6z1XKy$9&;?FY@x8ENudq*dkM{@8t(6KhDyrN}QXL{wfZo;`bp{0pTJUML1LlLuZw z0ur*4@bt-3-1>P0X0BFn4)K6%kOxYy$l=BEgS4j_#og7A%WEO-s6b3cJaR>OcsBJ6 zQ&UqIC-&tS#RMmbJ?$SDKqS$BW==G6&J-Yx*hgMr0)&MkoZQ9Q892kkcE2*;Xx{6BZ)SMtr-weU zRnDB@YRh#jwy1bO##aY|#f1z@9y^vOeE99>D;F2|#zdtop*RryC6CoVyf2E-D9U$T zx0T@Jjn*H1Vz=zGwZ}Yt^a;+{yZMx{S(5jOIpI`Y;>$l?>XiQOcLra(+oZXzk5f}~ zT=3dEJJjDa-T(5d{Cx|R>%W~t%ia*LZIbZ)8zDyt{?-w_#KV5u4b3&_r!&>SS(E#o zy*(-D%T3!Bd1Y|||3S-UrzqzteRef*Y$uLcpACG8Ab$a+&$@GcRqufAt{o6$3UKY} zHJqTDVWZ|IG~T(0h%7FuDyrb(;)3(-ZOD|1aBu7$_L=L0#bzN!ngp#aTJZDthm{Wn z1%%(lCC8)gY&{MhJcxpGrKlcmgkMr9+8_17A;bkem%CwWYYRiO<0>CcD-|Gs6@o{T zk5JJdLwF(^VtFy53SvQVp~B3}3?3mqD$n9YM`MrSe)L}LM@n`Ya$1X^XlsPQ@gpcH zErkc+_sKN^)ZID{G2x>%@*3n72%)E^M|gJ&vMYq(X2+r9QU?rePN00S4o*HU;HI2L zSa=wclT+Xu=8vaOpQ`*)>8(jc>9D6eA~=(U(a}-3M0z2yJVWI#Cf24XxhR8$trapw z0?3+cQGTWp-lqc)7aNDbSO#|O-%WV@1C`$&bs!;}7m0zs0R%9D@zH0R7#<#mi1037 zA76;-BuEgYfX)q6dDwP6U7Wjg9=22p;gL4T%gsXwKLRXa3^)lq>@?a3ePaVOC>r44 z<^*X)3A`fw5E2!J^t5yg3=N{YzXt~9$Ix-H15NEMpm;ifr`KVBTyZvpvMP;!{vaT%*Ei9K^R$>p!TO0mB&_IQ^1mH zjWQyGY~Ac3xm<T0+~`M@{WPnAbmIRY>;q7a*&00&Peh!rJB6QrYQ>=OEVdR6(< zdae~@BI|4G<)HdGtMbG?%o$~}a=3+g!7Gf8!g2|`q5~ij=YzovN2)XnOfC!j^kneT zVsZD*UD)`Z0?pF}m9k1CmZqsPF_OqVehOcerxOzs_~rI(+`M@cdrS}D{6r7BdM`t9 zyB%$v7f{lF2GaIQBvodCL*$&1*$JGmGecuzBML5-!;cq&R9OxZD$~JA!_`M8Gr*H1f|(r+USbTQa%2C(4gOdntnPQ{*c-?h33X5+ zF*GzZ@f?09DlhfVq=!sx`mKEl?cF)~bLPAo^+&y9^UmQdbA>|TT>g@&1q-H@yfA-Z zu$@pxU4wsRIDG&9hK6-EFX%0eP8z-HLq(qNKa2FJK3?trqW&aCM@L6{eAfv_kzd)W zvauKS#ZDSoI)!^gtLCj;NFtHezo3)6KOk%LQY@@yZ~FzE<<`7JSDp5+uD{XM^gpi` z?xQ`p_jkHliNnyoO{RVS)%PyEq)*_|H1roI^Y`7jUe!4>0BZWLIx3beQ*4`tB4rI% z{fp<@#%6WW>%X>|YHG@P?@uF4#@Epu4*q6VUvX4+VCBk{^$RG21SpiLL%KRT+y|Ry z^|v$+7EKWwF(DjMf=u3$tD(-nC7#va{Q1$h8#n5G8)Op{KKyvNt?-7nu#|kRi8MU` zudtV|Sh3ZkB)IWxft)9o9f-PfBTJaNv#dik04bkTWW4(F?lkMyPOq+{8eUyPr%z7k zYDY6z(|Y;X!i?Qow{N$)yMIU^?8A|tKVG7dZMS%O0iyqF#qM>UpX5w$0ikbZCkwux?=Tq?v*6I^(9kHCE7a*t-LZYIashO-Xj$epH#hIJ4G&)z zG;rjdhockx?5y7&Fbl6ohkuF=xn9KA*s`GUS)5howuG*47$rdGCwKZOWe!N}c8XmAz~7O_$4y%xdzDerSKJ zt)1Q7Ph0Lcqjx2k?C>(*V_G|Yof+5m#@vY9xw*RJLFbAYecszt{~q5y|5K;F+;D8e z#^Pd|yX)ef9$Y?;(3SY{>s_7e*LM=Is@l5w;*(t#nx+9aKMhvuAhQ2C@y5^o15=*= KSBKJQ)cym`bE^~p diff --git a/lucene/site/src/documentation/content/xdocs/images/instruction_arrow.png b/lucene/site/src/documentation/content/xdocs/images/instruction_arrow.png deleted file mode 100644 index 0fbc72452bf9885757882932eb78d14b44403466..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^fn9o^tnS&|T3i>qxFe$? f}PJadT6$68(tDnm{r-UW|L@jfU diff --git a/lucene/site/src/documentation/content/xdocs/images/larm_architecture.jpg b/lucene/site/src/documentation/content/xdocs/images/larm_architecture.jpg deleted file mode 100644 index ae88a08d94f9a986d027b4f2ceee6d25a90d28d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44476 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 bjuGoo3d%L7jX&Qt4;X0v8o=yCeIEQjazZ)x diff --git a/lucene/site/src/documentation/content/xdocs/images/larm_crawling-process.jpg b/lucene/site/src/documentation/content/xdocs/images/larm_crawling-process.jpg deleted file mode 100644 index bcb7ff6d1c7ca4bd9d20a25b64a665c508dcc255..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24922 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 diff --git a/lucene/site/src/documentation/content/xdocs/images/lia_3d.jpg b/lucene/site/src/documentation/content/xdocs/images/lia_3d.jpg deleted file mode 100644 index 46c8460d6e9f09fd8d5b9441eae325a8a0d311ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4393 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 afnE2@g}FS|>n&Z>&mLoBh!9|5um%96yppW| diff --git a/lucene/site/src/documentation/content/xdocs/images/lucene_green_200.gif b/lucene/site/src/documentation/content/xdocs/images/lucene_green_200.gif deleted file mode 100644 index e8ab18e2621f8e731c949f741e9f55f5693cd61e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1481 zcmcJ~3pZ2=0KoBk=Pfg1W{mOZ;v!)ZqqWX>?qxEDCOc}jJf<4*+^lBTXg!L{ddzy1 z=V{bhLRK1?5`{KnJzF{+sjNC7wL2jc+P1dr=|k-Q1N_eU`}y;^uHi#~IdC5U$W(Gd zdYlv2v2V7sy8Uc~?2sqlt*o)|=EN0MUtQigG(gO^W?LPI2udrI8$*Vho0}^uD>E}Q zqobqU-Q6uME!EZ4XU?3-$jFe%WKyYABoZMA!r^dW7^cx^!2g{6C;!t6LfAwUBEdhx z+@bnXL5I{C(jz@{b!eGVofv+Z+C9rTh>Z}AYA+#bTP8KHPa4?b==Sth`sm90R#p`C z+oYV_M4fCo2{24G!6Z>(hQLG*TWAy(Ng>IJ3AK1#m=z2Wl1S9!a+n!vtXEw?Y(Cyb zJ}pgy~q!&uOAbH`ET*qhD|pBAArVOvtUrh0^yLDsKmle}CTWB2+LSc7imwvp`s z?`!J0-hicah>=-4Kge_xtEDAaRD&hk^F}&ahe)X(Zd(XC<&8l~-NucP&bI13)RB66 zC!Yzaq!&Wyy_qW}AmFmCW1B|kwUcfi&z(;zTG9()YpW(Cn)17$+haY}y51U7x;lcD zR1ESr5zbz$Bz1T`Bg34nBF6!nfC!$w#0=%=PRJCv7_nnX&4xG5jGIW2hj`$bj=cEK zP=FSF)jKoMUM9^-bXIRp3ruYVdAm}SV!yqDS!WGqD*S4uqF1wy-*+?WyJ?IjNj=3d zW5WJopD`ssGKlxyTa-wa7XapD(nLWXO^wFKMn*>QTko#d5mP6|OsF-L+ig;!*OKq3429V~9zkaSMu8!D|aEw*_PWv-- zlCxRC0mR(puAEc9*ryo;X9qFUn#U3F0W?`|M4voX;_J@mtm54hoJ#buN6{~T+oPD4 z;RB=nyj!vJt$vY|Fho^i&Mi||K8bE*8^wDnElD<)27K`g4zob%IwyIOPn7cg0v_1uaFr9K;kt5vc^wj&&6J|SjUhZ5wNc5_$SfrVa>`!7rBX;N$ ziSq65gslL29~-)6TN`*pFS8t4c)aZm$0RaAlwsvMHGby^*}-4yvwL~@#66y5Rln*) z>Nq!;By$*Et}OT3t*G2c$G?_d5R^W*>RilO?BB7Y&$_?5YB%x6n2k4v#vHZ4E;9km z#M7)^H62`|*xVit(>mx>z;boZARM>qY8ieQ0Y5r0W-Ng*rj8szU*6*f?kn}OSFISV z0@(GMYepYVV!rt3A23&+r#z}v(X8ANfFFK-A{kFl;OcxutpOOFvgjNHB^?sruETGUI_Kqpg~UOzkZRetbDE$haR?*zFa U<{?(Y>=F#HSpd#O2LrhO2P_^k;{X5v diff --git a/lucene/site/src/documentation/content/xdocs/images/lucene_green_250.gif b/lucene/site/src/documentation/content/xdocs/images/lucene_green_250.gif deleted file mode 100644 index a09bd954da68abcf106e59ba0d50c584f32ab9fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1816 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 diff --git a/lucene/site/src/documentation/content/xdocs/images/lucene_outline_150.gif b/lucene/site/src/documentation/content/xdocs/images/lucene_outline_150.gif deleted file mode 100644 index 0100293dde63f118a96d969b9d14d0c3d1a6927f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 895 zcmZ?wbhEHboW>x|aD;*3|NsB*-@m_q|Ni;&=lAd5zkdDt`Sa)Z_xCq6G}PDE7ZemE zBqRg`1UNW27#J8RC@2UB2r!TWbU=zhb~&*AS5RO&Ycy|#gNWxPlK>IZjNJPb>)zMA z|J~|(SW#OlzL(v%#o+I}3oA;z)@q6@Ze;!;p*g3amD6a4>IMd<>DwK8m{^#d9QWCt zYH)Bdh|=K6He(WGRM%p0vSVRUVq(|j^3dne)#DXpujLG#Gk4w`PC*`yB^+$sEK67A z^|sjMD)aX!@v|`rw3?M{W}D=hkYCEc%)`sd!0K(<5Xs>&^Q0wb!a1HT6?2J0Gh5t4+g33%S;<>kW3MVF<)>gje zCLp*}`Gl&nzWO|a03HqIiRw%{ZbTkA*fi6e%_T|dA){0`e_v;Yz=q>n1Y-^=NvM2r z(XHb<@pOXfB8L`Mv(|+Y42dp`vy~J$b~G(c(_s_nlRfb=li@H!W3_~|;+xa^eaxlK zIBm#mk7sDU`Y3|o=f{qN3^8{LE_`)t+9WBs)#T8wt*@_dNIpGJcK4?XSGN?4H(uC! zo~KG%VPnZpr$$Yt-!cxiC->~+XBJ3071Ltyh{N>U=IrBznv6U1K1A)QPd3aiKv0<93c91{H@J%p4!s8kn{%bcoX7Vo>L1{I{S%LXJIR>rn;qi=|B&HXBTR zV%IisoZ-B|dcv8paYnO);@>+DW^l}jz1|vQ+H&*=({UDsXX-_PKfThEE|t&ZtunjV z99O9$aL`#-<-{|Nb|p0iRf`86K9#&03nbN><`sm8PSP>x)fW($wuFgqiFu2@ht3r5 z<|$V)UQa%;=Sss`qfJw|YZGJ_Yp*Xk@`z#b9<|$tgxMV$7$&mBwcPMwdC%UtV6WQmKlIi?eA`}5Nv4nmP+~{1AO`Ina3PKorGoV9pS~NdIMI1Vs zdt`eM4O*B*vYoICEvySDHv+a@xv{pZKFk)#gd=6a{wK(nL6ZhBU9 z03vp{7JjFFVoDXZFzFj;LWN}{NC&<*U!h&{EUDyIKRW!bVJgD?ayVX-4ofKG{Kgxo z_}-nALQ;aNJ(LlicdWL6+E&xYz%<0d+`id{%u*VBtH^of#kU5y@;BE)Q$TR=aeF|#`+`@q2z?V2P$F{Ey)7LN6nvAomMHtmd2rl* z*l*<1odSH4IBO&F$2REjdHp&;b(S0W>7=W0Q`)>3K)sFod)5y%hN^t{^& zC|)ncrR2V5?2Zk=;nj?4Ag5`$a5FOfYztu*AKWcdPO^!btSAd2V}xbKrWcQmZ$lW`aZufuXk zqNg_QAGNg*6xzpK&lm{D9WaBuWQHqX(J6M&LrlUixGj$yWum->tN^Wg(H;JRvw-dlIOKJXI#2xalY5vvhQKW Rvev~H*E}&bz7l}o{{Vab-WLD> diff --git a/lucene/site/src/documentation/content/xdocs/images/lucene_outline_250.gif b/lucene/site/src/documentation/content/xdocs/images/lucene_outline_250.gif deleted file mode 100644 index d07b20dfb70abcd6431b5127e9fc762de127d9e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1534 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 NHG2g!kT(E${vRmk0So{D diff --git a/lucene/site/src/documentation/content/xdocs/images/page.gif b/lucene/site/src/documentation/content/xdocs/images/page.gif deleted file mode 100644 index a144d3295be63ebed0bc574146851a5a392fed89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79 zcmZ?wbhEHbdhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~ fVqj#@VE_V<76vBXp8m=M4RQ+_jm%nu85yhr= - -
    - Lucene Java Documentation -
    - - -

    - This is the official documentation for Lucene Java
    - Please use the menu on the left to access the Javadocs and different documents. -

    -

    - Additional documentation is available in the Wiki. -

    - -
    diff --git a/lucene/site/src/documentation/content/xdocs/queryparsersyntax.xml b/lucene/site/src/documentation/content/xdocs/queryparsersyntax.xml deleted file mode 100644 index b2a309fef0e..00000000000 --- a/lucene/site/src/documentation/content/xdocs/queryparsersyntax.xml +++ /dev/null @@ -1,239 +0,0 @@ - - -
    - - Apache Lucene - Query Parser Syntax - -
    - - Peter Carlson - - -
    - Overview -

    Although Lucene provides the ability to create your own - queries through its API, it also provides a rich query - language through the Query Parser, a lexer which - interprets a string into a Lucene Query using JavaCC. -

    - -

    Generally, the query parser syntax may change from - release to release. This page describes the syntax as of - the current release. If you are using a different - version of Lucene, please consult the copy of - docs/queryparsersyntax.html that was distributed - with the version you are using. -

    - -

    - Before choosing to use the provided Query Parser, please consider the following: -

      -
    1. If you are programmatically generating a query string and then - parsing it with the query parser then you should seriously consider building - your queries directly with the query API. In other words, the query - parser is designed for human-entered text, not for program-generated - text.
    2. - -
    3. Untokenized fields are best added directly to queries, and not - through the query parser. If a field's values are generated programmatically - by the application, then so should query clauses for this field. - An analyzer, which the query parser uses, is designed to convert human-entered - text to terms. Program-generated values, like dates, keywords, etc., - should be consistently program-generated.
    4. - -
    5. In a query form, fields which are general text should use the query - parser. All others, such as date ranges, keywords, etc. are better added - directly through the query API. A field with a limit set of values, - that can be specified with a pull-down menu should not be added to a - query string which is subsequently parsed, but rather added as a - TermQuery clause.
    6. -
    -

    -
    - -
    - Terms -

    A query is broken up into terms and operators. There are two types of terms: Single Terms and Phrases.

    -

    A Single Term is a single word such as "test" or "hello".

    -

    A Phrase is a group of words surrounded by double quotes such as "hello dolly".

    -

    Multiple terms can be combined together with Boolean operators to form a more complex query (see below).

    -

    Note: The analyzer used to create the index will be used on the terms and phrases in the query string. - So it is important to choose an analyzer that will not interfere with the terms used in the query string.

    -
    - -
    - Fields -

    Lucene supports fielded data. When performing a search you can either specify a field, or use the default field. The field names and default field is implementation specific.

    -

    You can search any field by typing the field name followed by a colon ":" and then the term you are looking for.

    -

    As an example, let's assume a Lucene index contains two fields, title and text and text is the default field. - If you want to find the document entitled "The Right Way" which contains the text "don't go this way", you can enter:

    - - title:"The Right Way" AND text:go -

    or

    - title:"Do it right" AND right -

    Since text is the default field, the field indicator is not required.

    - -

    Note: The field is only valid for the term that it directly precedes, so the query

    - title:Do it right -

    Will only find "Do" in the title field. It will find "it" and "right" in the default field (in this case the text field).

    -
    - -
    - Term Modifiers -

    Lucene supports modifying query terms to provide a wide range of searching options.

    - -
    - Wildcard Searches -

    Lucene supports single and multiple character wildcard searches within single terms - (not within phrase queries).

    -

    To perform a single character wildcard search use the "?" symbol.

    -

    To perform a multiple character wildcard search use the "*" symbol.

    -

    The single character wildcard search looks for terms that match that with the single character replaced. For example, to search for "text" or "test" you can use the search:

    - - te?t - -

    Multiple character wildcard searches looks for 0 or more characters. For example, to search for test, tests or tester, you can use the search:

    - test* -

    You can also use the wildcard searches in the middle of a term.

    - te*t -

    Note: You cannot use a * or ? symbol as the first character of a search.

    -
    - - -
    - Fuzzy Searches -

    Lucene supports fuzzy searches based on the Levenshtein Distance, or Edit Distance algorithm. To do a fuzzy search use the tilde, "~", symbol at the end of a Single word Term. For example to search for a term similar in spelling to "roam" use the fuzzy search:

    - - roam~ -

    This search will find terms like foam and roams.

    - -

    Starting with Lucene 1.9 an additional (optional) parameter can specify the required similarity. The value is between 0 and 1, with a value closer to 1 only terms with a higher similarity will be matched. For example:

    - roam~0.8 -

    The default that is used if the parameter is not given is 0.5.

    -
    - - -
    - Proximity Searches -

    Lucene supports finding words are a within a specific distance away. To do a proximity search use the tilde, "~", symbol at the end of a Phrase. For example to search for a "apache" and "jakarta" within 10 words of each other in a document use the search:

    - - "jakarta apache"~10 -
    - - -
    - Range Searches -

    Range Queries allow one to match documents whose field(s) values - are between the lower and upper bound specified by the Range Query. - Range Queries can be inclusive or exclusive of the upper and lower bounds. - Sorting is done lexicographically.

    - mod_date:[20020101 TO 20030101] -

    This will find documents whose mod_date fields have values between 20020101 and 20030101, inclusive. - Note that Range Queries are not reserved for date fields. You could also use range queries with non-date fields:

    - title:{Aida TO Carmen} -

    This will find all documents whose titles are between Aida and Carmen, but not including Aida and Carmen.

    -

    Inclusive range queries are denoted by square brackets. Exclusive range queries are denoted by - curly brackets.

    -
    - - -
    - Boosting a Term -

    Lucene provides the relevance level of matching documents based on the terms found. To boost a term use the caret, "^", symbol with a boost factor (a number) at the end of the term you are searching. The higher the boost factor, the more relevant the term will be.

    -

    Boosting allows you to control the relevance of a document by boosting its term. For example, if you are searching for

    - - jakarta apache -

    and you want the term "jakarta" to be more relevant boost it using the ^ symbol along with the boost factor next to the term. - You would type:

    - jakarta^4 apache -

    This will make documents with the term jakarta appear more relevant. You can also boost Phrase Terms as in the example:

    - - "jakarta apache"^4 "Apache Lucene" -

    By default, the boost factor is 1. Although the boost factor must be positive, it can be less than 1 (e.g. 0.2)

    -
    - -
    - - -
    - Boolean Operators -

    Boolean operators allow terms to be combined through logic operators. - Lucene supports AND, "+", OR, NOT and "-" as Boolean operators(Note: Boolean operators must be ALL CAPS).

    - -
    -

    The OR operator is the default conjunction operator. This means that if there is no Boolean operator between two terms, the OR operator is used. - The OR operator links two terms and finds a matching document if either of the terms exist in a document. This is equivalent to a union using sets. - The symbol || can be used in place of the word OR.

    -

    To search for documents that contain either "jakarta apache" or just "jakarta" use the query:

    - - "jakarta apache" jakarta - -

    or

    - - "jakarta apache" OR jakarta - -
    -
    - AND -

    The AND operator matches documents where both terms exist anywhere in the text of a single document. - This is equivalent to an intersection using sets. The symbol && can be used in place of the word AND.

    -

    To search for documents that contain "jakarta apache" and "Apache Lucene" use the query:

    - - "jakarta apache" AND "Apache Lucene" -
    - -
    - + -

    The "+" or required operator requires that the term after the "+" symbol exist somewhere in a the field of a single document.

    -

    To search for documents that must contain "jakarta" and may contain "lucene" use the query:

    - - +jakarta lucene -
    - -
    - NOT -

    The NOT operator excludes documents that contain the term after NOT. - This is equivalent to a difference using sets. The symbol ! can be used in place of the word NOT.

    -

    To search for documents that contain "jakarta apache" but not "Apache Lucene" use the query:

    - - "jakarta apache" NOT "Apache Lucene" -

    Note: The NOT operator cannot be used with just one term. For example, the following search will return no results:

    - - NOT "jakarta apache" -
    - -
    - - -

    The "-" or prohibit operator excludes documents that contain the term after the "-" symbol.

    -

    To search for documents that contain "jakarta apache" but not "Apache Lucene" use the query:

    - - "jakarta apache" -"Apache Lucene" -
    - -
    - -
    - Grouping -

    Lucene supports using parentheses to group clauses to form sub queries. This can be very useful if you want to control the boolean logic for a query.

    -

    To search for either "jakarta" or "apache" and "website" use the query:

    - (jakarta OR apache) AND website -

    This eliminates any confusion and makes sure you that website must exist and either term jakarta or apache may exist.

    -
    - -
    - Field Grouping -

    Lucene supports using parentheses to group multiple clauses to a single field.

    -

    To search for a title that contains both the word "return" and the phrase "pink panther" use the query:

    - title:(+return +"pink panther") -
    - -
    - Escaping Special Characters -

    Lucene supports escaping special characters that are part of the query syntax. The current list special characters are

    -

    + - && || ! ( ) { } [ ] ^ " ~ * ? : \

    -

    To escape these character use the \ before the character. For example to search for (1+1):2 use the query:

    - \(1\+1\)\:2 -
    - - -
    diff --git a/lucene/site/src/documentation/content/xdocs/scoring.xml b/lucene/site/src/documentation/content/xdocs/scoring.xml deleted file mode 100644 index 78386653aa2..00000000000 --- a/lucene/site/src/documentation/content/xdocs/scoring.xml +++ /dev/null @@ -1,277 +0,0 @@ - - - -
    - - Apache Lucene - Scoring - -
    - - Grant Ingersoll - - - - -
    Introduction -

    Lucene scoring is the heart of why we all love Lucene. It is blazingly fast and it hides almost all of the complexity from the user. - In a nutshell, it works. At least, that is, until it doesn't work, or doesn't work as one would expect it to - work. Then we are left digging into Lucene internals or asking for help on java-user@lucene.apache.org to figure out why a document with five of our query terms - scores lower than a different document with only one of the query terms.

    -

    While this document won't answer your specific scoring issues, it will, hopefully, point you to the places that can - help you figure out the what and why of Lucene scoring.

    -

    Lucene scoring uses a combination of the - Vector Space Model (VSM) of Information - Retrieval and the Boolean model - to determine - how relevant a given Document is to a User's query. In general, the idea behind the VSM is the more - times a query term appears in a document relative to - the number of times the term appears in all the documents in the collection, the more relevant that - document is to the query. It uses the Boolean model to first narrow down the documents that need to - be scored based on the use of boolean logic in the Query specification. Lucene also adds some - capabilities and refinements onto this model to support boolean and fuzzy searching, but it - essentially remains a VSM based system at the heart. - For some valuable references on VSM and IR in general refer to the - Lucene Wiki IR references. -

    -

    The rest of this document will cover Scoring basics and how to change your - Similarity. Next it will cover ways you can - customize the Lucene internals in Changing your Scoring - -- Expert Level which gives details on implementing your own - Query class and related functionality. Finally, we - will finish up with some reference material in the Appendix. -

    -
    -
    Scoring -

    Scoring is very much dependent on the way documents are indexed, - so it is important to understand indexing (see - Apache Lucene - Getting Started Guide - and the Lucene - file formats - before continuing on with this section.) It is also assumed that readers know how to use the - Searcher.explain(Query query, int doc) functionality, - which can go a long way in informing why a score is returned. -

    -
    Fields and Documents -

    In Lucene, the objects we are scoring are - Documents. A Document is a collection - of - Fields. Each Field has semantics about how - it is created and stored (i.e. tokenized, untokenized, raw data, compressed, etc.) It is important to - note that Lucene scoring works on Fields and then combines the results to return Documents. This is - important because two Documents with the exact same content, but one having the content in two Fields - and the other in one Field will return different scores for the same query due to length normalization - (assumming the - DefaultSimilarity - on the Fields). -

    -
    -
    Score Boosting -

    Lucene allows influencing search results by "boosting" in more than one level: -

      -
    • Document level boosting - - while indexing - by calling - document.setBoost() - before a document is added to the index. -
    • -
    • Document's Field level boosting - - while indexing - by calling - field.setBoost() - before adding a field to the document (and before adding the document to the index). -
    • -
    • Query level boosting - - during search, by setting a boost on a query clause, calling - Query.setBoost(). -
    • -
    -

    -

    Indexing time boosts are preprocessed for storage efficiency and written to - the directory (when writing the document) in a single byte (!) as follows: - For each field of a document, all boosts of that field - (i.e. all boosts under the same field name in that doc) are multiplied. - The result is multiplied by the boost of the document, - and also multiplied by a "field length norm" value - that represents the length of that field in that doc - (so shorter fields are automatically boosted up). - The result is decoded as a single byte - (with some precision loss of course) and stored in the directory. - The similarity object in effect at indexing computes the length-norm of the field. -

    -

    This composition of 1-byte representation of norms - (that is, indexing time multiplication of field boosts & doc boost & field-length-norm) - is nicely described in - Fieldable.setBoost(). -

    -

    Encoding and decoding of the resulted float norm in a single byte are done by the - static methods of the class Similarity: - encodeNorm() and - decodeNorm(). - Due to loss of precision, it is not guaranteed that decode(encode(x)) = x, - e.g. decode(encode(0.89)) = 0.75. - At scoring (search) time, this norm is brought into the score of document - as norm(t, d), as shown by the formula in - Similarity. -

    -
    -
    Understanding the Scoring Formula - -

    - This scoring formula is described in the - Similarity class. Please take the time to study this formula, as it contains much of the information about how the - basics of Lucene scoring work, especially the - TermQuery. -

    -
    -
    The Big Picture -

    OK, so the tf-idf formula and the - Similarity - is great for understanding the basics of Lucene scoring, but what really drives Lucene scoring are - the use and interactions between the - Query classes, as created by each application in - response to a user's information need. -

    -

    In this regard, Lucene offers a wide variety of Query implementations, most of which are in the - org.apache.lucene.search package. - These implementations can be combined in a wide variety of ways to provide complex querying - capabilities along with - information about where matches took place in the document collection. The Query - section below - highlights some of the more important Query classes. For information on the other ones, see the - package summary. For details on implementing - your own Query class, see Changing your Scoring -- - Expert Level below. -

    -

    Once a Query has been created and submitted to the - IndexSearcher, the scoring process - begins. (See the Appendix Algorithm section for more notes on the process.) After some infrastructure setup, - control finally passes to the Weight implementation and its - Scorer instance. In the case of any type of - BooleanQuery, scoring is handled by the - BooleanWeight2 - (link goes to ViewVC BooleanQuery java code which contains the BooleanWeight2 inner class) or - BooleanWeight - (link goes to ViewVC BooleanQuery java code, which contains the BooleanWeight inner class). -

    -

    - Assuming the use of the BooleanWeight2, a - BooleanScorer2 is created by bringing together - all of the - Scorers from the sub-clauses of the BooleanQuery. - When the BooleanScorer2 is asked to score it delegates its work to an internal Scorer based on the type - of clauses in the Query. This internal Scorer essentially loops over the sub scorers and sums the scores - provided by each scorer while factoring in the coord() score. - -

    -
    -
    Query Classes -

    For information on the Query Classes, refer to the - search package javadocs -

    -
    -
    Changing Similarity -

    One of the ways of changing the scoring characteristics of Lucene is to change the similarity factors. For information on - how to do this, see the - search package javadocs

    -
    - -
    -
    Changing your Scoring -- Expert Level -

    At a much deeper level, one can affect scoring by implementing their own Query classes (and related scoring classes.) To learn more - about how to do this, refer to the - search package javadocs -

    -
    - -
    Appendix -
    Algorithm -

    This section is mostly notes on stepping through the Scoring process and serves as - fertilizer for the earlier sections.

    -

    In the typical search application, a - Query - is passed to the - Searcher - , beginning the scoring process. -

    -

    Once inside the Searcher, a - Collector - is used for the scoring and sorting of the search results. - These important objects are involved in a search: -

      -
    1. The - Weight - object of the Query. The Weight object is an internal representation of the Query that - allows the Query to be reused by the Searcher. -
    2. -
    3. The Searcher that initiated the call.
    4. -
    5. A - Filter - for limiting the result set. Note, the Filter may be null. -
    6. -
    7. A - Sort - object for specifying how to sort the results if the standard score based sort method is not - desired. -
    8. -
    -

    -

    Assuming we are not sorting (since sorting doesn't - effect the raw Lucene score), - we call one of the search methods of the Searcher, passing in the - Weight - object created by Searcher.createWeight(Query), - Filter - and the number of results we want. This method - returns a - TopDocs - object, which is an internal collection of search results. - The Searcher creates a - TopScoreDocCollector - and passes it along with the Weight, Filter to another expert search method (for more on the - Collector - mechanism, see - Searcher - .) The TopDocCollector uses a - PriorityQueue - to collect the top results for the search. -

    -

    If a Filter is being used, some initial setup is done to determine which docs to include. Otherwise, - we ask the Weight for - a - Scorer - for the - IndexReader - of the current searcher and we proceed by - calling the score method on the - Scorer - . -

    -

    At last, we are actually going to score some documents. The score method takes in the Collector - (most likely the TopScoreDocCollector or TopFieldCollector) and does its business. - Of course, here is where things get involved. The - Scorer - that is returned by the - Weight - object depends on what type of Query was submitted. In most real world applications with multiple - query terms, - the - Scorer - is going to be a - BooleanScorer2 - (see the section on customizing your scoring for info on changing this.) - -

    -

    Assuming a BooleanScorer2 scorer, we first initialize the Coordinator, which is used to apply the - coord() factor. We then - get a internal Scorer based on the required, optional and prohibited parts of the query. - Using this internal Scorer, the BooleanScorer2 then proceeds - into a while loop based on the Scorer#next() method. The next() method advances to the next document - matching the query. This is an - abstract method in the Scorer class and is thus overriden by all derived - implementations. If you have a simple OR query - your internal Scorer is most likely a DisjunctionSumScorer, which essentially combines the scorers - from the sub scorers of the OR'd terms.

    -
    -
    - -
    diff --git a/lucene/site/src/documentation/content/xdocs/site.xml b/lucene/site/src/documentation/content/xdocs/site.xml deleted file mode 100755 index df1e1f3f2a1..00000000000 --- a/lucene/site/src/documentation/content/xdocs/site.xml +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/content/xdocs/systemrequirements.xml b/lucene/site/src/documentation/content/xdocs/systemrequirements.xml deleted file mode 100644 index 313e0c8b508..00000000000 --- a/lucene/site/src/documentation/content/xdocs/systemrequirements.xml +++ /dev/null @@ -1,27 +0,0 @@ - - -
    Apache Lucene - System Requirements
    - -Grant Ingersoll, Uwe Schindler - - - -
    System Requirements -

    - Lucene Core has the following minimum requirements: -

      -
    • Java 1.6.x or greater.
    • -
    • ANT 1.7.0 or greater.
    • -
    • CPU, Disk and Memory requirements are based on the many choices made in implementing Lucene (document size, number of documents, and number of hits retrieved to name a few.)
    • -
    -

    -

    Some modules may have other requirements, refer to their documentation and build files for information.

    - -
    - - - -
    diff --git a/lucene/site/src/documentation/content/xdocs/tabs.xml b/lucene/site/src/documentation/content/xdocs/tabs.xml deleted file mode 100755 index 561ed8f452f..00000000000 --- a/lucene/site/src/documentation/content/xdocs/tabs.xml +++ /dev/null @@ -1,64 +0,0 @@ - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skinconf.xml b/lucene/site/src/documentation/skinconf.xml deleted file mode 100755 index 0ab811c6654..00000000000 --- a/lucene/site/src/documentation/skinconf.xml +++ /dev/null @@ -1,404 +0,0 @@ - - - - - - - - - - - - true - - true - - true - - true - - - true - - - true - - - true - - - false - ... - - - true - - - Lucene - Apache Lucene is a high-performance, full-featured text search engine library written entirely in - Java. It is a technology suitable for nearly any application that requires full-text search, especially cross-platform. - http://lucene.apache.org/java/ - http://lucene.apache.org/images/lucene_green_300.gif - - - - - - Lucene - Apache Lucene - http://lucene.apache.org/ - http://www.apache.org/images/asf_logo_simple.png - - - - - - - - - images/favicon.ico - - - 2006 - The Apache Software Foundation. - http://www.apache.org/licenses/ - - - - - - - - - - - - - - - - - - - - - - - - p.quote { - margin-left: 2em; - padding: .5em; - background-color: #f0f0f0; - font-family: monospace; - } - img.float-right { - float: right; - margin-left: 2em; - padding: .5em; - } - - #footer a { color: #0F3660; } - #footer a:visited { color: #009999; } - - pre.code { - margin-left: 2em; - margin-right: 2em; - padding: 0.5em; - background-color: #f0f0f0; - } - - - - - - - - - - - - - - - - - - - - - - - Built with Apache Forrest - http://forrest.apache.org/ - images/built-with-forrest-button.png - 88 - 31 - - - - - - diff --git a/lucene/site/src/documentation/skins/common/css/forrest.css.xslt b/lucene/site/src/documentation/skins/common/css/forrest.css.xslt deleted file mode 100644 index fbfa020f60f..00000000000 --- a/lucene/site/src/documentation/skins/common/css/forrest.css.xslt +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - - - - - - - - - - - - -/* ==================== aural ============================ */ - -@media aural { - h1, h2, h3, h4, h5, h6 { voice-family: paul, male; stress: 20; richness: 90 } - h1 { pitch: x-low; pitch-range: 90 } - h2 { pitch: x-low; pitch-range: 80 } - h3 { pitch: low; pitch-range: 70 } - h4 { pitch: medium; pitch-range: 60 } - h5 { pitch: medium; pitch-range: 50 } - h6 { pitch: medium; pitch-range: 40 } - li, dt, dd { pitch: medium; richness: 60 } - dt { stress: 80 } - pre, code, tt { pitch: medium; pitch-range: 0; stress: 0; richness: 80 } - em { pitch: medium; pitch-range: 60; stress: 60; richness: 50 } - strong { pitch: medium; pitch-range: 60; stress: 90; richness: 90 } - dfn { pitch: high; pitch-range: 60; stress: 60 } - s, strike { richness: 0 } - i { pitch: medium; pitch-range: 60; stress: 60; richness: 50 } - b { pitch: medium; pitch-range: 60; stress: 90; richness: 90 } - u { richness: 0 } - - :link { voice-family: harry, male } - :visited { voice-family: betty, female } - :active { voice-family: betty, female; pitch-range: 80; pitch: x-high } -} - - -a.external { - padding: 0 20px 0px 0px; - display:inline; - background-repeat: no-repeat; - background-position: center right; - background-image: url(images/external-link.gif); -} - - -/* extra-css */ - - - - - diff --git a/lucene/site/src/documentation/skins/common/images/README.txt b/lucene/site/src/documentation/skins/common/images/README.txt deleted file mode 100644 index e0932f4a46d..00000000000 --- a/lucene/site/src/documentation/skins/common/images/README.txt +++ /dev/null @@ -1 +0,0 @@ -The images in this directory are used if the current skin lacks them. diff --git a/lucene/site/src/documentation/skins/common/images/chapter.gif b/lucene/site/src/documentation/skins/common/images/chapter.gif deleted file mode 100644 index d3d8245d0c7693b5b6c6f25ca9d615858656d4ad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49 zcmZ?wbhEHbWMN=uXkcJiy6xEi|Nj+#vM@3*Ff!;c00Bsbfr-O~Pb~Az>JSYEYXC!` B3(^1p diff --git a/lucene/site/src/documentation/skins/common/images/corner-imports.svg.xslt b/lucene/site/src/documentation/skins/common/images/corner-imports.svg.xslt deleted file mode 100644 index 95b58d26f3c..00000000000 --- a/lucene/site/src/documentation/skins/common/images/corner-imports.svg.xslt +++ /dev/null @@ -1,92 +0,0 @@ - - - - - - - - - - - - - - - - 0 - - - - - - fill:; - - - fill:; - - - stroke:; - - - - - - - - - 1 - -1 - - - - - 1 - -1 - - - - - 0 - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/images/current.gif b/lucene/site/src/documentation/skins/common/images/current.gif deleted file mode 100644 index fd82c082012faa682ecd4e68d2eedef9ae2e6231..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54 zcmZ?wbhEHb - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/images/page.gif b/lucene/site/src/documentation/skins/common/images/page.gif deleted file mode 100644 index a144d3295be63ebed0bc574146851a5a392fed89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79 zcmZ?wbhEHbdhCYGe8D3oWGWGIAWq$;?3`UWs4{$yd~ fVqj#@VE_V<76vBXp8m=M4RQ+_jm%nu85yhr= - - - - - - - - - - - - - - - - - - - - - - - POD - - - diff --git a/lucene/site/src/documentation/skins/common/images/rc.svg.xslt b/lucene/site/src/documentation/skins/common/images/rc.svg.xslt deleted file mode 100644 index d8924fec1b4..00000000000 --- a/lucene/site/src/documentation/skins/common/images/rc.svg.xslt +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/images/txtdoc.svg.xslt b/lucene/site/src/documentation/skins/common/images/txtdoc.svg.xslt deleted file mode 100644 index d85715c750d..00000000000 --- a/lucene/site/src/documentation/skins/common/images/txtdoc.svg.xslt +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - TXT - - - diff --git a/lucene/site/src/documentation/skins/common/scripts/breadcrumbs-optimized.js b/lucene/site/src/documentation/skins/common/scripts/breadcrumbs-optimized.js deleted file mode 100644 index 507612af872..00000000000 --- a/lucene/site/src/documentation/skins/common/scripts/breadcrumbs-optimized.js +++ /dev/null @@ -1,90 +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. -*/ -var PREPREND_CRUMBS=new Array(); -var link1="@skinconfig.trail.link1.name@"; -var link2="@skinconfig.trail.link2.name@"; -var link3="@skinconfig.trail.link3.name@"; -if(!(link1=="")&&!link1.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link1, @skinconfig.trail.link1.href@ ) ); } -if(!(link2=="")&&!link2.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link2, @skinconfig.trail.link2.href@ ) ); } -if(!(link3=="")&&!link3.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link3, @skinconfig.trail.link3.href@ ) ); } -var DISPLAY_SEPARATOR=" > "; -var DISPLAY_PREPREND=" > "; -var DISPLAY_POSTPREND=":"; -var CSS_CLASS_CRUMB="breadcrumb"; -var CSS_CLASS_TRAIL="breadcrumbTrail"; -var CSS_CLASS_SEPARATOR="crumbSeparator"; -var FILE_EXTENSIONS=new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); -var PATH_SEPARATOR="/"; - -function sc(s) { - var l=s.toLowerCase(); - return l.substr(0,1).toUpperCase()+l.substr(1); -} -function getdirs() { - var t=document.location.pathname.split(PATH_SEPARATOR); - var lc=t[t.length-1]; - for(var i=0;i < FILE_EXTENSIONS.length;i++) - { - if(lc.indexOf(FILE_EXTENSIONS[i])) - return t.slice(1,t.length-1); } - return t.slice(1,t.length); -} -function getcrumbs( d ) -{ - var pre = "/"; - var post = "/"; - var c = new Array(); - if( d != null ) - { - for(var i=0;i < d.length;i++) { - pre+=d[i]+postfix; - c.push(new Array(d[i],pre)); } - } - if(PREPREND_CRUMBS.length > 0 ) - return PREPREND_CRUMBS.concat( c ); - return c; -} -function gettrail( c ) -{ - var h=DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=DISPLAY_SEPARATOR; } - return h+DISPLAY_POSTPREND; -} - -function gettrailXHTML( c ) -{ - var h=''+DISPLAY_PREPREND; - for(var i=0;i < c.length;i++) - { - h+=''+sc(c[i][0])+''; - if(i!=(c.length-1)) - h+=''+DISPLAY_SEPARATOR+''; } - return h+DISPLAY_POSTPREND+''; -} - -if(document.location.href.toLowerCase().indexOf("http://")==-1) - document.write(gettrail(getcrumbs())); -else - document.write(gettrail(getcrumbs(getdirs()))); - diff --git a/lucene/site/src/documentation/skins/common/scripts/breadcrumbs.js b/lucene/site/src/documentation/skins/common/scripts/breadcrumbs.js deleted file mode 100644 index aea80ec045b..00000000000 --- a/lucene/site/src/documentation/skins/common/scripts/breadcrumbs.js +++ /dev/null @@ -1,237 +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. -*/ -/** - * This script, when included in a html file, builds a neat breadcrumb trail - * based on its url. That is, if it doesn't contains bugs (I'm relatively - * sure it does). - * - * Typical usage: - * - */ - -/** - * IE 5 on Mac doesn't know Array.push. - * - * Implement it - courtesy to fritz. - */ -var abc = new Array(); -if (!abc.push) { - Array.prototype.push = function(what){this[this.length]=what} -} - -/* ======================================================================== - CONSTANTS - ======================================================================== */ - -/** - * Two-dimensional array containing extra crumbs to place at the front of - * the trail. Specify first the name of the crumb, then the URI that belongs - * to it. You'll need to modify this for every domain or subdomain where - * you use this script (you can leave it as an empty array if you wish) - */ -var PREPREND_CRUMBS = new Array(); - -var link1 = "@skinconfig.trail.link1.name@"; -var link2 = "@skinconfig.trail.link2.name@"; -var link3 = "@skinconfig.trail.link3.name@"; - -var href1 = "@skinconfig.trail.link1.href@"; -var href2 = "@skinconfig.trail.link2.href@"; -var href3 = "@skinconfig.trail.link3.href@"; - - if(!(link1=="")&&!link1.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link1, href1 ) ); - } - if(!(link2=="")&&!link2.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link2, href2 ) ); - } - if(!(link3=="")&&!link3.indexOf( "@" ) == 0){ - PREPREND_CRUMBS.push( new Array( link3, href3 ) ); - } - -/** - * String to include between crumbs: - */ -var DISPLAY_SEPARATOR = " > "; -/** - * String to include at the beginning of the trail - */ -var DISPLAY_PREPREND = " > "; -/** - * String to include at the end of the trail - */ -var DISPLAY_POSTPREND = ""; - -/** - * CSS Class to use for a single crumb: - */ -var CSS_CLASS_CRUMB = "breadcrumb"; - -/** - * CSS Class to use for the complete trail: - */ -var CSS_CLASS_TRAIL = "breadcrumbTrail"; - -/** - * CSS Class to use for crumb separator: - */ -var CSS_CLASS_SEPARATOR = "crumbSeparator"; - -/** - * Array of strings containing common file extensions. We use this to - * determine what part of the url to ignore (if it contains one of the - * string specified here, we ignore it). - */ -var FILE_EXTENSIONS = new Array( ".html", ".htm", ".jsp", ".php", ".php3", ".php4" ); - -/** - * String that separates parts of the breadcrumb trail from each other. - * When this is no longer a slash, I'm sure I'll be old and grey. - */ -var PATH_SEPARATOR = "/"; - -/* ======================================================================== - UTILITY FUNCTIONS - ======================================================================== */ -/** - * Capitalize first letter of the provided string and return the modified - * string. - */ -function sentenceCase( string ) -{ return string; - //var lower = string.toLowerCase(); - //return lower.substr(0,1).toUpperCase() + lower.substr(1); -} - -/** - * Returns an array containing the names of all the directories in the - * current document URL - */ -function getDirectoriesInURL() -{ - var trail = document.location.pathname.split( PATH_SEPARATOR ); - - // check whether last section is a file or a directory - var lastcrumb = trail[trail.length-1]; - for( var i = 0; i < FILE_EXTENSIONS.length; i++ ) - { - if( lastcrumb.indexOf( FILE_EXTENSIONS[i] ) ) - { - // it is, remove it and send results - return trail.slice( 1, trail.length-1 ); - } - } - - // it's not; send the trail unmodified - return trail.slice( 1, trail.length ); -} - -/* ======================================================================== - BREADCRUMB FUNCTIONALITY - ======================================================================== */ -/** - * Return a two-dimensional array describing the breadcrumbs based on the - * array of directories passed in. - */ -function getBreadcrumbs( dirs ) -{ - var prefix = "/"; - var postfix = "/"; - - // the array we will return - var crumbs = new Array(); - - if( dirs != null ) - { - for( var i = 0; i < dirs.length; i++ ) - { - prefix += dirs[i] + postfix; - crumbs.push( new Array( dirs[i], prefix ) ); - } - } - - // preprend the PREPREND_CRUMBS - if(PREPREND_CRUMBS.length > 0 ) - { - return PREPREND_CRUMBS.concat( crumbs ); - } - - return crumbs; -} - -/** - * Return a string containing a simple text breadcrumb trail based on the - * two-dimensional array passed in. - */ -function getCrumbTrail( crumbs ) -{ - var xhtml = DISPLAY_PREPREND; - - for( var i = 0; i < crumbs.length; i++ ) - { - xhtml += ''; - xhtml += unescape( crumbs[i][0] ) + ''; - if( i != (crumbs.length-1) ) - { - xhtml += DISPLAY_SEPARATOR; - } - } - - xhtml += DISPLAY_POSTPREND; - - return xhtml; -} - -/** - * Return a string containing an XHTML breadcrumb trail based on the - * two-dimensional array passed in. - */ -function getCrumbTrailXHTML( crumbs ) -{ - var xhtml = ''; - xhtml += DISPLAY_PREPREND; - - for( var i = 0; i < crumbs.length; i++ ) - { - xhtml += ''; - xhtml += unescape( crumbs[i][0] ) + ''; - if( i != (crumbs.length-1) ) - { - xhtml += '' + DISPLAY_SEPARATOR + ''; - } - } - - xhtml += DISPLAY_POSTPREND; - xhtml += ''; - - return xhtml; -} - -/* ======================================================================== - PRINT BREADCRUMB TRAIL - ======================================================================== */ - -// check if we're local; if so, only print the PREPREND_CRUMBS -if( document.location.href.toLowerCase().indexOf( "http://" ) == -1 ) -{ - document.write( getCrumbTrail( getBreadcrumbs() ) ); -} -else -{ - document.write( getCrumbTrail( getBreadcrumbs( getDirectoriesInURL() ) ) ); -} - diff --git a/lucene/site/src/documentation/skins/common/scripts/fontsize.js b/lucene/site/src/documentation/skins/common/scripts/fontsize.js deleted file mode 100644 index 11722bfc52f..00000000000 --- a/lucene/site/src/documentation/skins/common/scripts/fontsize.js +++ /dev/null @@ -1,166 +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. -*/ -function init() -{ //embedded in the doc - //ndeSetTextSize(); -} - -function checkBrowser(){ - if (!document.getElementsByTagName){ - return true; - } - else{ - return false; - } -} - - -function ndeSetTextSize(chgsize,rs) -{ - var startSize; - var newSize; - - if (!checkBrowser) - { - return; - } - - startSize = parseInt(ndeGetDocTextSize()); - - if (!startSize) - { - startSize = 16; - } - - switch (chgsize) - { - case 'incr': - newSize = startSize + 2; - break; - - case 'decr': - newSize = startSize - 2; - break; - - case 'reset': - if (rs) {newSize = rs;} else {newSize = 16;} - break; - - default: - try{ - newSize = parseInt(ndeReadCookie("nde-textsize")); - } - catch(e){ - alert(e); - } - - if (!newSize || newSize == 'NaN') - { - newSize = startSize; - } - break; - - } - - if (newSize < 10) - { - newSize = 10; - } - - newSize += 'px'; - - document.getElementsByTagName('html')[0].style.fontSize = newSize; - document.getElementsByTagName('body')[0].style.fontSize = newSize; - - ndeCreateCookie("nde-textsize", newSize, 365); -} - -function ndeGetDocTextSize() -{ - if (!checkBrowser) - { - return 0; - } - - var size = 0; - var body = document.getElementsByTagName('body')[0]; - - if (body.style && body.style.fontSize) - { - size = body.style.fontSize; - } - else if (typeof(getComputedStyle) != 'undefined') - { - size = getComputedStyle(body,'').getPropertyValue('font-size'); - } - else if (body.currentStyle) - { - size = body.currentStyle.fontSize; - } - - //fix IE bug - if( isNaN(size)){ - if(size.substring(size.length-1)=="%"){ - return - } - - } - - return size; - -} - - - -function ndeCreateCookie(name,value,days) -{ - var cookie = name + "=" + value + ";"; - - if (days) - { - var date = new Date(); - date.setTime(date.getTime()+(days*24*60*60*1000)); - cookie += " expires=" + date.toGMTString() + ";"; - } - cookie += " path=/"; - - document.cookie = cookie; - -} - -function ndeReadCookie(name) -{ - var nameEQ = name + "="; - var ca = document.cookie.split(';'); - - - for(var i = 0; i < ca.length; i++) - { - var c = ca[i]; - while (c.charAt(0) == ' ') - { - c = c.substring(1, c.length); - } - - ctest = c.substring(0,name.length); - - if(ctest == name){ - return c.substring(nameEQ.length,c.length); - } - } - return null; -} diff --git a/lucene/site/src/documentation/skins/common/scripts/getBlank.js b/lucene/site/src/documentation/skins/common/scripts/getBlank.js deleted file mode 100644 index d9978c0b3e6..00000000000 --- a/lucene/site/src/documentation/skins/common/scripts/getBlank.js +++ /dev/null @@ -1,40 +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. -*/ -/** - * getBlank script - when included in a html file and called from a form text field, will set the value of this field to "" - * if the text value is still the standard value. - * getPrompt script - when included in a html file and called from a form text field, will set the value of this field to the prompt - * if the text value is empty. - * - * Typical usage: - * - * - */ - diff --git a/lucene/site/src/documentation/skins/common/scripts/getMenu.js b/lucene/site/src/documentation/skins/common/scripts/getMenu.js deleted file mode 100644 index b17aad61858..00000000000 --- a/lucene/site/src/documentation/skins/common/scripts/getMenu.js +++ /dev/null @@ -1,45 +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. -*/ -/** - * This script, when included in a html file, can be used to make collapsible menus - * - * Typical usage: - * - */ - -if (document.getElementById){ - document.write('') -} - - -function SwitchMenu(obj, thePath) -{ -var open = 'url("'+thePath + 'images/chapter_open.gif")'; -var close = 'url("'+thePath + 'images/chapter.gif")'; - if(document.getElementById) { - var el = document.getElementById(obj); - var title = document.getElementById(obj+'Title'); - - if(el.style.display != "block"){ - title.style.backgroundImage = open; - el.style.display = "block"; - }else{ - title.style.backgroundImage = close; - el.style.display = "none"; - } - }// end - if(document.getElementById) -}//end - function SwitchMenu(obj) diff --git a/lucene/site/src/documentation/skins/common/scripts/menu.js b/lucene/site/src/documentation/skins/common/scripts/menu.js deleted file mode 100644 index 06ea471dc57..00000000000 --- a/lucene/site/src/documentation/skins/common/scripts/menu.js +++ /dev/null @@ -1,48 +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. -*/ -/** - * This script, when included in a html file, can be used to make collapsible menus - * - * Typical usage: - * - */ - -if (document.getElementById){ - document.write('') -} - -function SwitchMenu(obj) -{ - if(document.getElementById) { - var el = document.getElementById(obj); - var title = document.getElementById(obj+'Title'); - - if(obj.indexOf("_selected_")==0&&el.style.display == ""){ - el.style.display = "block"; - title.className = "pagegroupselected"; - } - - if(el.style.display != "block"){ - el.style.display = "block"; - title.className = "pagegroupopen"; - } - else{ - el.style.display = "none"; - title.className = "pagegroup"; - } - }// end - if(document.getElementById) -}//end - function SwitchMenu(obj) diff --git a/lucene/site/src/documentation/skins/common/scripts/prototype.js b/lucene/site/src/documentation/skins/common/scripts/prototype.js deleted file mode 100644 index ed7d920cb5f..00000000000 --- a/lucene/site/src/documentation/skins/common/scripts/prototype.js +++ /dev/null @@ -1,1257 +0,0 @@ -/* Prototype JavaScript framework, version 1.4.0_pre4 - * (c) 2005 Sam Stephenson - * - * THIS FILE IS AUTOMATICALLY GENERATED. When sending patches, please diff - * against the source tree, available from the Prototype darcs repository. - * - * Prototype is freely distributable under the terms of an MIT-style license. - * - * For details, see the Prototype web site: http://prototype.conio.net/ - * -/*--------------------------------------------------------------------------*/ - -var Prototype = { - Version: '1.4.0_pre4', - - emptyFunction: function() {}, - K: function(x) {return x} -} - -var Class = { - create: function() { - return function() { - this.initialize.apply(this, arguments); - } - } -} - -var Abstract = new Object(); - -Object.extend = function(destination, source) { - for (property in source) { - destination[property] = source[property]; - } - return destination; -} - -Function.prototype.bind = function(object) { - var __method = this; - return function() { - return __method.apply(object, arguments); - } -} - -Function.prototype.bindAsEventListener = function(object) { - var __method = this; - return function(event) { - return __method.call(object, event || window.event); - } -} - -Number.prototype.toColorPart = function() { - var digits = this.toString(16); - if (this < 16) return '0' + digits; - return digits; -} - -var Try = { - these: function() { - var returnValue; - - for (var i = 0; i < arguments.length; i++) { - var lambda = arguments[i]; - try { - returnValue = lambda(); - break; - } catch (e) {} - } - - return returnValue; - } -} - -/*--------------------------------------------------------------------------*/ - -var PeriodicalExecuter = Class.create(); -PeriodicalExecuter.prototype = { - initialize: function(callback, frequency) { - this.callback = callback; - this.frequency = frequency; - this.currentlyExecuting = false; - - this.registerCallback(); - }, - - registerCallback: function() { - setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - onTimerEvent: function() { - if (!this.currentlyExecuting) { - try { - this.currentlyExecuting = true; - this.callback(); - } finally { - this.currentlyExecuting = false; - } - } - } -} - -/*--------------------------------------------------------------------------*/ - -function $() { - var elements = new Array(); - - for (var i = 0; i < arguments.length; i++) { - var element = arguments[i]; - if (typeof element == 'string') - element = document.getElementById(element); - - if (arguments.length == 1) - return element; - - elements.push(element); - } - - return elements; -} - -if (!Array.prototype.push) { - Array.prototype.push = function() { - var startLength = this.length; - for (var i = 0; i < arguments.length; i++) - this[startLength + i] = arguments[i]; - return this.length; - } -} - -if (!Function.prototype.apply) { - // Based on code from http://www.youngpup.net/ - Function.prototype.apply = function(object, parameters) { - var parameterStrings = new Array(); - if (!object) object = window; - if (!parameters) parameters = new Array(); - - for (var i = 0; i < parameters.length; i++) - parameterStrings[i] = 'parameters[' + i + ']'; - - object.__apply__ = this; - var result = eval('object.__apply__(' + - parameterStrings.join(', ') + ')'); - object.__apply__ = null; - - return result; - } -} - -Object.extend(String.prototype, { - stripTags: function() { - return this.replace(/<\/?[^>]+>/gi, ''); - }, - - escapeHTML: function() { - var div = document.createElement('div'); - var text = document.createTextNode(this); - div.appendChild(text); - return div.innerHTML; - }, - - unescapeHTML: function() { - var div = document.createElement('div'); - div.innerHTML = this.stripTags(); - return div.childNodes[0].nodeValue; - }, - - parseQuery: function() { - var str = this; - if (str.substring(0,1) == '?') { - str = this.substring(1); - } - var result = {}; - var pairs = str.split('&'); - for (var i = 0; i < pairs.length; i++) { - var pair = pairs[i].split('='); - result[pair[0]] = pair[1]; - } - return result; - } -}); - - -var _break = new Object(); -var _continue = new Object(); - -var Enumerable = { - each: function(iterator) { - var index = 0; - try { - this._each(function(value) { - try { - iterator(value, index++); - } catch (e) { - if (e != _continue) throw e; - } - }); - } catch (e) { - if (e != _break) throw e; - } - }, - - all: function(iterator) { - var result = true; - this.each(function(value, index) { - if (!(result &= (iterator || Prototype.K)(value, index))) - throw _break; - }); - return result; - }, - - any: function(iterator) { - var result = true; - this.each(function(value, index) { - if (result &= (iterator || Prototype.K)(value, index)) - throw _break; - }); - return result; - }, - - collect: function(iterator) { - var results = []; - this.each(function(value, index) { - results.push(iterator(value, index)); - }); - return results; - }, - - detect: function (iterator) { - var result; - this.each(function(value, index) { - if (iterator(value, index)) { - result = value; - throw _break; - } - }); - return result; - }, - - findAll: function(iterator) { - var results = []; - this.each(function(value, index) { - if (iterator(value, index)) - results.push(value); - }); - return results; - }, - - grep: function(pattern, iterator) { - var results = []; - this.each(function(value, index) { - var stringValue = value.toString(); - if (stringValue.match(pattern)) - results.push((iterator || Prototype.K)(value, index)); - }) - return results; - }, - - include: function(object) { - var found = false; - this.each(function(value) { - if (value == object) { - found = true; - throw _break; - } - }); - return found; - }, - - inject: function(memo, iterator) { - this.each(function(value, index) { - memo = iterator(memo, value, index); - }); - return memo; - }, - - invoke: function(method) { - var args = $A(arguments).slice(1); - return this.collect(function(value) { - return value[method].apply(value, args); - }); - }, - - max: function(iterator) { - var result; - this.each(function(value, index) { - value = (iterator || Prototype.K)(value, index); - if (value >= (result || value)) - result = value; - }); - return result; - }, - - min: function(iterator) { - var result; - this.each(function(value, index) { - value = (iterator || Prototype.K)(value, index); - if (value <= (result || value)) - result = value; - }); - return result; - }, - - partition: function(iterator) { - var trues = [], falses = []; - this.each(function(value, index) { - ((iterator || Prototype.K)(value, index) ? - trues : falses).push(value); - }); - return [trues, falses]; - }, - - pluck: function(property) { - var results = []; - this.each(function(value, index) { - results.push(value[property]); - }); - return results; - }, - - reject: function(iterator) { - var results = []; - this.each(function(value, index) { - if (!iterator(value, index)) - results.push(value); - }); - return results; - }, - - sortBy: function(iterator) { - return this.collect(function(value, index) { - return {value: value, criteria: iterator(value, index)}; - }).sort(function(left, right) { - var a = left.criteria, b = right.criteria; - return a < b ? -1 : a > b ? 1 : 0; - }).pluck('value'); - }, - - toArray: function() { - return this.collect(Prototype.K); - }, - - zip: function() { - var iterator = Prototype.K, args = $A(arguments); - if (typeof args.last() == 'function') - iterator = args.pop(); - - var collections = [this].concat(args).map($A); - return this.map(function(value, index) { - iterator(value = collections.pluck(index)); - return value; - }); - } -} - -Object.extend(Enumerable, { - map: Enumerable.collect, - find: Enumerable.detect, - select: Enumerable.findAll, - member: Enumerable.include, - entries: Enumerable.toArray -}); - -$A = Array.from = function(iterable) { - var results = []; - for (var i = 0; i < iterable.length; i++) - results.push(iterable[i]); - return results; -} - -Object.extend(Array.prototype, { - _each: function(iterator) { - for (var i = 0; i < this.length; i++) - iterator(this[i]); - }, - - first: function() { - return this[0]; - }, - - last: function() { - return this[this.length - 1]; - } -}); - -Object.extend(Array.prototype, Enumerable); - - -var Ajax = { - getTransport: function() { - return Try.these( - function() {return new ActiveXObject('Msxml2.XMLHTTP')}, - function() {return new ActiveXObject('Microsoft.XMLHTTP')}, - function() {return new XMLHttpRequest()} - ) || false; - } -} - -Ajax.Base = function() {}; -Ajax.Base.prototype = { - setOptions: function(options) { - this.options = { - method: 'post', - asynchronous: true, - parameters: '' - } - Object.extend(this.options, options || {}); - }, - - responseIsSuccess: function() { - return this.transport.status == undefined - || this.transport.status == 0 - || (this.transport.status >= 200 && this.transport.status < 300); - }, - - responseIsFailure: function() { - return !this.responseIsSuccess(); - } -} - -Ajax.Request = Class.create(); -Ajax.Request.Events = - ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete']; - -Ajax.Request.prototype = Object.extend(new Ajax.Base(), { - initialize: function(url, options) { - this.transport = Ajax.getTransport(); - this.setOptions(options); - this.request(url); - }, - - request: function(url) { - var parameters = this.options.parameters || ''; - if (parameters.length > 0) parameters += '&_='; - - try { - if (this.options.method == 'get') - url += '?' + parameters; - - this.transport.open(this.options.method, url, - this.options.asynchronous); - - if (this.options.asynchronous) { - this.transport.onreadystatechange = this.onStateChange.bind(this); - setTimeout((function() {this.respondToReadyState(1)}).bind(this), 10); - } - - this.setRequestHeaders(); - - var body = this.options.postBody ? this.options.postBody : parameters; - this.transport.send(this.options.method == 'post' ? body : null); - - } catch (e) { - } - }, - - setRequestHeaders: function() { - var requestHeaders = - ['X-Requested-With', 'XMLHttpRequest', - 'X-Prototype-Version', Prototype.Version]; - - if (this.options.method == 'post') { - requestHeaders.push('Content-type', - 'application/x-www-form-urlencoded'); - - /* Force "Connection: close" for Mozilla browsers to work around - * a bug where XMLHttpReqeuest sends an incorrect Content-length - * header. See Mozilla Bugzilla #246651. - */ - if (this.transport.overrideMimeType) - requestHeaders.push('Connection', 'close'); - } - - if (this.options.requestHeaders) - requestHeaders.push.apply(requestHeaders, this.options.requestHeaders); - - for (var i = 0; i < requestHeaders.length; i += 2) - this.transport.setRequestHeader(requestHeaders[i], requestHeaders[i+1]); - }, - - onStateChange: function() { - var readyState = this.transport.readyState; - if (readyState != 1) - this.respondToReadyState(this.transport.readyState); - }, - - respondToReadyState: function(readyState) { - var event = Ajax.Request.Events[readyState]; - - if (event == 'Complete') - (this.options['on' + this.transport.status] - || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] - || Prototype.emptyFunction)(this.transport); - - (this.options['on' + event] || Prototype.emptyFunction)(this.transport); - - /* Avoid memory leak in MSIE: clean up the oncomplete event handler */ - if (event == 'Complete') - this.transport.onreadystatechange = Prototype.emptyFunction; - } -}); - -Ajax.Updater = Class.create(); -Ajax.Updater.ScriptFragment = '(?:)((\n|.)*?)(?:<\/script>)'; - -Object.extend(Object.extend(Ajax.Updater.prototype, Ajax.Request.prototype), { - initialize: function(container, url, options) { - this.containers = { - success: container.success ? $(container.success) : $(container), - failure: container.failure ? $(container.failure) : - (container.success ? null : $(container)) - } - - this.transport = Ajax.getTransport(); - this.setOptions(options); - - var onComplete = this.options.onComplete || Prototype.emptyFunction; - this.options.onComplete = (function() { - this.updateContent(); - onComplete(this.transport); - }).bind(this); - - this.request(url); - }, - - updateContent: function() { - var receiver = this.responseIsSuccess() ? - this.containers.success : this.containers.failure; - - var match = new RegExp(Ajax.Updater.ScriptFragment, 'img'); - var response = this.transport.responseText.replace(match, ''); - var scripts = this.transport.responseText.match(match); - - if (receiver) { - if (this.options.insertion) { - new this.options.insertion(receiver, response); - } else { - receiver.innerHTML = response; - } - } - - if (this.responseIsSuccess()) { - if (this.onComplete) - setTimeout((function() {this.onComplete( - this.transport)}).bind(this), 10); - } - - if (this.options.evalScripts && scripts) { - match = new RegExp(Ajax.Updater.ScriptFragment, 'im'); - setTimeout((function() { - for (var i = 0; i < scripts.length; i++) - eval(scripts[i].match(match)[1]); - }).bind(this), 10); - } - } -}); - -Ajax.PeriodicalUpdater = Class.create(); -Ajax.PeriodicalUpdater.prototype = Object.extend(new Ajax.Base(), { - initialize: function(container, url, options) { - this.setOptions(options); - this.onComplete = this.options.onComplete; - - this.frequency = (this.options.frequency || 2); - this.decay = 1; - - this.updater = {}; - this.container = container; - this.url = url; - - this.start(); - }, - - start: function() { - this.options.onComplete = this.updateComplete.bind(this); - this.onTimerEvent(); - }, - - stop: function() { - this.updater.onComplete = undefined; - clearTimeout(this.timer); - (this.onComplete || Ajax.emptyFunction).apply(this, arguments); - }, - - updateComplete: function(request) { - if (this.options.decay) { - this.decay = (request.responseText == this.lastText ? - this.decay * this.options.decay : 1); - - this.lastText = request.responseText; - } - this.timer = setTimeout(this.onTimerEvent.bind(this), - this.decay * this.frequency * 1000); - }, - - onTimerEvent: function() { - this.updater = new Ajax.Updater(this.container, this.url, this.options); - } -}); - -document.getElementsByClassName = function(className) { - var children = document.getElementsByTagName('*') || document.all; - var elements = new Array(); - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - var classNames = child.className.split(' '); - for (var j = 0; j < classNames.length; j++) { - if (classNames[j] == className) { - elements.push(child); - break; - } - } - } - - return elements; -} - -/*--------------------------------------------------------------------------*/ - -if (!window.Element) { - var Element = new Object(); -} - -Object.extend(Element, { - toggle: function() { - for (var i = 0; i < arguments.length; i++) { - var element = $(arguments[i]); - element.style.display = - (element.style.display == 'none' ? '' : 'none'); - } - }, - - hide: function() { - for (var i = 0; i < arguments.length; i++) { - var element = $(arguments[i]); - element.style.display = 'none'; - } - }, - - show: function() { - for (var i = 0; i < arguments.length; i++) { - var element = $(arguments[i]); - element.style.display = ''; - } - }, - - remove: function(element) { - element = $(element); - element.parentNode.removeChild(element); - }, - - getHeight: function(element) { - element = $(element); - return element.offsetHeight; - }, - - hasClassName: function(element, className) { - element = $(element); - if (!element) - return; - var a = element.className.split(' '); - for (var i = 0; i < a.length; i++) { - if (a[i] == className) - return true; - } - return false; - }, - - addClassName: function(element, className) { - element = $(element); - Element.removeClassName(element, className); - element.className += ' ' + className; - }, - - removeClassName: function(element, className) { - element = $(element); - if (!element) - return; - var newClassName = ''; - var a = element.className.split(' '); - for (var i = 0; i < a.length; i++) { - if (a[i] != className) { - if (i > 0) - newClassName += ' '; - newClassName += a[i]; - } - } - element.className = newClassName; - }, - - // removes whitespace-only text node children - cleanWhitespace: function(element) { - var element = $(element); - for (var i = 0; i < element.childNodes.length; i++) { - var node = element.childNodes[i]; - if (node.nodeType == 3 && !/\S/.test(node.nodeValue)) - Element.remove(node); - } - } -}); - -var Toggle = new Object(); -Toggle.display = Element.toggle; - -/*--------------------------------------------------------------------------*/ - -Abstract.Insertion = function(adjacency) { - this.adjacency = adjacency; -} - -Abstract.Insertion.prototype = { - initialize: function(element, content) { - this.element = $(element); - this.content = content; - - if (this.adjacency && this.element.insertAdjacentHTML) { - this.element.insertAdjacentHTML(this.adjacency, this.content); - } else { - this.range = this.element.ownerDocument.createRange(); - if (this.initializeRange) this.initializeRange(); - this.fragment = this.range.createContextualFragment(this.content); - this.insertContent(); - } - } -} - -var Insertion = new Object(); - -Insertion.Before = Class.create(); -Insertion.Before.prototype = Object.extend(new Abstract.Insertion('beforeBegin'), { - initializeRange: function() { - this.range.setStartBefore(this.element); - }, - - insertContent: function() { - this.element.parentNode.insertBefore(this.fragment, this.element); - } -}); - -Insertion.Top = Class.create(); -Insertion.Top.prototype = Object.extend(new Abstract.Insertion('afterBegin'), { - initializeRange: function() { - this.range.selectNodeContents(this.element); - this.range.collapse(true); - }, - - insertContent: function() { - this.element.insertBefore(this.fragment, this.element.firstChild); - } -}); - -Insertion.Bottom = Class.create(); -Insertion.Bottom.prototype = Object.extend(new Abstract.Insertion('beforeEnd'), { - initializeRange: function() { - this.range.selectNodeContents(this.element); - this.range.collapse(this.element); - }, - - insertContent: function() { - this.element.appendChild(this.fragment); - } -}); - -Insertion.After = Class.create(); -Insertion.After.prototype = Object.extend(new Abstract.Insertion('afterEnd'), { - initializeRange: function() { - this.range.setStartAfter(this.element); - }, - - insertContent: function() { - this.element.parentNode.insertBefore(this.fragment, - this.element.nextSibling); - } -}); - -var Field = { - clear: function() { - for (var i = 0; i < arguments.length; i++) - $(arguments[i]).value = ''; - }, - - focus: function(element) { - $(element).focus(); - }, - - present: function() { - for (var i = 0; i < arguments.length; i++) - if ($(arguments[i]).value == '') return false; - return true; - }, - - select: function(element) { - $(element).select(); - }, - - activate: function(element) { - $(element).focus(); - $(element).select(); - } -} - -/*--------------------------------------------------------------------------*/ - -var Form = { - serialize: function(form) { - var elements = Form.getElements($(form)); - var queryComponents = new Array(); - - for (var i = 0; i < elements.length; i++) { - var queryComponent = Form.Element.serialize(elements[i]); - if (queryComponent) - queryComponents.push(queryComponent); - } - - return queryComponents.join('&'); - }, - - getElements: function(form) { - var form = $(form); - var elements = new Array(); - - for (tagName in Form.Element.Serializers) { - var tagElements = form.getElementsByTagName(tagName); - for (var j = 0; j < tagElements.length; j++) - elements.push(tagElements[j]); - } - return elements; - }, - - getInputs: function(form, typeName, name) { - var form = $(form); - var inputs = form.getElementsByTagName('input'); - - if (!typeName && !name) - return inputs; - - var matchingInputs = new Array(); - for (var i = 0; i < inputs.length; i++) { - var input = inputs[i]; - if ((typeName && input.type != typeName) || - (name && input.name != name)) - continue; - matchingInputs.push(input); - } - - return matchingInputs; - }, - - disable: function(form) { - var elements = Form.getElements(form); - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - element.blur(); - element.disabled = 'true'; - } - }, - - enable: function(form) { - var elements = Form.getElements(form); - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - element.disabled = ''; - } - }, - - focusFirstElement: function(form) { - var form = $(form); - var elements = Form.getElements(form); - for (var i = 0; i < elements.length; i++) { - var element = elements[i]; - if (element.type != 'hidden' && !element.disabled) { - Field.activate(element); - break; - } - } - }, - - reset: function(form) { - $(form).reset(); - } -} - -Form.Element = { - serialize: function(element) { - var element = $(element); - var method = element.tagName.toLowerCase(); - var parameter = Form.Element.Serializers[method](element); - - if (parameter) - return encodeURIComponent(parameter[0]) + '=' + - encodeURIComponent(parameter[1]); - }, - - getValue: function(element) { - var element = $(element); - var method = element.tagName.toLowerCase(); - var parameter = Form.Element.Serializers[method](element); - - if (parameter) - return parameter[1]; - } -} - -Form.Element.Serializers = { - input: function(element) { - switch (element.type.toLowerCase()) { - case 'submit': - case 'hidden': - case 'password': - case 'text': - return Form.Element.Serializers.textarea(element); - case 'checkbox': - case 'radio': - return Form.Element.Serializers.inputSelector(element); - } - return false; - }, - - inputSelector: function(element) { - if (element.checked) - return [element.name, element.value]; - }, - - textarea: function(element) { - return [element.name, element.value]; - }, - - select: function(element) { - var value = ''; - if (element.type == 'select-one') { - var index = element.selectedIndex; - if (index >= 0) - value = element.options[index].value || element.options[index].text; - } else { - value = new Array(); - for (var i = 0; i < element.length; i++) { - var opt = element.options[i]; - if (opt.selected) - value.push(opt.value || opt.text); - } - } - return [element.name, value]; - } -} - -/*--------------------------------------------------------------------------*/ - -var $F = Form.Element.getValue; - -/*--------------------------------------------------------------------------*/ - -Abstract.TimedObserver = function() {} -Abstract.TimedObserver.prototype = { - initialize: function(element, frequency, callback) { - this.frequency = frequency; - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - this.registerCallback(); - }, - - registerCallback: function() { - setInterval(this.onTimerEvent.bind(this), this.frequency * 1000); - }, - - onTimerEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - } -} - -Form.Element.Observer = Class.create(); -Form.Element.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.Observer = Class.create(); -Form.Observer.prototype = Object.extend(new Abstract.TimedObserver(), { - getValue: function() { - return Form.serialize(this.element); - } -}); - -/*--------------------------------------------------------------------------*/ - -Abstract.EventObserver = function() {} -Abstract.EventObserver.prototype = { - initialize: function(element, callback) { - this.element = $(element); - this.callback = callback; - - this.lastValue = this.getValue(); - if (this.element.tagName.toLowerCase() == 'form') - this.registerFormCallbacks(); - else - this.registerCallback(this.element); - }, - - onElementEvent: function() { - var value = this.getValue(); - if (this.lastValue != value) { - this.callback(this.element, value); - this.lastValue = value; - } - }, - - registerFormCallbacks: function() { - var elements = Form.getElements(this.element); - for (var i = 0; i < elements.length; i++) - this.registerCallback(elements[i]); - }, - - registerCallback: function(element) { - if (element.type) { - switch (element.type.toLowerCase()) { - case 'checkbox': - case 'radio': - element.target = this; - element.prev_onclick = element.onclick || Prototype.emptyFunction; - element.onclick = function() { - this.prev_onclick(); - this.target.onElementEvent(); - } - break; - case 'password': - case 'text': - case 'textarea': - case 'select-one': - case 'select-multiple': - element.target = this; - element.prev_onchange = element.onchange || Prototype.emptyFunction; - element.onchange = function() { - this.prev_onchange(); - this.target.onElementEvent(); - } - break; - } - } - } -} - -Form.Element.EventObserver = Class.create(); -Form.Element.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { - getValue: function() { - return Form.Element.getValue(this.element); - } -}); - -Form.EventObserver = Class.create(); -Form.EventObserver.prototype = Object.extend(new Abstract.EventObserver(), { - getValue: function() { - return Form.serialize(this.element); - } -}); - - -if (!window.Event) { - var Event = new Object(); -} - -Object.extend(Event, { - KEY_BACKSPACE: 8, - KEY_TAB: 9, - KEY_RETURN: 13, - KEY_ESC: 27, - KEY_LEFT: 37, - KEY_UP: 38, - KEY_RIGHT: 39, - KEY_DOWN: 40, - KEY_DELETE: 46, - - element: function(event) { - return event.target || event.srcElement; - }, - - isLeftClick: function(event) { - return (((event.which) && (event.which == 1)) || - ((event.button) && (event.button == 1))); - }, - - pointerX: function(event) { - return event.pageX || (event.clientX + - (document.documentElement.scrollLeft || document.body.scrollLeft)); - }, - - pointerY: function(event) { - return event.pageY || (event.clientY + - (document.documentElement.scrollTop || document.body.scrollTop)); - }, - - stop: function(event) { - if (event.preventDefault) { - event.preventDefault(); - event.stopPropagation(); - } else { - event.returnValue = false; - } - }, - - // find the first node with the given tagName, starting from the - // node the event was triggered on; traverses the DOM upwards - findElement: function(event, tagName) { - var element = Event.element(event); - while (element.parentNode && (!element.tagName || - (element.tagName.toUpperCase() != tagName.toUpperCase()))) - element = element.parentNode; - return element; - }, - - observers: false, - - _observeAndCache: function(element, name, observer, useCapture) { - if (!this.observers) this.observers = []; - if (element.addEventListener) { - this.observers.push([element, name, observer, useCapture]); - element.addEventListener(name, observer, useCapture); - } else if (element.attachEvent) { - this.observers.push([element, name, observer, useCapture]); - element.attachEvent('on' + name, observer); - } - }, - - unloadCache: function() { - if (!Event.observers) return; - for (var i = 0; i < Event.observers.length; i++) { - Event.stopObserving.apply(this, Event.observers[i]); - Event.observers[i][0] = null; - } - Event.observers = false; - }, - - observe: function(element, name, observer, useCapture) { - var element = $(element); - useCapture = useCapture || false; - - if (name == 'keypress' && - ((/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - || element.attachEvent)) - name = 'keydown'; - - this._observeAndCache(element, name, observer, useCapture); - }, - - stopObserving: function(element, name, observer, useCapture) { - var element = $(element); - useCapture = useCapture || false; - - if (name == 'keypress' && - ((/Konqueror|Safari|KHTML/.test(navigator.userAgent)) - || element.detachEvent)) - name = 'keydown'; - - if (element.removeEventListener) { - element.removeEventListener(name, observer, useCapture); - } else if (element.detachEvent) { - element.detachEvent('on' + name, observer); - } - } -}); - -/* prevent memory leaks in IE */ -Event.observe(window, 'unload', Event.unloadCache, false); - -var Position = { - - // set to true if needed, warning: firefox performance problems - // NOT neeeded for page scrolling, only if draggable contained in - // scrollable elements - includeScrollOffsets: false, - - // must be called before calling withinIncludingScrolloffset, every time the - // page is scrolled - prepare: function() { - this.deltaX = window.pageXOffset - || document.documentElement.scrollLeft - || document.body.scrollLeft - || 0; - this.deltaY = window.pageYOffset - || document.documentElement.scrollTop - || document.body.scrollTop - || 0; - }, - - realOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.scrollTop || 0; - valueL += element.scrollLeft || 0; - element = element.parentNode; - } while (element); - return [valueL, valueT]; - }, - - cumulativeOffset: function(element) { - var valueT = 0, valueL = 0; - do { - valueT += element.offsetTop || 0; - valueL += element.offsetLeft || 0; - element = element.offsetParent; - } while (element); - return [valueL, valueT]; - }, - - // caches x/y coordinate pair to use with overlap - within: function(element, x, y) { - if (this.includeScrollOffsets) - return this.withinIncludingScrolloffsets(element, x, y); - this.xcomp = x; - this.ycomp = y; - this.offset = this.cumulativeOffset(element); - - return (y >= this.offset[1] && - y < this.offset[1] + element.offsetHeight && - x >= this.offset[0] && - x < this.offset[0] + element.offsetWidth); - }, - - withinIncludingScrolloffsets: function(element, x, y) { - var offsetcache = this.realOffset(element); - - this.xcomp = x + offsetcache[0] - this.deltaX; - this.ycomp = y + offsetcache[1] - this.deltaY; - this.offset = this.cumulativeOffset(element); - - return (this.ycomp >= this.offset[1] && - this.ycomp < this.offset[1] + element.offsetHeight && - this.xcomp >= this.offset[0] && - this.xcomp < this.offset[0] + element.offsetWidth); - }, - - // within must be called directly before - overlap: function(mode, element) { - if (!mode) return 0; - if (mode == 'vertical') - return ((this.offset[1] + element.offsetHeight) - this.ycomp) / - element.offsetHeight; - if (mode == 'horizontal') - return ((this.offset[0] + element.offsetWidth) - this.xcomp) / - element.offsetWidth; - }, - - clone: function(source, target) { - source = $(source); - target = $(target); - target.style.position = 'absolute'; - var offsets = this.cumulativeOffset(source); - target.style.top = offsets[1] + 'px'; - target.style.left = offsets[0] + 'px'; - target.style.width = source.offsetWidth + 'px'; - target.style.height = source.offsetHeight + 'px'; - } -} diff --git a/lucene/site/src/documentation/skins/common/skinconf.xsl b/lucene/site/src/documentation/skins/common/skinconf.xsl deleted file mode 100644 index 5d1132086f1..00000000000 --- a/lucene/site/src/documentation/skins/common/skinconf.xsl +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - true - - - true - - - true - - - true - - - true - - - false - - - false - - - true - - - .at. - - - true - - - - - - - - - - - - - - - Page 1 - - - - - true - - - - - - - - - - Built with Apache Forrest - http://forrest.apache.org/ - images/built-with-forrest-button.png - 88 - 31 - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/translations/CommonMessages_de.xml b/lucene/site/src/documentation/skins/common/translations/CommonMessages_de.xml deleted file mode 100644 index bc461196e64..00000000000 --- a/lucene/site/src/documentation/skins/common/translations/CommonMessages_de.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - Schriftgrösse: - Zuletzt veröffentlicht: - Suche: - Suche auf der Seite mit - diff --git a/lucene/site/src/documentation/skins/common/translations/CommonMessages_en_US.xml b/lucene/site/src/documentation/skins/common/translations/CommonMessages_en_US.xml deleted file mode 100644 index 88dfe143118..00000000000 --- a/lucene/site/src/documentation/skins/common/translations/CommonMessages_en_US.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - Font size: - Last Published: - Search - Search site with - diff --git a/lucene/site/src/documentation/skins/common/translations/CommonMessages_es.xml b/lucene/site/src/documentation/skins/common/translations/CommonMessages_es.xml deleted file mode 100644 index 63be6712b30..00000000000 --- a/lucene/site/src/documentation/skins/common/translations/CommonMessages_es.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - Tamaño del texto: - Fecha de publicación: - Buscar - Buscar en - diff --git a/lucene/site/src/documentation/skins/common/translations/CommonMessages_fr.xml b/lucene/site/src/documentation/skins/common/translations/CommonMessages_fr.xml deleted file mode 100644 index 622569a4ffa..00000000000 --- a/lucene/site/src/documentation/skins/common/translations/CommonMessages_fr.xml +++ /dev/null @@ -1,23 +0,0 @@ - - - - Taille : - Dernière publication : - Rechercher - Rechercher sur le site avec - diff --git a/lucene/site/src/documentation/skins/common/xslt/fo/document-to-fo.xsl b/lucene/site/src/documentation/skins/common/xslt/fo/document-to-fo.xsl deleted file mode 100644 index 6bae24b043f..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/fo/document-to-fo.xsl +++ /dev/null @@ -1,1014 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 841mm - 594mm - 420mm - 297mm - 210mm - 148mm - 7.25in - 8.5in - 11in - 8.5in - 8.5in - 8.5in - 11in - 8.5in - - - - - 1189mm - 841mm - 594mm - 420mm - 297mm - 210mm - 10.5in - 13in - 17in - 14in - 10.83in - 17in - 11in - - - - - - - - - - 1189mm - 841mm - 594mm - 420mm - 297mm - 210mm - 10.5in - 13in - 17in - 14in - 10.83in - 17in - 11in - - - - - 841mm - 594mm - 420mm - 297mm - 210mm - 148mm - 7.25in - 8.5in - 11in - 8.5in - 8.5in - 8.5in - 11in - 8.5in - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - start - - - - - - - - - - - - - - - end - - - - - - - - - - - - - - start - - - - - - - - - - - - - - - - - - - - - - - - - NOTICE: - - - - - - - - 0 - - - - - - - - - - - - - - - - - - - - - - - - - - -. - - - - - -pt - - - - - - -   - - - - - - - - - - - - 0 - - - - - - - - - - - by - - - , - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6pt" - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 6pt - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Warning: - - - - - - - - - - - - - - - - - Note: - - - - - - - - - - - - - FIXME (): - - - - - - - - - - - - - - - - - - - () - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - in - - - - - - - - - - - - - - - - - - - - Table - - -: - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Table of contents - - - - page - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - [] - - - - - - - - - - - - page - - - - page - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/fo/footerinfo.xsl b/lucene/site/src/documentation/skins/common/xslt/fo/footerinfo.xsl deleted file mode 100644 index c5ba5c9460e..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/fo/footerinfo.xsl +++ /dev/null @@ -1,70 +0,0 @@ - - - - - - - - - - - - -Copyright © -   - All rights reserved. - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/fo/pdfoutline.xsl b/lucene/site/src/documentation/skins/common/xslt/fo/pdfoutline.xsl deleted file mode 100644 index acdc6ac9cf1..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/fo/pdfoutline.xsl +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/html/book-to-menu.xsl b/lucene/site/src/documentation/skins/common/xslt/html/book-to-menu.xsl deleted file mode 100644 index 228b57e5c4d..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/book-to-menu.xsl +++ /dev/null @@ -1,139 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  7. - - - - - - - - -
  8. -
    - - - - - -
    diff --git a/lucene/site/src/documentation/skins/common/xslt/html/document-to-html.xsl b/lucene/site/src/documentation/skins/common/xslt/html/document-to-html.xsl deleted file mode 100644 index d4496e07a7e..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/document-to-html.xsl +++ /dev/null @@ -1,374 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -
    - - - - -
    - -

    - -

    -
    -
    - -

    - -

    -
    - - - - -
    - - -; - - -
    -
    -
    - -
    - - - - - - - - - - - - - - - - ^ - - - - - - - -15 - - -0 - - - -
    - -
    - - - -
    - - - - - -
    - - - - - - Note - Warning - Fixme () - -
    -
    - -
    -
    -
    - -
    - -Notice: - -
    -
    - - - - _top - - - _blank - - - - - - - - - - - - - - -
    - - -
    -
    - - -
    -
    -      
    -      
    -
    -    
    -
    - - - - - - - - - - - - - - codefrag - - - - - - - -
    - - - - -
    -
    - - - - - - - - -
    -
    - - - - - - - -
    - -
    - - - - - - - - - by - , - - - - - - - - - - - - - - version - - - - - - - - - v - - - - - - - - -

    - -Type: - -

    -
    - -

    - -

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - true - - - - - - - - - - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/html/dotdots.xsl b/lucene/site/src/documentation/skins/common/xslt/html/dotdots.xsl deleted file mode 100644 index 2ff9d1f3266..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/dotdots.xsl +++ /dev/null @@ -1,73 +0,0 @@ - - - - - - - - - - -../ - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/html/pathutils.xsl b/lucene/site/src/documentation/skins/common/xslt/html/pathutils.xsl deleted file mode 100644 index c1639a4b4f2..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/pathutils.xsl +++ /dev/null @@ -1,231 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/html/renderlogo.xsl b/lucene/site/src/documentation/skins/common/xslt/html/renderlogo.xsl deleted file mode 100644 index 698156b9ba2..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/renderlogo.xsl +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - {$name} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/html/site-to-xhtml.xsl b/lucene/site/src/documentation/skins/common/xslt/html/site-to-xhtml.xsl deleted file mode 100644 index 2f8b15cd399..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/site-to-xhtml.xsl +++ /dev/null @@ -1,388 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - > - - - > - - - - - - - - - - - - - - - - - - - - - - - - Valid HTML 4.01! - - - - - - - Valid HTML 4.01! - Valid CSS! - - - - - - - PDF -
    - PDF
    - -
    -
    - - - - - TXT -
    - TXT
    - -
    -
    - - - - - POD -
    - POD
    - -
    -
    - - - - - XML -
    - XML
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      - -
    • - - - - - -
    • -
      -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    - - - - - - - - - - - - - -
    -
    - - - - - - - - - - 2005 - yyyy - - - - - - - - - - - - - - -
    diff --git a/lucene/site/src/documentation/skins/common/xslt/html/split.xsl b/lucene/site/src/documentation/skins/common/xslt/html/split.xsl deleted file mode 100644 index 14c88e72cb4..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/split.xsl +++ /dev/null @@ -1,124 +0,0 @@ - - - - - - - - - 40 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/html/strip_namespaces.xsl b/lucene/site/src/documentation/skins/common/xslt/html/strip_namespaces.xsl deleted file mode 100644 index 47dec6a1788..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/strip_namespaces.xsl +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/html/tab-to-menu.xsl b/lucene/site/src/documentation/skins/common/xslt/html/tab-to-menu.xsl deleted file mode 100644 index 257d2919f70..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/tab-to-menu.xsl +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - - - - - - | - - - - - - - - | - - - - - - - - - - - - - - - - - - - - - - -
    - -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    diff --git a/lucene/site/src/documentation/skins/common/xslt/html/tabutils.xsl b/lucene/site/src/documentation/skins/common/xslt/html/tabutils.xsl deleted file mode 100644 index 0caaaf4c81f..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/html/tabutils.xsl +++ /dev/null @@ -1,98 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - -/ - - - -/ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/common/xslt/svg/document-to-svg.xsl b/lucene/site/src/documentation/skins/common/xslt/svg/document-to-svg.xsl deleted file mode 100644 index 08ca5ba1b7a..00000000000 --- a/lucene/site/src/documentation/skins/common/xslt/svg/document-to-svg.xsl +++ /dev/null @@ -1,45 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/lucene/css/basic.css b/lucene/site/src/documentation/skins/lucene/css/basic.css deleted file mode 100644 index 4ed58b99ae7..00000000000 --- a/lucene/site/src/documentation/skins/lucene/css/basic.css +++ /dev/null @@ -1,166 +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. -*/ -/** - * General - */ - -img { border: 0; } - -#content table { - border: 0; - width: 100%; -} -/*Hack to get IE to render the table at 100%*/ -* html #content table { margin-left: -3px; } - -#content th, -#content td { - margin: 0; - padding: 0; - vertical-align: top; -} - -.clearboth { - clear: both; -} - -.note, .warning, .fixme { - border: solid black 1px; - margin: 1em 3em; -} - -.note .label { - background: #369; - color: white; - font-weight: bold; - padding: 5px 10px; -} -.note .content { - background: #F0F0FF; - color: black; - line-height: 120%; - font-size: 90%; - padding: 5px 10px; -} -.warning .label { - background: #C00; - color: white; - font-weight: bold; - padding: 5px 10px; -} -.warning .content { - background: #FFF0F0; - color: black; - line-height: 120%; - font-size: 90%; - padding: 5px 10px; -} -.fixme .label { - background: #C6C600; - color: black; - font-weight: bold; - padding: 5px 10px; -} -.fixme .content { - padding: 5px 10px; -} - -/** - * Typography - */ - -body { - font-family: verdana, "Trebuchet MS", arial, helvetica, sans-serif; - font-size: 100%; -} - -#content { - font-family: Georgia, Palatino, Times, serif; - font-size: 95%; -} -#tabs { - font-size: 70%; -} -#menu { - font-size: 80%; -} -#footer { - font-size: 70%; -} - -h1, h2, h3, h4, h5, h6 { - font-family: "Trebuchet MS", verdana, arial, helvetica, sans-serif; - font-weight: bold; - margin-top: 1em; - margin-bottom: .5em; -} - -h1 { - margin-top: 0; - margin-bottom: 1em; - font-size: 1.4em; -} -#content h1 { - font-size: 160%; - margin-bottom: .5em; -} -#menu h1 { - margin: 0; - padding: 10px; - background: #336699; - color: white; -} -h2 { font-size: 120%; } -h3 { font-size: 100%; } -h4 { font-size: 90%; } -h5 { font-size: 80%; } -h6 { font-size: 75%; } - -p { - line-height: 120%; - text-align: left; - margin-top: .5em; - margin-bottom: 1em; -} - -#content li, -#content th, -#content td, -#content li ul, -#content li ol{ - margin-top: .5em; - margin-bottom: .5em; -} - - -#content li li, -#minitoc-area li{ - margin-top: 0em; - margin-bottom: 0em; -} - -#content .attribution { - text-align: right; - font-style: italic; - font-size: 85%; - margin-top: 1em; -} - -.codefrag { - font-family: "Courier New", Courier, monospace; - font-size: 110%; -} diff --git a/lucene/site/src/documentation/skins/lucene/css/print.css b/lucene/site/src/documentation/skins/lucene/css/print.css deleted file mode 100644 index 8916b9fc01e..00000000000 --- a/lucene/site/src/documentation/skins/lucene/css/print.css +++ /dev/null @@ -1,54 +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. -*/ -body { - font-family: Georgia, Palatino, serif; - font-size: 12pt; - background: white; -} - -#tabs, -#menu, -#content .toc { - display: none; -} - -#content { - width: auto; - padding: 0; - float: none !important; - color: black; - background: inherit; -} - -a:link, a:visited { - color: #336699; - background: inherit; - text-decoration: underline; -} - -#top .logo { - padding: 0; - margin: 0 0 2em 0; -} - -#footer { - margin-top: 4em; -} - -acronym { - border: 0; -} diff --git a/lucene/site/src/documentation/skins/lucene/css/profile.css.xslt b/lucene/site/src/documentation/skins/lucene/css/profile.css.xslt deleted file mode 100644 index a1dcb23e49c..00000000000 --- a/lucene/site/src/documentation/skins/lucene/css/profile.css.xslt +++ /dev/null @@ -1,182 +0,0 @@ - - - - - - - - -#top { background-color: ;} - - -#top .header .current { background-color: ;} -#top .header .current a:link { color: ; } -#top .header .current a:visited { color: ; } -#top .header .current a:hover { color: ; } - - -#tabs li { background-color: ;} -#tabs li a:link { color: ; } -#tabs li a:visited { color: ; } -#tabs li a:hover { color: ; } - - -#level2tabs a.selected { background-color: ;} -#level2tabs a:link { color: ; } -#level2tabs a:visited { color: ; } -#level2tabs a:hover { color: ; } - - -#level2tabs { background-color: ;} -#level2tabs a.unselected:link { color: ; } -#level2tabs a.unselected:visited { color: ; } -#level2tabs a.unselected:hover { color: ; } - - -.heading { background-color: ;} - - -.boxed { background-color: ;} -.underlined_5 {border-bottom: solid 5px ;} -.underlined_10 {border-bottom: solid 10px ;} -table caption { -background-color: ; -color: ; -} - - -#feedback { -color: ; -background: ; -text-align: ; -} -#feedback #feedbackto { -color: ; -} - - -#main .breadtrail { -background: ; -color: ; -} -#main .breadtrail a:link { color: ; } -#main .breadtrail a:visited { color: ; } -#main .breadtrail a:hover { color: ; } -#top .breadtrail { -background: ; -color: ; -} -#top .breadtrail a:link { color: ; } -#top .breadtrail a:visited { color: ; } -#top .breadtrail a:hover { color: ; } - - - -#publishedStrip { -color: ; -background: ; -} - - - -#publishedStrip { -color: ; -background: ; -} - - -#menu .menupagetitle { background-color: ; - color: ;} - - -#menu { border-color: ;} -#menu .menupagetitle { border-color: ;} -#menu .menupageitemgroup { border-color: ;} - - -#menu { background-color: ;} -#menu { color: ;} -#menu a:link { color: ;} -#menu a:visited { color: ;} -#menu a:hover { -background-color: ; -color: ;} - - -#menu .menupageitemgroup { -background-color: ; -} -#menu .menupageitem { -color: ; -} -#menu .menupageitem a:link { color: ;} -#menu .menupageitem a:visited { color: ;} -#menu .menupageitem a:hover { -background-color: ; -color: ; -} - - -#menu h1 { -color: ; -background-color: ; -} - - -#top .searchbox { -background-color: ; -color: ; -} - - -body{ -background-color: ; -color: ; -} -a:link { color:} -a:visited { color:} -a:hover { color:} - - - -#footer { background-color: ;} - - - -.highlight { background-color: ;} - - -.fixme { border-color: ;} - - -.note { border-color: ;} - - -.warning { border-color: ;} - - -.code { border-color: ;} - - -.ForrestTable { background-color: ;} - - -.ForrestTable td { background-color: ;} - - diff --git a/lucene/site/src/documentation/skins/lucene/css/screen.css b/lucene/site/src/documentation/skins/lucene/css/screen.css deleted file mode 100644 index aa8c457cb30..00000000000 --- a/lucene/site/src/documentation/skins/lucene/css/screen.css +++ /dev/null @@ -1,587 +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. -*/ -body { margin: 0px 0px 0px 0px; font-family: Verdana, Helvetica, sans-serif; } - -h1 { font-size : 160%; margin: 0px 0px 0px 0px; padding: 0px; } -h2 { font-size : 140%; margin: 1em 0px 0.8em 0px; padding: 0px; font-weight : bold;} -h3 { font-size : 130%; margin: 0.8em 0px 0px 0px; padding: 0px; font-weight : bold; } -.h3 { margin: 22px 0px 3px 0px; } -h4 { font-size : 120%; margin: 0.7em 0px 0px 0px; padding: 0px; font-weight : normal; text-align: left; } -.h4 { margin: 18px 0px 0px 0px; } -h4.faq { font-size : 120%; margin: 18px 0px 0px 0px; padding: 0px; font-weight : bold; text-align: left; } -h5 { font-size : 100%; margin: 14px 0px 0px 0px; padding: 0px; font-weight : normal; text-align: left; } - -/** -* table -*/ -table .title { background-color: #000000; } -.ForrestTable { - color: #ffffff; - background-color: #7099C5; - width: 100%; - font-size : 100%; - empty-cells: show; -} -table caption { - padding-left: 5px; - color: white; - text-align: left; - font-weight: bold; - background-color: #000000; -} -.ForrestTable td { - color: black; - background-color: #f0f0ff; -} -.ForrestTable th { text-align: center; } -/** - * Page Header - */ - -#top { - position: relative; - float: left; - width: 100%; - background: #294563; /* if you want a background in the header, put it here */ -} - -#top .breadtrail { - background: #CFDCED; - color: black; - border-bottom: solid 1px white; - padding: 3px 10px; - font-size: 75%; -} -#top .breadtrail a { color: black; } - -#top .header { - float: left; - width: 100%; - background: url("images/header_white_line.gif") repeat-x bottom; -} - -#top .grouplogo { - padding: 7px 0 10px 10px; - float: left; - text-align: left; -} -#top .projectlogo { - padding: 7px 0 10px 10px; - float: left; - width: 33%; - text-align: right; -} -#top .projectlogoA1 { - padding: 7px 0 10px 10px; - float: right; -} -html>body #top .searchbox { - bottom: 0px; -} -#top .searchbox { - position: absolute; - right: 10px; - height: 42px; - font-size: 70%; - white-space: nowrap; - text-align: right; - color: white; - background-color: #000000; - z-index:0; - background-image: url(images/rc-t-l-5-1header-2searchbox-3searchbox.png); - background-repeat: no-repeat; - background-position: top left; - bottom: -1px; /* compensate for IE rendering issue */ -} - -#top .searchbox form { - padding: 5px 10px; - margin: 0; -} -#top .searchbox p { - padding: 0 0 2px 0; - margin: 0; -} -#top .searchbox input { - font-size: 100%; -} - -#tabs { - clear: both; - padding-left: 10px; - margin: 0; - list-style: none; -} -/* background: #CFDCED url("images/tab-right.gif") no-repeat right top;*/ -#tabs li { - float: left; - background-image: url(images/rc-t-r-5-1header-2tab-unselected-3tab-unselected.png); - background-repeat: no-repeat; - background-position: top right; - background-color: #000000; - margin: 0 3px 0 0; - padding: 0; -} - -/*background: url("images/tab-left.gif") no-repeat left top;*/ -#tabs li a { - float: left; - display: block; - font-family: verdana, arial, sans-serif; - text-decoration: none; - color: black; - white-space: nowrap; - background-image: url(images/rc-t-l-5-1header-2tab-unselected-3tab-unselected.png); - background-repeat: no-repeat; - background-position: top left; - padding: 5px 15px 4px; - width: .1em; /* IE/Win fix */ -} - -#tabs li a:hover { - - cursor: pointer; - text-decoration:underline; -} - -#tabs > li a { width: auto; } /* Rest of IE/Win fix */ - -/* Commented Backslash Hack hides rule from IE5-Mac \*/ -#tabs a { float: none; } -/* End IE5-Mac hack */ - -#top .header .current { - background-color: #4C6C8F; - background-image: url(images/rc-t-r-5-1header-2tab-selected-3tab-selected.png); - background-repeat: no-repeat; - background-position: top right; -} -#top .header .current a { - font-weight: bold; - padding-bottom: 5px; - color: white; - background-image: url(images/rc-t-l-5-1header-2tab-selected-3tab-selected.png); - background-repeat: no-repeat; - background-position: top left; -} -#publishedStrip { - padding-right: 10px; - padding-left: 20px; - padding-top: 3px; - padding-bottom:3px; - color: #ffffff; - font-size : 60%; - font-weight: bold; - background-color: #4C6C8F; - text-align:right; -} - -#level2tabs { -margin: 0; -float:left; -position:relative; - -} - - - -#level2tabs a:hover { - - cursor: pointer; - text-decoration:underline; - -} - -#level2tabs a{ - - cursor: pointer; - text-decoration:none; - background-image: url('images/chapter.gif'); - background-repeat: no-repeat; - background-position: center left; - padding-left: 6px; - margin-left: 6px; -} - -/* -* border-top: solid #4C6C8F 15px; -*/ -#main { - position: relative; - background: white; - clear:both; -} -#main .breadtrail { - clear:both; - position: relative; - background: #CFDCED; - color: black; - border-bottom: solid 1px black; - border-top: solid 1px black; - padding: 0px 180px; - font-size: 75%; - z-index:10; -} -/** -* Round corner -*/ -#roundtop { - background-image: url(images/rc-t-r-15-1body-2menu-3menu.png); - background-repeat: no-repeat; - background-position: top right; -} - -#roundbottom { - background-image: url(images/rc-b-r-15-1body-2menu-3menu.png); - background-repeat: no-repeat; - background-position: top right; -} - -img.corner { - width: 15px; - height: 15px; - border: none; - display: block !important; -} - -.roundtopsmall { - background-image: url(images/rc-t-r-5-1header-2searchbox-3searchbox.png); - background-repeat: no-repeat; - background-position: top right; -} - -#roundbottomsmall { - background-image: url(images/rc-b-r-5-1header-2tab-selected-3tab-selected.png); - background-repeat: no-repeat; - background-position: top right; -} - -img.cornersmall { - width: 5px; - height: 5px; - border: none; - display: block !important; -} -/** - * Side menu - */ -#menu a { font-weight: normal; text-decoration: none;} -#menu a:visited { font-weight: normal; } -#menu a:active { font-weight: normal; } -#menu a:hover { font-weight: normal; text-decoration:underline;} - -#menuarea { width:10em;} -#menu { - position: relative; - float: left; - width: 160px; - padding-top: 0px; - top:-18px; - left:10px; - z-index: 20; - background-color: #f90; - font-size : 70%; - -} - -.menutitle { - cursor:pointer; - padding: 3px 12px; - margin-left: 10px; - background-image: url('images/chapter.gif'); - background-repeat: no-repeat; - background-position: center left; - font-weight : bold; - - -} - -.menutitle:hover{text-decoration:underline;cursor: pointer;} - -#menu .menuitemgroup { - margin: 0px 0px 6px 8px; - padding: 0px; - font-weight : bold; } - -#menu .selectedmenuitemgroup{ - margin: 0px 0px 0px 8px; - padding: 0px; - font-weight : normal; - - } - -#menu .menuitem { - padding: 2px 0px 1px 13px; - background-image: url('images/page.gif'); - background-repeat: no-repeat; - background-position: center left; - font-weight : normal; - margin-left: 10px; -} - -#menu .menupage { - margin: 2px 0px 1px 10px; - padding: 0px 3px 0px 12px; - background-image: url('images/page.gif'); - background-repeat: no-repeat; - background-position: center left; - font-style : normal; -} -#menu .menupagetitle { - padding: 0px 0px 0px 1px; - font-style : normal; - border-style: solid; - border-width: 1px; - margin-right: 10px; - -} -#menu .menupageitemgroup { - padding: 3px 0px 4px 6px; - font-style : normal; - border-bottom: 1px solid ; - border-left: 1px solid ; - border-right: 1px solid ; - margin-right: 10px; -} -#menu .menupageitem { - font-style : normal; - font-weight : normal; - border-width: 0px; - font-size : 90%; -} -#menu #credit { - text-align: center; -} -#menu #credit2 { - text-align: center; - padding: 3px 3px 3px 3px; - background-color: #ffffff; -} -#menu .searchbox { - text-align: center; -} -#menu .searchbox form { - padding: 3px 3px; - margin: 0; -} -#menu .searchbox input { - font-size: 100%; -} - -#content { - padding: 20px 20px 20px 180px; - margin: 0; - font : small Verdana, Helvetica, sans-serif; - font-size : 80%; -} - -#content ul { - margin: 0; - padding: 0 25px; -} -#content li { - padding: 0 5px; -} -#feedback { - color: black; - background: #CFDCED; - text-align:center; - margin-top: 5px; -} -#feedback #feedbackto { - font-size: 90%; - color: black; -} -#footer { - clear: both; - position: relative; /* IE bugfix (http://www.dracos.co.uk/web/css/ie6floatbug/) */ - width: 100%; - background: #CFDCED; - border-top: solid 1px #4C6C8F; - color: black; -} -#footer .copyright { - position: relative; /* IE bugfix cont'd */ - padding: 5px; - margin: 0; - width: 45%; -} -#footer .lastmodified { - position: relative; /* IE bugfix cont'd */ - float: right; - width: 45%; - padding: 5px; - margin: 0; - text-align: right; -} -#footer a { color: white; } - -#footer #logos { - text-align: left; -} - - -/** - * Misc Styles - */ - -acronym { cursor: help; } -.boxed { background-color: #a5b6c6;} -.underlined_5 {border-bottom: solid 5px #4C6C8F;} -.underlined_10 {border-bottom: solid 10px #4C6C8F;} -/* ==================== snail trail ============================ */ - -.trail { - position: relative; /* IE bugfix cont'd */ - font-size: 70%; - text-align: right; - float: right; - margin: -10px 5px 0px 5px; - padding: 0; -} - -#motd-area { - position: relative; /* IE bugfix cont'd */ - float: right; - width: 35%; - background-color: #f0f0ff; - border-top: solid 1px #4C6C8F; - border-bottom: solid 1px #4C6C8F; - margin-bottom: 15px; - margin-left: 15px; - margin-right: 10%; - padding-bottom: 5px; - padding-top: 5px; -} - -#minitoc-area { - border-top: solid 1px #4C6C8F; - border-bottom: solid 1px #4C6C8F; - margin: 15px 10% 5px 15px; - /* margin-bottom: 15px; - margin-left: 15px; - margin-right: 10%;*/ - padding-bottom: 7px; - padding-top: 5px; -} -.minitoc { - list-style-image: url('images/current.gif'); - font-weight: normal; -} - -li p { - margin: 0; - padding: 0; -} - -.pdflink { - position: relative; /* IE bugfix cont'd */ - float: right; - margin: 0px 5px; - padding: 0; -} -.pdflink br { - margin-top: -10px; - padding-left: 1px; -} -.pdflink a { - display: block; - font-size: 70%; - text-align: center; - margin: 0; - padding: 0; -} - -.pdflink img { - display: block; - height: 16px; - width: 16px; -} -.xmllink { - position: relative; /* IE bugfix cont'd */ - float: right; - margin: 0px 5px; - padding: 0; -} -.xmllink br { - margin-top: -10px; - padding-left: 1px; -} -.xmllink a { - display: block; - font-size: 70%; - text-align: center; - margin: 0; - padding: 0; -} - -.xmllink img { - display: block; - height: 16px; - width: 16px; -} -.podlink { - position: relative; /* IE bugfix cont'd */ - float: right; - margin: 0px 5px; - padding: 0; -} -.podlink br { - margin-top: -10px; - padding-left: 1px; -} -.podlink a { - display: block; - font-size: 70%; - text-align: center; - margin: 0; - padding: 0; -} - -.podlink img { - display: block; - height: 16px; - width: 16px; -} - -.printlink { - position: relative; /* IE bugfix cont'd */ - float: right; -} -.printlink br { - margin-top: -10px; - padding-left: 1px; -} -.printlink a { - display: block; - font-size: 70%; - text-align: center; - margin: 0; - padding: 0; -} -.printlink img { - display: block; - height: 16px; - width: 16px; -} - -p.instruction { - display: list-item; - list-style-image: url('../images/instruction_arrow.png'); - list-style-position: outside; - margin-left: 2em; -} diff --git a/lucene/site/src/documentation/skins/lucene/note.txt b/lucene/site/src/documentation/skins/lucene/note.txt deleted file mode 100644 index d34c8db5ef4..00000000000 --- a/lucene/site/src/documentation/skins/lucene/note.txt +++ /dev/null @@ -1,50 +0,0 @@ -Notes for developer: - ---Legend------------------- -TODO -> blocker -DONE -> blocker -ToDo -> enhancement bug -done -> enhancement bug - ---Issues------------------- -- the corner images should be rendered through svg with the header color. --> DONE --> ToDo: get rid of the images and use only divs! - -- the menu points should be displayed "better". --> DONE --- Use the krysalis-site menu approach for the overall menu display. --> DONE --- Use the old lenya innermenu approch to further enhance the menu . --> DONE - -- the content area needs some attention. --> DONE --- introduce the heading scheme from krysalis () --> DONE --> ToDo: make box with round corners --> done: make underlined with variable border height --> ToDo: make underline with bottom round corner --- introduce the toc for each html-page --> DONE --- introduce the external-link-images. --> DONE - -- the publish note should be where now only a border is. -Like
    --> DONE -, but make it configurable. --> DONE -- footer needs some attention --> DONE --- the footer do not have the color profile! Enable it! --> DONE --- the footer should as well contain a feedback link. -See http://issues.apache.org/eyebrowse/ReadMsg?listName=forrest-user@xml.apache.org&msgNo=71 --> DONE - -- introduce credits alternativ location --> DONE - -- border for published / breadtrail / menu /tab divs --> ToDo \ No newline at end of file diff --git a/lucene/site/src/documentation/skins/lucene/skinconf.xsl b/lucene/site/src/documentation/skins/lucene/skinconf.xsl deleted file mode 100644 index 2f8df12903c..00000000000 --- a/lucene/site/src/documentation/skins/lucene/skinconf.xsl +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/lucene/site/src/documentation/skins/lucene/xslt/fo/document-to-fo.xsl b/lucene/site/src/documentation/skins/lucene/xslt/fo/document-to-fo.xsl deleted file mode 100644 index 0fb2a23731b..00000000000 --- a/lucene/site/src/documentation/skins/lucene/xslt/fo/document-to-fo.xsl +++ /dev/null @@ -1,22 +0,0 @@ - - - - - diff --git a/lucene/site/src/documentation/skins/lucene/xslt/html/book-to-menu.xsl b/lucene/site/src/documentation/skins/lucene/xslt/html/book-to-menu.xsl deleted file mode 100644 index 5242fc85152..00000000000 --- a/lucene/site/src/documentation/skins/lucene/xslt/html/book-to-menu.xsl +++ /dev/null @@ -1,53 +0,0 @@ - - - - - - - - - -
  9. - -

    -
      - -
  10. -
    - - -
  11. -
    - -
    - -
    -
    - - - - - -
    diff --git a/lucene/site/src/documentation/skins/lucene/xslt/html/document-to-html.xsl b/lucene/site/src/documentation/skins/lucene/xslt/html/document-to-html.xsl deleted file mode 100644 index 2d337bf0d60..00000000000 --- a/lucene/site/src/documentation/skins/lucene/xslt/html/document-to-html.xsl +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - - - - -
    -