null+****@clear*****
null+****@clear*****
2011年 10月 29日 (土) 23:45:43 JST
Kouhei Sutou 2011-10-29 14:45:43 +0000 (Sat, 29 Oct 2011) New Revision: 860a574036ced04bcdf6890ab6fa3e032787040e Log: [doc] remove no longer needed files. Removed files: doc/en/Makefile.am doc/en/make.bat doc/en/sphinx2github.sh doc/ja/Makefile.am doc/ja/make.bat doc/ja/source/characteristic.rst doc/ja/source/conf.py doc/ja/source/developer.rst doc/ja/source/developer/debug.rst doc/ja/source/developer/release.rst doc/ja/source/images/storage-mode.png doc/ja/source/images/storage-mode.svg doc/ja/source/images/wrapper-mode.png doc/ja/source/images/wrapper-mode.svg doc/ja/source/index.rst doc/ja/source/install.rst doc/ja/source/news.rst doc/ja/source/reference.rst doc/ja/source/userguide.rst doc/ja/source/userguide/storage.rst doc/ja/source/userguide/wrapper.rst doc/ja/sphinx2github.sh Deleted: doc/en/Makefile.am (+0 -182) 100644 =================================================================== --- doc/en/Makefile.am 2011-10-29 14:43:34 +0000 (6279026) +++ /dev/null @@ -1,182 +0,0 @@ -docdir = $(pkgdatadir)/doc -doc_endir = $(docdir)/en - -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -PAPER = -BUILDDIR = . - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -# ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) source - -RUN_SPHINX_BUILD = env VERSION=$(VERSION) $(SPHINX_BUILD) - -.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest - -help: - @echo "Please use \`make <target>' where <target> is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean-local: - -rm -rf $(BUILDDIR)/doctree - -rm -rf $(BUILDDIR)/html - -rm -rf $(BUILDDIR)/dirhtml - -rm -rf $(BUILDDIR)/pickle - -rm -rf $(BUILDDIR)/json - -rm -rf $(BUILDDIR)/htmlhelp - -rm -rf $(BUILDDIR)/qthelp - -rm -rf $(BUILDDIR)/latex - -rm -rf $(BUILDDIR)/changes - -rm -rf $(BUILDDIR)/linkcheck - -rm -rf $(BUILDDIR)/doctest - -rm -rf $(BUILDDIR)/pdf - -html-local: - $(RUN_SPHINX_BUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(RUN_SPHINX_BUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -pickle: - $(RUN_SPHINX_BUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(RUN_SPHINX_BUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(RUN_SPHINX_BUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(RUN_SPHINX_BUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/groonga.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/groonga.qhc" - -latex: - $(RUN_SPHINX_BUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ - "run these through (pdf)latex." - -changes: - $(RUN_SPHINX_BUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(RUN_SPHINX_BUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(RUN_SPHINX_BUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -pdf-local: - $(RUN_SPHINX_BUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf - @echo - @echo "Build finished. The PDF files are in $(BUILDDIR)/pdf." - -if ENABLE_DOCUMENT -dist-hook: - @touch $(distdir)/html-build-stamp - -nobase_dist_doc_en_DATA = \ - $(source_files) \ - $(html_files) - -# find source -type f -not -name '*.pyc' | sort | sed -e 's,^,\t,g' -source_files = \ - source/characteristic.rst \ - source/conf.py \ - source/developer.rst \ - source/developer/debug.rst \ - source/developer/release.rst \ - source/index.rst \ - source/install.rst \ - source/news.rst \ - source/reference.rst \ - source/userguide.rst \ - source/userguide/storage.rst \ - source/userguide/wrapper.rst - -# find html -type f | sort | sed -e 's,^,\t,g' -html_files = \ - html/.buildinfo \ - html/_images/storage-mode.png \ - html/_images/wrapper-mode.png \ - html/_sources/characteristic.txt \ - html/_sources/developer.txt \ - html/_sources/developer/debug.txt \ - html/_sources/developer/release.txt \ - html/_sources/index.txt \ - html/_sources/install.txt \ - html/_sources/news.txt \ - html/_sources/reference.txt \ - html/_sources/userguide.txt \ - html/_sources/userguide/storage.txt \ - html/_sources/userguide/wrapper.txt \ - html/_static/basic.css \ - html/_static/default.css \ - html/_static/doctools.js \ - html/_static/file.png \ - html/_static/jquery.js \ - html/_static/minus.png \ - html/_static/plus.png \ - html/_static/pygments.css \ - html/_static/searchtools.js \ - html/_static/sidebar.js \ - html/_static/translations.js \ - html/_static/underscore.js \ - html/characteristic.html \ - html/developer.html \ - html/developer/debug.html \ - html/developer/release.html \ - html/genindex.html \ - html/index.html \ - html/install.html \ - html/news.html \ - html/objects.inv \ - html/reference.html \ - html/search.html \ - html/searchindex.js \ - html/userguide.html \ - html/userguide/storage.html \ - html/userguide/wrapper.html - -$(html_files): html-build-stamp -html-build-stamp: - $(MAKE) html -endif Deleted: doc/en/make.bat (+0 -155) 100644 =================================================================== --- doc/en/make.bat 2011-10-29 14:43:34 +0000 (692f053) +++ /dev/null @@ -1,155 +0,0 @@ - @ ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^<target^>` where ^<target^> is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. changes to make an overview over all changed/added/deprecated items - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\groongastorageengine.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\groongastorageengine.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -:end Deleted: doc/en/sphinx2github.sh (+0 -27) 100755 =================================================================== --- doc/en/sphinx2github.sh 2011-10-29 14:43:34 +0000 (0075987) +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -rename() -{ - old_name=$1 - new_name=$2 - - if [ -d $old_name ]; then - rm -rf $new_name - mv $old_name $new_name - fi -} - -cd html - -rename _static static -rename _sources sources -rename _images images - -file_names=$(find . -name "*.html") -for file_name in $file_names; do - sed -e 's/_static/static/g' $file_name | - sed -e 's/_sources/sources/g' | - sed -e 's/_images/images/g' > buf.txt - cp buf.txt $file_name - rm -f buf.txt -done Deleted: doc/ja/Makefile.am (+0 -186) 100644 =================================================================== --- doc/ja/Makefile.am 2011-10-29 14:43:34 +0000 (3387c44) +++ /dev/null @@ -1,186 +0,0 @@ -docdir = $(pkgdatadir)/doc -doc_jadir = $(docdir)/ja - -# Makefile for Sphinx documentation -# - -# You can set these variables from the command line. -SPHINXOPTS = -PAPER = -BUILDDIR = . - -# Internal variables. -PAPEROPT_a4 = -D latex_paper_size=a4 -PAPEROPT_letter = -D latex_paper_size=letter -# ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source -ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(SPHINXOPTS) source - -RUN_SPHINX_BUILD = env VERSION=$(VERSION) $(SPHINX_BUILD) - -.PHONY: help clean html dirhtml pickle json htmlhelp qthelp latex changes linkcheck doctest - -help: - @echo "Please use \`make <target>' where <target> is one of" - @echo " html to make standalone HTML files" - @echo " dirhtml to make HTML files named index.html in directories" - @echo " pickle to make pickle files" - @echo " json to make JSON files" - @echo " htmlhelp to make HTML files and a HTML help project" - @echo " qthelp to make HTML files and a qthelp project" - @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" - @echo " changes to make an overview of all changed/added/deprecated items" - @echo " linkcheck to check all external links for integrity" - @echo " doctest to run all doctests embedded in the documentation (if enabled)" - -clean-local: - -rm -rf $(BUILDDIR)/doctree - -rm -rf $(BUILDDIR)/html - -rm -rf $(BUILDDIR)/dirhtml - -rm -rf $(BUILDDIR)/pickle - -rm -rf $(BUILDDIR)/json - -rm -rf $(BUILDDIR)/htmlhelp - -rm -rf $(BUILDDIR)/qthelp - -rm -rf $(BUILDDIR)/latex - -rm -rf $(BUILDDIR)/changes - -rm -rf $(BUILDDIR)/linkcheck - -rm -rf $(BUILDDIR)/doctest - -rm -rf $(BUILDDIR)/pdf - -html-local: - $(RUN_SPHINX_BUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." - -dirhtml: - $(RUN_SPHINX_BUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml - @echo - @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." - -pickle: - $(RUN_SPHINX_BUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle - @echo - @echo "Build finished; now you can process the pickle files." - -json: - $(RUN_SPHINX_BUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json - @echo - @echo "Build finished; now you can process the JSON files." - -htmlhelp: - $(RUN_SPHINX_BUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp - @echo - @echo "Build finished; now you can run HTML Help Workshop with the" \ - ".hhp project file in $(BUILDDIR)/htmlhelp." - -qthelp: - $(RUN_SPHINX_BUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp - @echo - @echo "Build finished; now you can run "qcollectiongenerator" with the" \ - ".qhcp project file in $(BUILDDIR)/qthelp, like this:" - @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/groonga.qhcp" - @echo "To view the help file:" - @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/groonga.qhc" - -latex: - $(RUN_SPHINX_BUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex - @echo - @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." - @echo "Run \`make all-pdf' or \`make all-ps' in that directory to" \ - "run these through (pdf)latex." - -changes: - $(RUN_SPHINX_BUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes - @echo - @echo "The overview file is in $(BUILDDIR)/changes." - -linkcheck: - $(RUN_SPHINX_BUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck - @echo - @echo "Link check complete; look for any errors in the above output " \ - "or in $(BUILDDIR)/linkcheck/output.txt." - -doctest: - $(RUN_SPHINX_BUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest - @echo "Testing of doctests in the sources finished, look at the " \ - "results in $(BUILDDIR)/doctest/output.txt." - -pdf-local: - $(RUN_SPHINX_BUILD) -b pdf $(ALLSPHINXOPTS) $(BUILDDIR)/pdf - @echo - @echo "Build finished. The PDF files are in $(BUILDDIR)/pdf." - -if ENABLE_DOCUMENT -dist-hook: - @touch $(distdir)/html-build-stamp - -nobase_dist_doc_ja_DATA = \ - $(source_files) \ - $(html_files) - -# find source -type f -not -name '*.pyc' | sort | sed -e 's,^,\t,g' -source_files = \ - source/images/storage-mode.png \ - source/images/storage-mode.svg \ - source/images/wrapper-mode.png \ - source/images/wrapper-mode.svg \ - source/characteristic.rst \ - source/conf.py \ - source/developer.rst \ - source/developer/debug.rst \ - source/developer/release.rst \ - source/index.rst \ - source/install.rst \ - source/news.rst \ - source/reference.rst \ - source/userguide.rst \ - source/userguide/storage.rst \ - source/userguide/wrapper.rst - -# find html -type f | sort | sed -e 's,^,\t,g' -html_files = \ - html/.buildinfo \ - html/_images/storage-mode.png \ - html/_images/wrapper-mode.png \ - html/_sources/characteristic.txt \ - html/_sources/developer.txt \ - html/_sources/developer/debug.txt \ - html/_sources/developer/release.txt \ - html/_sources/index.txt \ - html/_sources/install.txt \ - html/_sources/news.txt \ - html/_sources/reference.txt \ - html/_sources/userguide.txt \ - html/_sources/userguide/storage.txt \ - html/_sources/userguide/wrapper.txt \ - html/_static/basic.css \ - html/_static/default.css \ - html/_static/doctools.js \ - html/_static/file.png \ - html/_static/jquery.js \ - html/_static/minus.png \ - html/_static/plus.png \ - html/_static/pygments.css \ - html/_static/searchtools.js \ - html/_static/sidebar.js \ - html/_static/translations.js \ - html/_static/underscore.js \ - html/characteristic.html \ - html/developer.html \ - html/developer/debug.html \ - html/developer/release.html \ - html/genindex.html \ - html/index.html \ - html/install.html \ - html/news.html \ - html/objects.inv \ - html/reference.html \ - html/search.html \ - html/searchindex.js \ - html/userguide.html \ - html/userguide/storage.html \ - html/userguide/wrapper.html - -$(html_files): html-build-stamp -html-build-stamp: - $(MAKE) html -endif Deleted: doc/ja/make.bat (+0 -155) 100644 =================================================================== --- doc/ja/make.bat 2011-10-29 14:43:34 +0000 (692f053) +++ /dev/null @@ -1,155 +0,0 @@ - @ ECHO OFF - -REM Command file for Sphinx documentation - -if "%SPHINXBUILD%" == "" ( - set SPHINXBUILD=sphinx-build -) -set BUILDDIR=build -set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source -if NOT "%PAPER%" == "" ( - set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS% -) - -if "%1" == "" goto help - -if "%1" == "help" ( - :help - echo.Please use `make ^<target^>` where ^<target^> is one of - echo. html to make standalone HTML files - echo. dirhtml to make HTML files named index.html in directories - echo. singlehtml to make a single large HTML file - echo. pickle to make pickle files - echo. json to make JSON files - echo. htmlhelp to make HTML files and a HTML help project - echo. qthelp to make HTML files and a qthelp project - echo. devhelp to make HTML files and a Devhelp project - echo. epub to make an epub - echo. latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter - echo. text to make text files - echo. man to make manual pages - echo. changes to make an overview over all changed/added/deprecated items - echo. linkcheck to check all external links for integrity - echo. doctest to run all doctests embedded in the documentation if enabled - goto end -) - -if "%1" == "clean" ( - for /d %%i in (%BUILDDIR%\*) do rmdir /q /s %%i - del /q /s %BUILDDIR%\* - goto end -) - -if "%1" == "html" ( - %SPHINXBUILD% -b html %ALLSPHINXOPTS% %BUILDDIR%/html - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/html. - goto end -) - -if "%1" == "dirhtml" ( - %SPHINXBUILD% -b dirhtml %ALLSPHINXOPTS% %BUILDDIR%/dirhtml - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/dirhtml. - goto end -) - -if "%1" == "singlehtml" ( - %SPHINXBUILD% -b singlehtml %ALLSPHINXOPTS% %BUILDDIR%/singlehtml - echo. - echo.Build finished. The HTML pages are in %BUILDDIR%/singlehtml. - goto end -) - -if "%1" == "pickle" ( - %SPHINXBUILD% -b pickle %ALLSPHINXOPTS% %BUILDDIR%/pickle - echo. - echo.Build finished; now you can process the pickle files. - goto end -) - -if "%1" == "json" ( - %SPHINXBUILD% -b json %ALLSPHINXOPTS% %BUILDDIR%/json - echo. - echo.Build finished; now you can process the JSON files. - goto end -) - -if "%1" == "htmlhelp" ( - %SPHINXBUILD% -b htmlhelp %ALLSPHINXOPTS% %BUILDDIR%/htmlhelp - echo. - echo.Build finished; now you can run HTML Help Workshop with the ^ -.hhp project file in %BUILDDIR%/htmlhelp. - goto end -) - -if "%1" == "qthelp" ( - %SPHINXBUILD% -b qthelp %ALLSPHINXOPTS% %BUILDDIR%/qthelp - echo. - echo.Build finished; now you can run "qcollectiongenerator" with the ^ -.qhcp project file in %BUILDDIR%/qthelp, like this: - echo.^> qcollectiongenerator %BUILDDIR%\qthelp\groongastorageengine.qhcp - echo.To view the help file: - echo.^> assistant -collectionFile %BUILDDIR%\qthelp\groongastorageengine.ghc - goto end -) - -if "%1" == "devhelp" ( - %SPHINXBUILD% -b devhelp %ALLSPHINXOPTS% %BUILDDIR%/devhelp - echo. - echo.Build finished. - goto end -) - -if "%1" == "epub" ( - %SPHINXBUILD% -b epub %ALLSPHINXOPTS% %BUILDDIR%/epub - echo. - echo.Build finished. The epub file is in %BUILDDIR%/epub. - goto end -) - -if "%1" == "latex" ( - %SPHINXBUILD% -b latex %ALLSPHINXOPTS% %BUILDDIR%/latex - echo. - echo.Build finished; the LaTeX files are in %BUILDDIR%/latex. - goto end -) - -if "%1" == "text" ( - %SPHINXBUILD% -b text %ALLSPHINXOPTS% %BUILDDIR%/text - echo. - echo.Build finished. The text files are in %BUILDDIR%/text. - goto end -) - -if "%1" == "man" ( - %SPHINXBUILD% -b man %ALLSPHINXOPTS% %BUILDDIR%/man - echo. - echo.Build finished. The manual pages are in %BUILDDIR%/man. - goto end -) - -if "%1" == "changes" ( - %SPHINXBUILD% -b changes %ALLSPHINXOPTS% %BUILDDIR%/changes - echo. - echo.The overview file is in %BUILDDIR%/changes. - goto end -) - -if "%1" == "linkcheck" ( - %SPHINXBUILD% -b linkcheck %ALLSPHINXOPTS% %BUILDDIR%/linkcheck - echo. - echo.Link check complete; look for any errors in the above output ^ -or in %BUILDDIR%/linkcheck/output.txt. - goto end -) - -if "%1" == "doctest" ( - %SPHINXBUILD% -b doctest %ALLSPHINXOPTS% %BUILDDIR%/doctest - echo. - echo.Testing of doctests in the sources finished, look at the ^ -results in %BUILDDIR%/doctest/output.txt. - goto end -) - -:end Deleted: doc/ja/source/characteristic.rst (+0 -68) 100644 =================================================================== --- doc/ja/source/characteristic.rst 2011-10-29 14:43:34 +0000 (ef9f119) +++ /dev/null @@ -1,68 +0,0 @@ -.. highlightlang:: none - -groongaストレージエンジンの特徴 -=============================== - -groongaストレージエンジンとは ------------------------------ -全文検索エンジンであるgroongaをベースとしたMySQLのストレージエンジンです。 - -MySQLではver5.1からPluggable Storage Engineインタフェースが採用され、以前よりも柔軟に独自のストレージエンジンを利用できるようになりました。そこでgroongaにストレージエンジンインタフェースを実装し、MySQL経由でもgroongaを利用できるようにしました。 - -groongaストレージエンジンを経由することでgroongaをSQLコマンドでも利用することができるようになります。 - -Tritonnの後継 -------------- - -MySQLで日本語全文検索を実現するための方法として、MySQLにgroongaの前身である全文検索ライブラリSennaを組み込んだプロダクトをTritonnプロジェクトから開発・リリースされて来ました。groongaストレージエンジンはその後継プロダクトとなります。 - -MySQLのプラグインとして動作 ---------------------------- - -TritonnではMySQLサーバのソースコードを直接修正していましたので、使用するためには利用者がソースから自分でビルドするか、あるいはTritonnプロジェクトが配布するバイナリを使う必要がありました(MySQL本家が配布する公式バイナリを利用できませんでした)。 - -一方、groongaストレージエンジンはPluggable Storage Engineインタフェースを利用した独立したプログラム(共有ライブラリ)であるため、MySQLの公式バイナリに手を加えずにプラグインとして動的にロードして利用することが可能となっています。これによりTritonnよりもさらに手軽に利用できるようになりました。 - -更新性能の向上 --------------- -Sennaと比較するとgroongaではインデックス追加/更新時のスループットが大幅に改善されています。 - -groongaストレージエンジンでもこの更新性能の向上の恩恵を受けています。 - -検索性能の向上 --------------- - -TritonnではMyISAMストレージエンジンを利用していたため、データ更新(インデックス更新)が発生するとテーブル全体に排他ロックがかかり、検索処理が阻害される問題がありました。 - -groongaストレージエンジンではこの問題がなくなり(参照ロックフリー)、特にデータ更新が多いケースでの検索性能が向上しています。 - -位置情報検索のサポート ----------------------- - -groongaには全文検索機能だけではなく、インデックスを利用した高速な位置情報検索機能があります。また、MySQLにも位置情報検索のための記法があります。groongaストレージエンジンでは、groognaの位置情報検索機能を使ってMySQLの位置情報の記法で書かれたSQLを実行するため、高速に位置情報検索を行うことができます。 - -groongaストレージファイル経由でのシステム連携 ---------------------------------------------- - -groongaストレージエンジンではgroongaのDB APIを使用してデータの格納を行っています。この時作成されるストレージファイルはgroonga単体でデータ管理を行う場合と同じフォーマットとなります。つまり以下のような使い方も可能となります。 - -* groongaストレージエンジン(MySQL)経由で格納したデータをgroongaサーバ(単体)の高度な検索機能を利用して検索 -* groongaサーバ(単体)経由で格納したデータをgroongaストレージエンジン(MySQL)経由で参照 - -またgroongaのストレージファイルは複数プロセスや複数スレッドで共有することができますので、同じストレージファイルに対して複数パタンでの同時アクセスも可能です。 - -他のストレージエンジンとの連携 ------------------------------- - -groongaストレージエンジンには2つの動作モードがあります。 - -1つが「ストレージモード」で、データストアも検索機能もすべてgroongaを使うモードです。これがデフォルトのモードです。上述の参照ロックフリーなgroongaの性能特性をフルに活かした高速なデータ更新・全文検索・位置情報検索が特長です。一方、トランザクションなどの機能は提供されません。 - -もう1つが「ラッパーモード」で、MyISAMやInnoDBといった他のストレージエンジンに *全文検索機能だけ* を追加するモードです。このモードではトランザクションなど他のストレージエンジンがサポートしている機能に加えてgroongaの高速な全文検索機能を利用することができます。一方、groongaの参照ロックフリーな特性は活かすことができません。また、更新処理は他のストレージエンジンがボトルネックになることが多いでしょう。 - -サポートしているプラットフォーム --------------------------------- - -現在サポートしているプラットフォームは以下の通りです。 - -* Linux x86_64 (Intel64/AMD64) Deleted: doc/ja/source/conf.py (+0 -229) 100644 =================================================================== --- doc/ja/source/conf.py 2011-10-29 14:43:34 +0000 (df325f0) +++ /dev/null @@ -1,229 +0,0 @@ -# -*- coding: utf-8 -*- -# -# groonga storage engine documentation build configuration file, created by -# sphinx-quickstart on Tue Aug 03 14:53:35 2010. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os -from datetime import datetime - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.insert(0, os.path.abspath('.')) - -# -- General configuration ----------------------------------------------------- - -# If your documentation needs a minimal Sphinx version, state it here. -#needs_sphinx = '1.0' - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = [] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -#source_encoding = 'utf-8-sig' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'groonga storage engine' -copyright = u'2009-' + unicode(datetime.today().year) + u', groonga project' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. - -# The short X.Y version. -version = os.environ["VERSION"] -# The full version, including alpha/beta/rc tags. -release = version - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -language = "ja" - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of patterns, relative to source directory, that match files and -# directories to ignore when looking for source files. -exclude_patterns = [] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. See the documentation for -# a list of builtin themes. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -html_theme_options = { - 'rightsidebar': 'true', - 'stickysidebar': 'true', -# 'relbarbgcolor': '#ED4517', -# 'relbartextcolor': 'white', -# 'relbarlinkcolor': '#F8F0FF', -# 'footerbgcolor': '#ED4517', -# 'footertextcolor': 'white', -# 'sidebarbgcolor': '#FFd587', -# 'sidebartextcolor': '#ED4517', -# 'sidebarlinkcolor': '#666666', - 'bodyfont': '#666666', -} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# "<project> v<release> documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -#html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -html_use_smartypants = False - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_domain_indices = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. -#html_show_sphinx = True - -# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. -#html_show_copyright = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a <link> tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# This is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = None - -# Output file base name for HTML help builder. -htmlhelp_basename = 'groongastorageenginedoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -# The paper size ('letter' or 'a4'). -#latex_paper_size = 'letter' - -# The font size ('10pt', '11pt' or '12pt'). -#latex_font_size = '10pt' - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'groongastorageengine.tex', u'groonga storage engine Documentation', - u'groonga project', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# If true, show page references after internal links. -#latex_show_pagerefs = False - -# If true, show URL addresses after external links. -#latex_show_urls = False - -# Additional stuff for the LaTeX preamble. -#latex_preamble = '' - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_domain_indices = True - - -# -- Options for manual page output -------------------------------------------- - -# One entry per manual page. List of tuples -# (source start file, name, description, authors, manual section). -man_pages = [ - ('index', 'groongastorageengine', u'groonga storage engine Documentation', - [u'groonga project'], 1) -] Deleted: doc/ja/source/developer.rst (+0 -171) 100644 =================================================================== --- doc/ja/source/developer.rst 2011-10-29 14:43:34 +0000 (26521ea) +++ /dev/null @@ -1,171 +0,0 @@ -.. highlightlang:: none - -開発者向け情報 -============== - -.. toctree:: - :maxdepth: 2 - - developer/debug - developer/release - -開発手法について ----------------- -groongaストレージエンジン開発プロジェクトではBTSの1つであるRedmineを用いたチケット駆動開発を実施しています。 - -Redmineは以下のサイトで運用されています。 - -http://redmine.groonga.org/projects/show/mroonga - -開発の作業はチケット単位で行っています。 - -開発者の方は上記サイトへのアカウント登録をお願いします。 - -ロードマップについて --------------------- - -ロードマップは以下のページで確認できます。基本的に開発はロードマップに沿って行います。 - -http://redmine.groonga.org/projects/mroonga/roadmap - -ロードマップはオフラインあるいはオンラインでの開発会議で検討を行った上で決定されます。 - -ロードマップは各バージョンごとに追加する機能の一覧として構成されています。 - -ソースコード管理について ------------------------- -githubを使用したgitによるソースコード管理を行っています。 - -http://github.com/mroonga/mroonga - -上記レポジトリに対してread/writeでcloneを作成し、commitおよびpushして下さい。 - -アカウントを作成していない開発者の方はgithub.comへの登録をお願いします。 - -開発の流れについて ------------------- - -開発は以下の流れで行いたいと考えています。 - -1. チケットの新規作成と内容の記述 -2. 開発会議での検討(ロードマップへの反映) -3. チケットの割り当て(担当者作業開始) -4. 機能実装あるいはバグの修正作業、必要に応じてレポジトリへのpush -5. テストコードの追加と実行、レポジトリへのpush -6. 実装/テスト内容に対するレビュー(必要に応じて4へ戻る) -7. ドキュメントの追加/変更、 レポジトリへのpush -8. チケットの完了 - -機能追加や仕様変更などについても積極的にアイデアを募集します。まずはチケットを新規作成して内容を記述して下さい。 - -テストコードの追加と実行については後述しますのでそちらを参照して下さい。 - -基本的にチケットを担当されている方が設計、実装、テスト、ドキュメントまで一通りお願いしたいと考えています。 - -他の開発者にレビューを依頼し(特に機能追加の場合)、無事パスしたら最後にドキュメントを追加/変更してチケット完了となります。 - -ドキュメントの追加/変更方法についても詳しくは後述します。 - -リリースについて ----------------- - -リリースはロードマップ上のチケットが全て完了となった段階で行います。 - -リリースにあたっては以下の作業を行っています。 - -* ソースパッケージ作成 -* バイナリパッケージ作成 -* ドキュメント(http://mroonga.github.com)のアップデート -* リリースの告知 - -:doc:`developer/release` へ移動予定。 - -開発環境 --------- - -現在、以下のような開発環境を想定しています。 - -* Linux x86_64 -* glibc 2.5 -* MySQL 5.5 -* groonga 1.2 -* cutter 1.1 (C/C++単体テスト用) -* sphinx 1.0 (ドキュメント用) - -glibc 2.5はRed Hat Enterprise Linux 5に相当します。 - -ソースディレクトリ解説 ----------------------- -今のところソースファイルの数はごくわずかです。なるべくシンプルな状態を維持したいと考えています。 - -ha_mroonga.h - groongaストレージエンジンのヘッダファイル - -ha_mroonga.cc - groongaストレージエンジンの実装コード - -mrnsys.h - ユーティリティ関数のヘッダファイル - -mrnsys.c - ユーティリティ関数の実装コード - -test/sql/ - SQLによるテストコード用ディレクトリ - -test/sql/t/ - SQLテストスクリプト(現在実行可能なSQL文の定義も兼ねる) - -test/sql/r/ - SQLテスト想定実行結果(SQL動作仕様定義も兼ねる) - -test/unit/ - C/C++関数単体でのテストコード用ディレクトリ - -doc/en/ - sphinx形式の英語ドキュメント一式 - -doc/ja/ - sphinx形式の日本語ドキュメント一式 - -groongaストレージエンジンはまだ開発の立ち上げ段階であるため、SQL実行に関する仕様のドキュメント化は当面行いません。 - -その代わりとしてSQLテストスクリプトとその想定実行結果を機能一覧/仕様定義として見なしています。 - -テストコードの追加と実行について --------------------------------- -groongaストレージエンジンではプログラムの品質管理のため、2種類の回帰テストを用いています。 - -SQLテスト - SQL実行により動作確認を行えるような機能追加/バグ修正に関しては必ずSQLテストを追加して下さい。高速化機能などは一見するとSQLによる動作確認ができないように見える場合もありますが、ステータス変数やinformation_schemaプラグインなどを使用することで上手くテストできるものもあります。 - -C/C++単体テスト - cutterを使用した関数レベルでの回帰テストです。ユーティリティ関数などSQL実行結果による動作の差異を確認できないような実装を追加した場合にはこちらにテストを追加して下さい。 - -ソースコードレポジトリへのpushを行う前に必ず回帰テストを実行し、デグレードが発生していないことを確認して下さい。 - -上記の回帰テストは"make check"で双方とも呼び出されます。 - -SQLテストはMySQLの回帰テストである"mysql-test"に対する"sub test suite"として実装しています。テストケースの追加や想定結果ファイルの改変方法などの詳細情報は以下のMySQLのドキュメントを参照して下さい。 - -http://dev.mysql.com/doc/mysqltest/2.0/en/index.html - -C/C++単体テストの書き方についてはcutterのドキュメントを参照して下さい。 - -http://cutter.sourceforge.net/index.html.ja - -ドキュメントの追加と変更について --------------------------------- -groongaストレージエンジンではドキュメント作成にsphinxを使用しています。 - -ドキュメントはReStructuredText形式でソースファイルを書き、HTML形式などにビルドしています。 - -ドキュメントのソースファイルは"doc/ja/source"ディレクトリにある拡張子が.rstのファイルです。 - -加筆修正を行ったら"make html"等でビルドして構文エラーが起きないことを確認して下さい。 - -ドキュメントの実際の公開場所は http://mroonga.github.com で、これはgithubのサイト機能を使用しているため http://github.com/mroonga/mroonga.github.com レポジトリに最新のHTML出力ファイルをpushすることで更新が行われる仕組みとなっていますが、mroonga.github.comレポジトリへのpushは現リリースバージョンとの整合性などを確認した上で別のタイミングでpushします。 - -従って、各チケットに対するドキュメントのpushはmroongaレポジトリに対するpushのみで構いません。 - -またsphinxの出力するディレクトリ名がgithubで使用できない問題を回避するため、"doc/ja/source"ディレクトリにてsphinx2github.shスクリプトを用意しています。mroonga.github.comにcommitする場合にはこのスクリプトを実行してsphinxの生成したファイルを修正して置きましょう。 Deleted: doc/ja/source/developer/debug.rst (+0 -76) 100644 =================================================================== --- doc/ja/source/developer/debug.rst 2011-10-29 14:43:34 +0000 (c2eeb78) +++ /dev/null @@ -1,76 +0,0 @@ -.. highlightlang:: none - -デバッグ方法 -============ - -デバッグ用ビルド方法 --------------------- - -デバッグ用にビルドすることにより、gdb上でのシンボル解決など開発時に得られる情報が多くなります。そのため、開発時はデバッグ用にMySQLとgroongaストレージエンジンをビルドします。 - -.. note:: - - 片方だけデバッグ用ビルドにすると構造体のサイズなどが異なってしまうため、groongaストレージエンジンがロードできなかったり、実行時にassertに引っかかったりしてうまく動作しません。 - -MySQLのデバッグ用ビルド方法 -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -`MySQL :: MySQL 5.5 Reference Manual :: 2.9.2 Installing MySQL from a Standard Source Distribution`_ にある通り、CMakeのオプションに ``-DWITH_DEBUG=yes`` オプションを渡すことでデバッグ用にビルドすることができます。 - -ダウンロードからビルドまでの流れは以下の通りです。:: - - % mkdir -p ~/work/ - % cd ~/work/ - % wget http://ftp.jaist.ac.jp/pub/mysql/Downloads/MySQL-5.5/mysql-5.5.13.tar.gz - % tar xvzf mysql-5.5.13.tar.gz - % cd mysql-5.5.13 - % cmake . -DCMAKE_INSTALL_PREFIX=/tmp/local -DWITH_DEBUG=yes - % make - -.. _`MySQL :: MySQL 5.5 Reference Manual :: 2.9.2 Installing MySQL from a Standard Source Distribution`: http://dev.mysql.com/doc/refman/5.5/en/installing-source-distribution.html - -groongaストレージエンジンのデバッグ用ビルド方法 -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -groongaストレージエンジンはconfigureのオプションに ``--with-debug`` を渡すことでデバッグ用にビルドすることができます。 - -リポジトリのcloneからビルドまでの流れは以下の通りです。:: - - % cd ~/work/ - % git clone git****@githu*****:mroonga/mroonga.git - % cd mroonga - % ./autogen.sh - % ./configure CFLAGS="-ggdb3 -O0" CXXFLAGS="-ggdb3 -O0" --with-debug --prefix=/tmp/local --with-mysql-source=$HOME/work/mysql-5.5.13 --with-mysql-config=$HOME/work/mysql-5.5.13/scripts/mysql_config - % make - -無事にビルドができたら以下のようにテストを実行してください。すべてのテストが ``[pass]`` になればデバッグ用ビルドは成功しています。:: - - % test/run-sql-test.sh - -run-sql-test.sh を使いこなす ----------------------------- - -run-sql-test.sh はデバッグの友。ここでは、その便利な使い方の一例をご紹介します。 - -指定したテストを実行する -^^^^^^^^^^^^^^^^^^^^^^^^ - -何もオプションを渡さずに run-sql-test.sh を実行すると ``test/sql/t/`` 以下にある全てのテスト (``*.test``) が実行されてしまいます。 - -特定のテストだけを実行したい、という場合は次のようにしてテスト名を --do-test オプションに渡します。 :: - - ./test/run-sql-test.sh --do-test=foobar - -トレースを見る -^^^^^^^^^^^^^^ - -次のようにして ``--debug`` オプションをつけてテストを実行すると、関数の呼び出しなどが記録されます。この呼び出しは ``${MySQLの作業ディレクトリ}/${MySQLのバージョン}/mysql-test/var/log/mysqld.1.trace`` に格納されます。 - -新しく関数を作成した場合は MRN_DBUG_ENTER_FUNCTION 関数の先頭に配置し、関数の呼び出しを記録するようにすると良いでしょう。 - -GDB を立ち上げる -^^^^^^^^^^^^^^^^ - -``--gdb`` オプションを指定することで、テストを実行する際に GDB を用いてデバッグを行うことができます。 :: - - ./test/run-sql-test.sh --gdb Deleted: doc/ja/source/developer/release.rst (+0 -197) 100644 =================================================================== --- doc/ja/source/developer/release.rst 2011-10-29 14:43:34 +0000 (c80b0a6) +++ /dev/null @@ -1,197 +0,0 @@ -.. highlightlang:: none - -リリース手順 -============ - -変更点の記述 ------------- - -まず ``doc/ja/source/news.rst`` に変更点をまとめます。 - -次に、バージョンを確かめます。 - -例えば ``git tag`` の結果が次のようになっていたとき :: - - $ git tag - v0.1 - v0.2 - v0.3 - v0.3a - v0.4 - v0.5 - v0.6 - -次のようにすると、タグ ``v0.6`` 以降のコミットを閲覧できます。 :: - - $ git log -p --reverse v0.6.. - -配布用ファイルのアップロード ----------------------------- - -次に、配布用の ``tar.gz`` ファイルを作成します。 :: - - $ make dist - -そして、作成された ``tar.gz`` ファイルを https://github.com/mroonga/mroonga/downloads よりアップロードします。 - -パッケージの作成 ----------------- - -Linux 用にパッケージを作成する必要があります。パッケージは以下の 2 種類に分けることが可能です。 - -1. Debian 系 -2. Red Hat 系 - -.. note:: - - 現在のところ、パッケージの作成は Debian GNU/Linux (Ubuntu も可) でしか行えません。 - -Debian 系 -+++++++++ - -.. note:: - - 以下の作業は初回パッケージ作成時のみ必要です。初回パッケージ作成時にはパッケージ作成に必要なソフトウェアをインストールします。:: - - $ sudo apt-get install -y debootstrap - -まず apt ディレクトリに移動します。 :: - - $ cd apt - -その後、次のようにすれば一連のリリース作業(build update sign upload)が行われますが、途中で失敗することもあります。 :: - - $ make release - -そのため head コマンドなどで Makefile.am の内容を確認し、順番に作業を行っていくほうが良いこともあります。 :: - - $ make build - $ make update - $ make sign - $ make upload - -make build に PARALLEL=yes とするとビルドが並列に走り、作業がより高速に行えます。 - -また make build CODES=lucid などとすると、ビルド対象を指定することができます。 - -このように Makefile.am を書き換えずにコマンドライン引数でビルドの挙動を変更する方法は、知っておいて損はないでしょう。 - -Red Hat 系 -++++++++++ - -.. note:: - - 以下の作業は初回パッケージ作成時のみ必要です。初回パッケージ作成時にはパッケージ作成に必要なソフトウェアをインストールします。:: - - $ sudo apt-get install -y rinse createrepo rpm - -まず yum ディレクトリに移動する。 - -その後、次のようにすれば一連のリリース作業(build sign update upload)が行われますが、途中で失敗することもあります。 :: - - $ make release - -そのため head コマンドなどで Makefile.am の内容を確認し、順番に作業を行っていくほうが良いこともあります。 :: - - $ make build - $ make sign - $ make update - $ make upload - -タグを打つ ----------- - -``make tag`` とするとタグが打たれます。 :: - - $ make tag - $ git push --tags origin - -ドキュメントのアップロード --------------------------- - -1. GitHub からドキュメントアップロード用のリポジトリ (mroonga.github.com) を clone -2. mroonga/doc/ja/sphinx2github.sh を実行し mroonga/doc/ja/html 内のディレクトリ名を GitHub (Jekyll) 用に変更 -3. mroonga/doc/ja/html 内のファイルを 1. で clone した mroonga.github.com にコピー -4. mroonga.github.com へコミットを行い GitHub へ push - -リリースメールの送信 --------------------- - -メーリングリスト (ml****@mysql*****) にリリースメールを流します。メッセージ内容のテンプレートを以下に示します。 :: - - ドキュメント(インストールガイド含む) - http://mroonga.github.com/ - - ダウンロード - http://github.com/mroonga/mroonga/downloads - - groongaストレージエンジンとは、全文検索エンジンであるgroonga - をベースとしたMySQLのストレージエンジンです。Tritonnの後継プ - ロジェクトとなります。 - - - 最近のトピックス - ================ - - # <<<ユーモアを交えて最近のトピックスを>>> - - 先月開催されたMySQL Conference 2011でgroongaストレージエンジ - ンについて発表してきました。(私じゃなくて開発チームのみなさ - んが。)英語ですが、以下の発表資料があるので興味がある方はご - 覧ください。 - - http://groonga.org/ja/publication/ - - - いろいろ試してくれている方もいらっしゃるようでありがとうござ - います。いちいさんなど使った感想を公開してくれていてとても参 - 考になります。ありがとうございます。 - http://d.hatena.ne.jp/ichii386/20110427/1303852054 - - (↓の変更点にあるとおり、今回のリリースからauto_increment機 - 能が追加されています。) - - - ただ、「REPLACE INTO処理が完了せずにコネクションを消費する」 - のようなバグレポートがあるように、うまく動かないケースもある - ようなので、試していただける方は注意してください。 - http://redmine.groonga.org/issues/910 - - 今日リリースしたgroonga 1.2.2でマルチスレッド・マルチプロセ - ス時にデータ破損してしまう問題を修正しているので、最新の - groongaと組み合わせると問題が解決しているかもしれません。 - - 使ってみて、なにか問題があったら報告してもらえると助かります。 - - # <<<<以下 news.rst に書かれている内容を貼り付ける>>> - - 変更点 - ====== - - 0.5からの変更点は以下の通りです。 - http://mroonga.github.com/news.html#release-0-6 - - 改良 - ---- - - auto_increment機能の追加。#670 - 不必要な”duplicated _id on insert”というエラーメッセージを抑制。 #910(←は未修正) - CentOSで利用しているMySQLのバージョンを5.5.10から5.5.12へアップデート。 - Ubuntu 11.04 Natty Narwhalサポートの追加。 - Ubuntu 10.10 Maverick Meerkatサポートの削除。 - Fedora 15サポートの追加。 - Fedora 14サポートの削除。 - - 修正 - ---- - - ORDER BY LIMITの高速化が機能しないケースがある問題の修正。#845 - デバッグビルド時のメモリリークを修正。 - 提供しているCentOS用パッケージをOracle提供MySQLパッケージと一緒に使うとクラッシュする問題を修正。 - - 感謝 - ---- - - Mitsuhiro Shibuyaさん - Hiroki Minetaさん - @kodakaさん Deleted: doc/ja/source/images/storage-mode.png (+0 -0) 100644 =================================================================== (Binary files differ) Deleted: doc/ja/source/images/storage-mode.svg (+0 -287) 100644 =================================================================== --- doc/ja/source/images/storage-mode.svg 2011-10-29 14:43:34 +0000 (ef732a4) +++ /dev/null @@ -1,287 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="452.35107" - height="473.72626" - id="svg2" - version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="storage-mode.svg" - inkscape:export-filename="storage-mode.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <defs - id="defs4"> - <marker - inkscape:stockid="Arrow1Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow1Lend" - style="overflow:visible"> - <path - id="path3879" - d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" - transform="matrix(-0.8,0,0,-0.8,-10,0)" - inkscape:connector-curvature="0" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="1" - inkscape:pageshadow="2" - inkscape:zoom="1.4" - inkscape:cx="258.31006" - inkscape:cy="277.15835" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1024" - inkscape:window-height="582" - inkscape:window-x="458" - inkscape:window-y="107" - inkscape:window-maximized="0" - fit-margin-top="10" - fit-margin-left="10" - fit-margin-right="10" - fit-margin-bottom="10" /> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="レイヤー 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-64.289734,-118.44063)"> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect3760" - width="431.35107" - height="307.56534" - x="74.789734" - y="221.5117" - rx="18.182745" - ry="18.182745" - inkscape:export-filename="./rect3760.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect2985" - width="278.5899" - height="46.542416" - x="148.76938" - y="265.46445" - rx="18.182745" - ry="18.182745" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="346.34598" - y="251.39787" - id="text3762" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3764" - x="346.34598" - y="251.39787">MySQL Server</tspan></text> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="222.80261" - y="297.84113" - id="text3766" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3768" - x="222.80261" - y="297.84113">SQL Handler</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect4537" - width="403.57144" - height="159.28569" - x="87.85714" - y="358.79074" - rx="24.696215" - ry="24.696215" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect4535" - width="114.40467" - height="105.34303" - x="107.61432" - y="401.35693" - rx="18.182745" - ry="18.182745" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="128.81665" - y="461.73938" - id="text3818" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3820" - x="128.81665" - y="461.73938">MyISAM</tspan></text> - <rect - ry="18.182745" - rx="18.182745" - y="401.35693" - x="235.61432" - height="105.34303" - width="114.40467" - id="rect4533" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="254.78931" - y="463.14563" - id="text3824" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3826" - x="254.78931" - y="463.14563">InnoDB</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect3828" - width="114.40467" - height="105.34303" - x="359.61432" - y="401.35693" - rx="18.182745" - ry="18.182745" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="416.93384" - y="428.98547" - id="text3830" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3832" - x="416.93384" - y="428.98547">groonga</tspan><tspan - sodipodi:role="line" - x="416.93384" - y="458.98547" - id="tspan3834">storage</tspan><tspan - sodipodi:role="line" - x="416.93384" - y="488.98547" - id="tspan3836">engine</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect3865" - width="176.92403" - height="56.408867" - x="203.80714" - y="128.94063" - rx="18.182745" - ry="18.182745" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="220.86682" - y="164.86772" - id="text3867" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3869" - x="220.86682" - y="164.86772">MySQL Client</tspan></text> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 284.55589,190.70206 0,27.43511" - id="path3871" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="239.6041" - y="210.90512" - id="text4317" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan4319" - x="239.6041" - y="210.90512">SQL</tspan></text> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 155.14286,319.50504 0,32.85714" - id="path4323" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path4509" - d="m 175.14286,352.36218 0,-32.85714" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="312.85715" - y="387.36218" - id="text4539" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan4541" - x="312.85715" - y="387.36218">Storage Engine</tspan></text> - <path - inkscape:connector-curvature="0" - id="path4543" - d="m 279.14286,319.50504 0,32.85714" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 299.14286,352.36218 0,-32.85714" - id="path4545" - inkscape:connector-curvature="0" /> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 399.14286,319.50504 0,32.85714" - id="path4547" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path4549" - d="m 419.14286,352.36218 0,-32.85714" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> - <text - xml:space="preserve" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="173.57143" - y="577.36218" - id="text4551" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan4553" - x="173.57143" - y="577.36218">Storage Mode</tspan></text> - </g> -</svg> Deleted: doc/ja/source/images/wrapper-mode.png (+0 -0) 100644 =================================================================== (Binary files differ) Deleted: doc/ja/source/images/wrapper-mode.svg (+0 -322) 100644 =================================================================== --- doc/ja/source/images/wrapper-mode.svg 2011-10-29 14:43:34 +0000 (2f874c6) +++ /dev/null @@ -1,322 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="452.35107" - height="581.72626" - id="svg2" - version="1.1" - inkscape:version="0.48.1 r9760" - sodipodi:docname="wrapper-mode.svg" - inkscape:export-filename="wrapper-mode.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90"> - <defs - id="defs4"> - <marker - inkscape:stockid="Arrow1Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow1Lend" - style="overflow:visible"> - <path - id="path3879" - d="M 0,0 5,-5 -12.5,0 5,5 0,0 z" - style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" - transform="matrix(-0.8,0,0,-0.8,-10,0)" - inkscape:connector-curvature="0" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="1" - inkscape:pageshadow="2" - inkscape:zoom="0.98994949" - inkscape:cx="159.35403" - inkscape:cy="230.35678" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1366" - inkscape:window-height="692" - inkscape:window-x="0" - inkscape:window-y="25" - inkscape:window-maximized="1" - fit-margin-top="10" - fit-margin-left="10" - fit-margin-right="10" - fit-margin-bottom="10" /> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="レイヤー 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(-64.289734,-118.44063)"> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect3760" - width="431.35107" - height="420.70242" - x="74.789734" - y="221.5117" - rx="18.182745" - ry="18.182745" - inkscape:export-filename="./rect3760.png" - inkscape:export-xdpi="90" - inkscape:export-ydpi="90" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect2985" - width="278.5899" - height="46.542416" - x="148.76938" - y="265.46445" - rx="18.182745" - ry="18.182745" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="346.34598" - y="251.39787" - id="text3762" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3764" - x="346.34598" - y="251.39787">MySQL Server</tspan></text> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="222.80261" - y="297.84113" - id="text3766" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3768" - x="222.80261" - y="297.84113">SQL Handler</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect4537" - width="403.57144" - height="259.29077" - x="87.85714" - y="358.79074" - rx="24.696215" - ry="24.696215" /> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99209207;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect4535" - width="114.41257" - height="43.922909" - x="107.61037" - y="556.78094" - rx="18.184002" - ry="17.895069" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="128.81665" - y="586.45337" - id="text3818" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3820" - x="128.81665" - y="586.45337">MyISAM</tspan></text> - <rect - ry="18.182745" - rx="18.182745" - y="556.78552" - x="353.61432" - height="43.914742" - width="114.40466" - id="rect4533" - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="372.78931" - y="587.86011" - id="text3824" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3826" - x="372.78931" - y="587.86011">InnoDB</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#ff0000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect3828" - width="366.54752" - height="64.565659" - x="107.47146" - y="395.35693" - rx="12.61022" - ry="12.61022" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="293.64813" - y="421.27118" - id="text3830" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - x="293.64813" - y="421.27118" - id="tspan3836">groonga storage engine</tspan><tspan - sodipodi:role="line" - x="293.64813" - y="451.27118" - id="tspan3090">(Handle fulltext search)</tspan></text> - <rect - style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect3865" - width="176.92403" - height="56.408867" - x="203.80714" - y="128.94063" - rx="18.182745" - ry="18.182745" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="220.86682" - y="164.86772" - id="text3867" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3869" - x="220.86682" - y="164.86772">MySQL Client</tspan></text> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 284.55589,190.70206 0,27.43511" - id="path3871" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="239.6041" - y="210.90512" - id="text4317" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan4319" - x="239.6041" - y="210.90512">SQL</tspan></text> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 155.14286,319.50504 0,32.85714" - id="path4323" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path4509" - d="m 175.14286,352.36218 0,-32.85714" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="312.85715" - y="387.36218" - id="text4539" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan4541" - x="312.85715" - y="387.36218">Storage Engine</tspan></text> - <path - inkscape:connector-curvature="0" - id="path4543" - d="m 279.14286,319.50504 0,32.85714" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 299.14286,352.36218 0,-32.85714" - id="path4545" - inkscape:connector-curvature="0" /> - <path - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 398.14286,319.50504 0,32.85714" - id="path4547" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path4549" - d="m 418.14286,352.36218 0,-32.85714" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" /> - <text - xml:space="preserve" - style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="173.57143" - y="685.36218" - id="text4551" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan4553" - x="173.57143" - y="685.36218">Wrapper Mode</tspan></text> - <path - inkscape:connector-curvature="0" - id="path3064" - d="m 155.14286,465.94665 0,88.41553" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - sodipodi:nodetypes="cc" /> - <text - xml:space="preserve" - style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - x="290.95178" - y="506.84265" - id="text3072" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan3074" - x="290.95178" - y="506.84265">Handle except</tspan><tspan - sodipodi:role="line" - x="290.95178" - y="536.84265" - id="tspan3076">fulltext search</tspan></text> - <path - sodipodi:nodetypes="cc" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 175.14286,554.36218 0,-88.41553" - id="path3105" - inkscape:connector-curvature="0" /> - <path - sodipodi:nodetypes="cc" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - d="m 398.14286,465.94665 0,88.41553" - id="path3148" - inkscape:connector-curvature="0" /> - <path - inkscape:connector-curvature="0" - id="path3150" - d="m 418.14286,554.36218 0,-88.41553" - style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" - sodipodi:nodetypes="cc" /> - </g> -</svg> Deleted: doc/ja/source/index.rst (+0 -27) 100644 =================================================================== --- doc/ja/source/index.rst 2011-10-29 14:43:34 +0000 (a95e940) +++ /dev/null @@ -1,27 +0,0 @@ -.. groonga storage engine documentation master file, created by - sphinx-quickstart on Tue Aug 03 14:53:35 2010. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -groongaストレージエンジン -========================= - -リリース情報はこちら: :doc:`news` - -.. toctree:: - :maxdepth: 3 - :numbered: - - characteristic - install - userguide - reference - developer - -Indices and tables -================== - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` - Deleted: doc/ja/source/install.rst (+0 -284) 100644 =================================================================== --- doc/ja/source/install.rst 2011-10-29 14:43:34 +0000 (07e978c) +++ /dev/null @@ -1,284 +0,0 @@ -.. highlightlang:: none - -インストールガイド -================== - -バイナリパッケージを使用したインストールではgroonga関連パッケージと共にMySQL関連のパッケージもインストールされます。 - -それぞれの環境毎にインストール方法を説明します。 - -Debian GNU/Linux squeeze ------------------------- - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -/etc/apt/sources.list.d/groonga.list:: - - deb http://packages.groonga.org/debian/ squeeze main - deb-src http://packages.groonga.org/debian/ squeeze main - -インストール:: - - % sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1C837F31 - % sudo aptitude update - % sudo aptitude -V -D -y install mysql-server-groonga - -Debian GNU/Linux wheezy ------------------------ - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -/etc/apt/sources.list.d/groonga.list:: - - deb http://packages.groonga.org/debian/ wheezy main - deb-src http://packages.groonga.org/debian/ wheezy main - -インストール:: - - % sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1C837F31 - % sudo aptitude update - % sudo aptitude -V -D -y install mysql-server-groonga - -Debian GNU/Linux sid --------------------- - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -/etc/apt/sources.list.d/groonga.list:: - - deb http://packages.groonga.org/debian/ unstable main - deb-src http://packages.groonga.org/debian/ unstable main - -インストール:: - - % sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1C837F31 - % sudo aptitude update - % sudo aptitude -V -D -y install mysql-server-groonga - -Ubuntu 10.04 LTS Lucid Lynx ---------------------------- - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -.. note:: - - Ubuntu本家のuniverseセクションもインストール対象としておくこと - -/etc/apt/sources.list.d/groonga.list:: - - deb http://packages.groonga.org/ubuntu/ lucid universe - deb-src http://packages.groonga.org/ubuntu/ lucid universe - -インストール:: - - % sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1C837F31 - % sudo aptitude update - % sudo aptitude -V -D -y install mysql-server-groonga - -Ubuntu 11.04 Natty Narwhal --------------------------- - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -.. note:: - - Ubuntu本家のuniverseセクションもインストール対象としておくこと - -/etc/apt/sources.list.d/groonga.list:: - - deb http://packages.groonga.org/ubuntu/ natty universe - deb-src http://packages.groonga.org/ubuntu/ natty universe - -インストール:: - - % sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1C837F31 - % sudo aptitude update - % sudo aptitude -V -D -y install mysql-server-groonga - -Ubuntu 11.10 Oneiric Ocelot ---------------------------- - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -.. note:: - - Ubuntu本家のuniverseセクションもインストール対象としておくこと - -/etc/apt/sources.list.d/groonga.list:: - - deb http://packages.groonga.org/ubuntu/ oneiric universe - deb-src http://packages.groonga.org/ubuntu/ oneiric universe - -インストール:: - - % sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 1C837F31 - % sudo aptitude update - % sudo aptitude -V -D -y install mysql-server-groonga - -CentOS 5 --------- - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -既にディストリビューション由来のMySQLパッケージがインストール済みの場合には事前に削除する必要があります。 - -既存のMySQLパッケージを削除:: - - % sudo yum remove mysql* - -インストール:: - - % sudo rpm -ivh http://packages.groonga.org/centos/groonga-repository-1.0.0-0.noarch.rpm - % sudo yum update - % sudo yum install -y mysql-groonga - -CentOS 6 --------- - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -CentOS 6用のパッケージはCentOS 5用のパッケージと違い、ディストリビューション由来のMySQLパッケージ(MySQL 5.1系)を利用します。そのため、ディストリビューション由来のMySQLを削除する必要はありません。 - -インストール:: - - % sudo rpm -ivh http://packages.groonga.org/centos/groonga-repository-1.0.0-0.noarch.rpm - % sudo yum update - % sudo yum install -y mysql-groonga - -Fedora 15 ---------- - -.. note:: - - amd64版のみ提供でi386版は未提供。 - -インストール:: - - % sudo rpm -ivh http://packages.groonga.org/fedora/groonga-repository-1.0.0-0.noarch.rpm - % sudo yum update - % sudo yum install -y mysql-groonga - -ソースコードからのインストール ------------------------------- - -ソースコードからインストールする方法を説明します。パッケージ -がない環境ではソースコードからインストールすることになります。 - -形態素解析(MeCab)について -+++++++++++++++++++++++++ - -形態素単位でトークナイズした全文検索索引を使用したい場合は、 -groongaのインストール前に `MeCab <http://mecab.sourceforge.net/>`_ -をインストールしてください。 - -ダウンロード -++++++++++++ - -リリース版のソースコードを利用する場合は `GitHubのダウンロードページ <http://github.com/mroonga/mroonga/downloads>`_ からtarballをダウンロードしてください。 - -最新のソースコードを利用する場合は `GitHub <https://github.com/mroonga/mroonga/>`_ からcloneして `./autogen.sh` を実行してください。(GNU Autotoolsが必要です。)この方法は開発に慣れた方向けなので、そうでない方はtarballを使うことをお勧めします。:: - - % git clone https://github.com/mroonga/mroonga.git - % mroonga - % ./autogen.sh - -前提条件 -++++++++ - -MySQLおよびgroongaが既にインストールされている必要があります。 - -またgroongaストレージエンジンをビルドするためにはMySQLのソースコードも必要です。 - -MySQLのインストール -+++++++++++++++++++ - -MySQL 5.5最新版のソースコードをダウンロードし、ビルド&インストールして下さい。 - -http://dev.mysql.com/downloads/mysql/ - -mysql-5.5.17を使用し、以下にソースディレクトリが展開されているものと仮定します。 :: - - /usr/local/src/mysql-5.5.17 - -MySQLのバイナリが以下にインストールされているものと仮定します。 :: - - /usr/local/mysql - -groongaのインストール -+++++++++++++++++++++ - -groongaの最新版をビルド&インストールして下さい。 - -http://groonga.org/docs/ - -ここでは/usr/libなどの標準パスにlibgroongaがインストールされているものと仮定します。 - -groongaストレージエンジンのビルド -+++++++++++++++++++++++++++++++++ - -以下のように ``--with-mysql-source`` でMySQLソースコードディレクトリ、 ``--with-mysql-config`` でmysql_configコマンドのパスを指定してconfigureを実行します。 :: - - ./configure \ - --with-mysql-source=/usr/local/src/mysql-5.5.17 \ - --with-mysql-config=/usr/local/mysql/bin/mysql_config - -groongaを/usr/libなど標準のパス以外にインストールした場合はPKG_CONFIG_PATHを指定する必要があります。例えば、ーーprefix=$HOME/localでgroongaをインストールした場合は以下のようにします。:: - - ./configure \ - PKG_CONFIG_PATH=$HOME/local/lib/pkgconfig \ - --with-mysql-source=/usr/local/src/mysql-5.5.17 \ - --with-mysql-config=/usr/local/mysql/bin/mysql_config - -その後、"make"を実行します。 :: - - make - -groongaストレージエンジンのインストール -+++++++++++++++++++++++++++++++++++++++ - -"make install"を実行するとMySQLのプラグイン用ディレクトリにha_groonga.soが配置されます。 :: - - make install - -その後、mysqldを起動し、mysqlクライアントで接続して"INSTALL PLUGIN"コマンドでインストールします。 :: - - mysql> INSTALL PLUGIN groonga SONAME 'ha_groonga.so'; - -以下のように"SHOW ENGINES"コマンドで"groonga"が表示されればgroongaストレージエンジンのインストールは完了です。 :: - - mysql> SHOW ENGINES; - +------------+---------+------------------------------------------------------------+--------------+------+------------+ - | Engine | Support | Comment | Transactions | XA | Savepoints | - +------------+---------+------------------------------------------------------------+--------------+------+------------+ - | groonga | YES | Fulltext search, column base | NO | NO | NO | - | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | - | CSV | YES | CSV storage engine | NO | NO | NO | - | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | - | InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | - | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | - +------------+---------+------------------------------------------------------------+--------------+------+------------+ - 6 rows in set (0.00 sec) - -続いてUDF(ユーザ定義関数)をインストールします。 - -INSERTを行った際にgroongaにより割当てられるレコードIDを取得するためのlast_insert_grn_id関数をインストールします。 - -以下のようにCREATE FUNCTIONを実行します。 :: - - mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER soname 'ha_groonga.so'; Deleted: doc/ja/source/news.rst (+0 -258) 100644 =================================================================== --- doc/ja/source/news.rst 2011-10-29 14:43:34 +0000 (857838e) +++ /dev/null @@ -1,258 +0,0 @@ -.. highlightlang:: none - -最新ニュース -============ - -.. _release-1-0-1: - -1.0.1 リリース - 2011/10/29 ---------------------------- - -位置情報検索の対応を強化とストレージモードでの動的なインデックス変更の対応強化が目玉のリリース。 - -改良 -++++ - -* [ストレージモード][ラッパーモード] `flush tables` によるデータベースの再オープンに対応。 -* [ラッパーモード] 位置情報インデックスに対応。(ただし、カラムに保存できる型はPointのみ対応。インデックスを利用した位置検索はMBRContainsのみ対応。) -* [ベンチマーク] groongaのデータベースには実際に書き込むかどうかを指定する `groonga_dry_write` 変数の追加。ベンチマーク時などボトルネック処理の確認用。 -* CentOS 6用のインストールドキュメントにMySQLのバージョン番号を追加。 [@yoshi_kenさんが提案] -* [位置情報検索] 不必要な処理をなるべくしないようにして高速化。 -* mysql_configがfast mutexesを有効にしていると報告しても、それを無視する `--disable-fast-mutexes` configureオプションを追加。 -* [ストレージモード] `create index` に対応。 -* [ストレージモード] `drop index` に対応。 -* [ストレージモード] 全文検索用のマルチカラムインデックスに対応。 -* `D` プラグマに対応。 -* MySQL 5.5.17に対応。 -* MySQL 5.6.3-m6に対応。 -* groonga 1.2.7に対応。(1.2.6以下のサポートを削除。) -* Ubuntu 11.10 Oneiric Ocelotに対応。 - -修正 -++++ - -* booleanモードでクエリの先頭に `+` を指定すると何もヒットしなくなる問題を修正。 [西山はじめさんが報告] -* [Fedora] パッケージの依存関係を修正。 [Takahiro Nagaiさんが報告] -* [Fedora] プラグインをロードするとシンボルが見つからずエラーになる問題を修正。 [Takahiro Nagaiさんが報告] -* [ストレージモード] マルチカラムインデックスに `varchar` を使うとインデックスが正常に作成されない問題を修正。 #1143 [Takahiro Nagaiさんが報告] - -感謝 -++++ - -* @yoshi_kenさん -* 西山はじめさん -* Takahiro Nagaiさん - -.. _release-1-0-0: - -1.0.0 リリース - 2011/09/29 ---------------------------- - -初回リリースから約1年経って、初のメジャーリリース! - -改良 -++++ - -* [ラッパーモード] drop index対応。 #1040 -* [ストレージモード] GEOMETRY対応。(ただし、カラムに保存できる型はPointのみ対応。インデックスを利用した位置検索はMBRContainsのみ対応。) #1041 -* [ストレージモード] マルチカラムインデックスに対応。 #455 -* [ストレージモード][ラッパーモード] 全文検索用パーサー(トークナイザー)のカスタマイズに対応。 #592 -* configureにデフォルトの全文検索用パーサーを指定する `--with-default-parser` オプションを追加。 -* 実行時にデフォルトの全文検索用パーサーを指定する `groonga_default_parser` 変数を追加。 -* [ラッパーモード] ストレージモードで実装している `order` と `limit` が指定された場合に必要のないレコードを返さないようにする高速化に対応。 -* [ストレージモード] 1つの `select` 中での複数の `match against` 指定に対応。 -* [非互換][ストレージモード] `_score` カラムの削除。代わりにMySQL標準の書き方である `match against` を使ってください。 -* [ラッパーモード] プライマリキーの更新に対応。 -* MySQL 5.5.16に対応。 -* CentOS 6に対応。 -* groonga 1.2.6に対応。(1.2.5以下のサポートを削除。) - -修正 -++++ - -* [Ubuntu] Lucid上でインストールエラーが発生する問題を修正。 (Isao Sugimotoさんが報告) -* auto_incrementを使った場合にテキストデータが壊れる問題を修正。 (@zaubermaerchenさんが報告) #1072 -* [Ubuntu] Lucid上でテーブルを削除するとクラッシュする問題を修正。 #1063 (Isao Sugimotoさんが報告) -* MySQLと同じビルドオプションを使っていなかった問題を修正。 GitHub#4 (groongaのGitHubのIssues) (Tomohiro MITSUMUNEさんが報告) - -感謝 -++++ - -* Isao Sugimotoさん -* @zaubermaerchenさん -* Tomohiro MITSUMUNEさん - -.. _release-0-9: - -0.9 リリース - 2011/08/29 -------------------------- - -改良 -++++ - -* MySQL 5.1.58に対応。 -* MySQL 5.6.3に対応。 - -.. _release-0-8: - -0.8 リリース - 2011/07/29 -------------------------- - -改良 -++++ - -* [deb] プラグインインストール時のエラーを無視するようにした。 -* [ラッパーモード] マルチカラムインデックスのサポート。 #1031 -* [ラッパーモード] 大量レコードの全文検索に対応。 #1032 -* [ラッパーモード] MyISAM対応。 #1033 - -.. _release-0-7: - -0.7 リリース - 2011/06/29 -------------------------- - -改良 -++++ - -* 既存のストレージエンジンに全文検索機能を追加する :doc:`userguide/wrapper` の追加。 -* MySQL 5.5.13サポートの追加。 #984 -* 安定してきたので、groongaのデフォルトログレベルをDUMPからNOTICEに変更。 -* Mac OS Xでのビルドをサポート。(@issmさんが報告) - -修正 -++++ - -* 常にデバッグモードでビルドされる問題を修正。(@supistarさんが報告) - -感謝 -++++ - -* @issmさん -* @supistarさん - -.. _release-0-6: - -0.6 リリース - 2011/05/29 -------------------------- - -改良 -++++ - -* auto_increment機能の追加。#670 -* 不必要な"duplicated _id on insert"というエラーメッセージを - 抑制。 #910(←は未修正) -* CentOSで利用しているMySQLのバージョンを5.5.10から5.5.12へ - アップデート。 -* Ubuntu 11.04 Natty Narwhalサポートの追加。 -* Ubuntu 10.10 Maverick Meerkatサポートの削除。 -* Fedora 15サポートの追加。 -* Fedora 14サポートの削除。 - -修正 -++++ - -* ORDER BY LIMITの高速化が機能しないケースがある問題の修正。#845 -* デバッグビルド時のメモリリークを修正。 -* 提供しているCentOS用パッケージをOracle提供MySQLパッケージ - と一緒に使うとクラッシュする問題を修正。 - -感謝 -++++ - -* Mitsuhiro Shibuyaさん -* Hiroki Minetaさん -* @kodakaさん - -0.5 リリース - 2011/03/29 -------------------------- - -改良 -++++ - -* "uninstall plugin"対応 #741 -* MariaDB対応 (かずひこさんが提案) -* 不要なデバッグシンボルを削除 -* MySQL 5.5への対応強化。 -* エラーメッセージの改良 - -感謝 -++++ - -* かずひこさん - -0.4 リリース - 2010/11/29 -------------------------- - -改良 -++++ - -* 全文検索のスコア取得機能の追加。 -* レコードIDへのアクセス機能の追加。 -* 直近のレコードIDを参照するためのUDFの追加。 -* インデックスによる範囲検索機能の追加。 -* 全文検索におけるORDER BY LIMITパタンの高速化。 -* ``groonga_fast_order_limit`` ステータス変数の追加。 -* ログ出力機能の設定強化。 -* ``groonga_log_level`` システム変数の追加。 -* 全文検索機能の強化(NOT MATCH AGAINST対応)。 -* MySQL 5.5への対応。 - -感謝 -++++ - -* とみたまさひろさん - -0.3 リリース - 2010/10/29 -------------------------- - -改良 -++++ - -* エラーメッセージの出力を実装。 -* カラムの刈り込みの実装を強化。 -* 行カウント高速化機能の実装。 -* ``groonga_count_skip`` ステータス変数の追加。 -* ユーザガイドドキュメントの追加。 - -変更 -++++ - -* インデックス作成時にNORMALIZEフラグを付与。 - -修正 -++++ - -* LIMITなどを用いた場合にカーソルが正しくクローズされない問題の修正。 - -0.2 リリース - 2010/09/29 -------------------------- - -改良 -++++ - -* packages.groonga.orgでのバイナリパッケージ配布開始。aptitude/yumによるインストールが可能に。 -* バイナリログの出力に対応。 - -変更 -++++ - -* 共有ライブラリの名前を"libgroonga_storage_engine.so"から"ha_groonga.so"に変更。 -* configureオプションの ``--with-mysql`` および ``--libdir`` を削除。 -* configureオプションの ``--with-mysql-source`` および ``--with-mysql-config`` を追加。 - -修正 -++++ - -* ヘッダファイルのincludeパスを修正。 -* "SHOW CREATE TABLE"に出力されるENGINE名を修正。 - -感謝 -++++ - -* とみたまさひろさん - - -0.1 リリース - 2010/08/19 -------------------------- - -初回テストリリース Deleted: doc/ja/source/reference.rst (+0 -53) 100644 =================================================================== --- doc/ja/source/reference.rst 2011-10-29 14:43:34 +0000 (4383d7a) +++ /dev/null @@ -1,53 +0,0 @@ -.. highlightlang:: none - -リファレンス -============ - -利用可能なSQLコマンドの一覧 ---------------------------- - -groongaストレージエンジンのソースコードの以下のディレクトリにSQL実行サンプルファイルがたくさんあります。 :: - - test/sql/t - -ファイル一覧 :: - - auto_increment.test insert.test - binlog.test insert_wrapper.test - btree.test last_insert_grn_id.test - count_performance.test log_level.test - create_table.test order_limit_performance.test - create_table_wrapper.test replace.test - delete.test select_all.test - delete_wrapper.test select_pkey.test - drop_database.test select_secondary_key.test - drop_table.test show_create_table.test - flush_logs.test show_table_status.test - fulltext.test tinyint.test - fulltext_wrapper.test update.test - hash.test update_wrapper.test - information_schema.test - -ここに記述されているSQL文が現在利用可能なSQL文となります。 - -※逆に言うとここに記述されていないSQL文の動作はサポートしておりません。 - -サーバ変数の一覧 ----------------- - -今のところ独自に追加されたサーバ変数はありません。 - -ステータス変数の一覧 --------------------- - -独自に追加されたステータス変数を説明します。 - -groonga_count_skip -^^^^^^^^^^^^^^^^^^ - -行カウント高速化機能が動作する度にカウントアップされます。スキーマ/SQLチューニングを行って行カウント高速化機能を利用できるようにした際の動作確認に利用できます。 - -groonga_fast_order_limit -^^^^^^^^^^^^^^^^^^^^^^^^ - -ORDER BY LIMIT 高速化機能が動作する度にカウントアップされます。スキーマ/SQLチューニングを行って ORDER BY LIMIT 高速化機能を利用できるようにした際の動作確認に利用できます。 Deleted: doc/ja/source/userguide.rst (+0 -72) 100644 =================================================================== --- doc/ja/source/userguide.rst 2011-10-29 14:43:34 +0000 (305a0aa) +++ /dev/null @@ -1,72 +0,0 @@ -.. highlightlang:: none - -ユーザガイド -============ - -インストール方法についてはこちらを参照して下さい: :doc:`install` - -インストール確認 ----------------- - -MySQLサーバの起動停止方法は通常のMySQLと同じです。 - -MySQLサーバを起動した上でmysqlコマンドで接続します。パスワードを設定済みの場合は ``-p`` オプションでパスワードを指定して下さい。 :: - - shell> mysql -uroot test - -SHOW ENGINESコマンドでgroongaストレージエンジンがインストールされているかどうかを確認します。:: - - mysql> SHOW ENGINES; - +------------+---------+------------------------------------------------------------+--------------+------+------------+ - | Engine | Support | Comment | Transactions | XA | Savepoints | - +------------+---------+------------------------------------------------------------+--------------+------+------------+ - | groonga | YES | Fulltext search, column base | NO | NO | NO | - | MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO | - | CSV | YES | CSV storage engine | NO | NO | NO | - | MyISAM | DEFAULT | Default engine as of MySQL 3.23 with great performance | NO | NO | NO | - | InnoDB | YES | Supports transactions, row-level locking, and foreign keys | YES | YES | YES | - | MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO | - +------------+---------+------------------------------------------------------------+--------------+------+------------+ - 6 rows in set (0.00 sec) - -上記のように"groonga"ストレージエンジンが見えていればインストールは無事完了しています。 - -インストールされていなければ以下のようにINSTALL PLUGINコマンドを実行して下さい。 :: - - mysql> INSTALL PLUGIN groonga SONAME 'ha_groonga.so'; - -動作モード ----------- - -groongaストレージエンジンは以下の2つの動作モードのどちらかで動作します。 - -* ストレージモード -* ラッパーモード - -ストレージモードでは、全文検索機能だけではなくデータストアも含めてgroongaの機能を利用します。ストレージエンジンのすべての機能をgroongaストレージエンジンで実現するため、groongaが得意としている集計操作が高速である、 ``groonga`` コマンドで直接データベースを操作できるという特長があります。 - -ストレージモードの構成を図で表すと以下のようになります。MyISAMやInnoDBなど既存のストレージエンジンの代わりに利用します。 - -.. figure:: ../../images/storage-mode.png - :alt: ストレージモード - :align: center - - -ラッパーモードでは全文検索機能のみgroongaの機能を利用し、データストアはInnoDBなど既存のストレージエンジンを利用します。ラッパーモードを利用することにより、ストレージエンジンとして多くの利用実績のあるInnoDBに全文検索エンジンとして実績のあるgroongaを組み合わせて、高速な全文検索機能付きの信頼性のあるデータベースとして利用できるという特長があります。 - -ラッパーモードの構成を図で表すと以下のようになります。全文検索関連の処理はgroongaストレージエンジンで処理し、それ以外の処理はMyISAMやInnoDBなど既存のストレージエンジンを利用します。SQLを処理するSQL Handlerと既存のストレージエンジンの間に位置するため、すべてのデータが一度groongaストレージエンジンを通ることになります。これを利用して、全文検索用のインデックス作成などを透過的に行います。 - -.. figure:: ../../images/wrapper-mode.png - :alt: ラッパーモード - :align: center - -モード毎の利用方法 ------------------- - -各モード毎の利用方法に関しては、以下のページを参照して下さい。 - -.. toctree:: - :maxdepth: 2 - - userguide/storage.rst - userguide/wrapper.rst Deleted: doc/ja/source/userguide/storage.rst (+0 -429) 100644 =================================================================== --- doc/ja/source/userguide/storage.rst 2011-10-29 14:43:34 +0000 (a66a4d8) +++ /dev/null @@ -1,429 +0,0 @@ -.. highlightlang:: none - -ストレージモード -================ - -ここでは groonga ストレージエンジンにおけるストレージモードの利用方法を説明します。 - -全文検索の利用方法 ------------------- - -インストールが確認できたら、テーブルを1つ作成してみましょう。 ``ENGINE = groonga`` とgroongaストレージエンジンを指定するところがポイントです。:: - - mysql> CREATE TABLE diaries ( - -> id INT PRIMARY KEY AUTO_INCREMENT, - -> content VARCHAR(255), - -> FULLTEXT INDEX (content) - -> ) ENGINE = groonga DEFAULT CHARSET utf8; - Query OK, 0 rows affected (0.10 sec) - -INSERTでデータを投入してみましょう。 :: - - mysql> INSERT INTO diaries (content) VALUES ("明日の天気は晴れでしょう。"); - Query OK, 1 row affected (0.01 sec) - - mysql> INSERT INTO diaries (content) VALUES ("明日の天気は雨でしょう。"); - Query OK, 1 row affected (0.00 sec) - -全文検索を実行してみます。 :: - - mysql> SELECT * FROM diaries WHERE MATCH(content) AGAINST("晴れ"); - +----+-----------------------------------------+ - | id | content | - +----+-----------------------------------------+ - | 1 | 明日の天気は晴れでしょう。 | - +----+-----------------------------------------+ - 1 row in set (0.00 sec) - -おぉぉー。検索できましたね。 - -検索スコアの取得方法 --------------------- - -.. note:: - - 1.0.0以前のgroongaストレージエンジンではMySQLの標準的な検索スコアの取得方法ではなく、 ``_score`` という専用のカラムを作成するという独自の方法でした。1.0.0からはMySQLの標準的な取得方法になっています。 - -全文検索を行う際、指定したキーワードにより内容が一致するレコードを上位に表示したいというような場合があります。そうしたケースでは検索スコアを利用します。 - -検索スコアはMySQLの標準的な方法 [#score]_ で取得できます。つまり、SELECTの取得するカラム名を指定するところやORDER BYのところにMATCH...AGAINSTを指定します。 - -それでは実際にやってみましょう。:: - - mysql> INSERT INTO diaries (content) VALUES ("今日は晴れました。明日も晴れるでしょう。"); - Query OK, 1 row affected (0.00 sec) - - mysql> INSERT INTO diaries (content) VALUES ("今日は晴れましたが、明日は雨でしょう。"); - Query OK, 1 row affected (0.00 sec) - - mysql> SELECT *, MATCH (content) AGAINST ("晴れ") FROM diaries WHERE MATCH (content) AGAINST ("晴れ") ORDER BY MATCH (content) AGAINST ("晴れ") DESC; - +----+--------------------------------------------------------------+------------------------------------+ - | id | content | MATCH (content) AGAINST ("晴れ") | - +----+--------------------------------------------------------------+------------------------------------+ - | 3 | 今日は晴れました。明日も晴れるでしょう。 | 2 | - | 1 | 明日の天気は晴れでしょう。 | 1 | - | 4 | 今日は晴れましたが、明日は雨でしょう。 | 1 | - +----+--------------------------------------------------------------+------------------------------------+ - 3 rows in set (0.00 sec) - -検索対象の文字列 ``晴れ`` をより多く含む、すなわち検索スコアの高い ``id = 3`` のメッセージが上に来ていることが確認できます。また、SELECT句にMATCH AGAINSTを記述しているため、検索スコアも取得できています。 - -属性名を変更したい場合は ``AS`` を使って下さい。 :: - - mysql> SELECT *, MATCH (content) AGAINST ("晴れ") AS score FROM diaries WHERE MATCH (content) AGAINST ("晴れ") ORDER BY MATCH (content) AGAINST ("晴れ") DESC; - +----+--------------------------------------------------------------+-------+ - | id | content | score | - +----+--------------------------------------------------------------+-------+ - | 3 | 今日は晴れました。明日も晴れるでしょう。 | 2 | - | 1 | 明日の天気は晴れでしょう。 | 1 | - | 4 | 今日は晴れましたが、明日は雨でしょう。 | 1 | - +----+--------------------------------------------------------------+-------+ - 3 rows in set (0.00 sec) - - -全文検索用パーサの変更 ----------------------- - -MySQLは全文検索用のパーサ [#parser]_ を指定する以下のような構文を持っています。:: - - FULLTEXT INDEX (content) WITH PARSER パーサ名 - -しかし、この構文を利用する場合は、あらかじめすべてのパーサをMySQLに登録しておく必要があります。一方、groongaはトークナイザー(MySQLでいうパーサ)を動的に追加することができます。そのため、groognaストレージエンジンでもこの構文を採用するとgroonga側に動的に追加されたトークナイザーに対応できなくなります。groongaに動的に追加されるトークナイザーにはMeCabを用いたトークナイザーもあり、この制限に縛られることは利便性を損なうと判断し、以下のようなコメントを用いた独自の構文を採用することにしました。:: - - FULLTEXT INDEX (content) COMMENT 'parser "TokenMecab"' - -.. note:: - - ``FULLTEXT INDEX`` に ``COMMENT`` を指定できるのはMySQL 5.5からになります。MySQL 5.1を利用している場合は後述の ``groonga_default_parser`` 変数を利用してください。 - -パーサに指定できるのは以下の値です。 - -TokenBigram - バイグラムでトークナイズする。ただし、連続したアルファベット・連続した数字・連続した記号はそれぞれ1つのトークンとして扱う。そのため、3文字以上のトークンも存在する。これはノイズを減らすためである。 - - デフォルト値。 - -TokenMecab - MeCabを用いてトークナイズする。groongaがMeCabサポート付きでビルドされている必要がある。 - -TokenBigramSplitSymbol - バイグラムでトークナイズする。TokenBigramと異なり、記号が連続していても特別扱いして1つのトークンとして扱わず通常のバイグラムの処理を行う。 - - TokenBigramではなくTokenBigramSplitSymbolを利用すると「Is it really!?!?!?」の「!?!?!?」の部分に「!?」でマッチする。TokenBigramの場合は「!?!?!?」でないとマッチしない。 - -TokenBigramSplitSymbolAlpha - バイグラムでトークナイズする。TokenBigramSplitSymbolに加えて、連続したアルファベットも特別扱いせずに通常のバイグラムの処理を行う。 - - TokenBigramではなくTokenBigramSplitSymbolAlphaを利用すると「Is it really?」に「real」でマッチする。TokenBigramの場合は「really」でないとマッチしない。 - -TokenBigramSplitSymbolAlphaDigit - バイグラムでトークナイズする。TokenBigramSplitSymbolAlphaに加えて、連続した数字も特別扱いせずに通常のバイグラムの処理を行う。つまり、すべての字種を特別扱いせずにバイグラムの処理を行う。 - - TokenBigramではなくTokenBigramSplitSymbolAlphaDigitを利用すると「090-0123-4567」に「567」でマッチする。TokenBigramの場合は「4567」でないとマッチしない。 - -TokenBigramIgnoreBlank - バイグラムでトークナイズする。TokenBigramと異なり、空白を無視して処理する。 - - TokenBigramではなくTokenBigramIgnoreBlankを利用すると「み な さ ん 注 目」に「みなさん」でマッチする。TokenBigramの場合は「み な さ ん」でないとマッチしない。 - -TokenBigramIgnoreBlankSplitSymbol - バイグラムでトークナイズする。TokenBigramSplitSymbolと異なり、空白を無視して処理する。 - - TokenBigramSplitSymbolではなくTokenBigramIgnoreBlankSplitSymbolを利用すると「! !? ??」に「???」でマッチする。TokenBigramSplitSymbolの場合は「? ??」でないとマッチしない。 - -TokenBigramIgnoreBlankSplitSymbolAlpha - バイグラムでトークナイズする。TokenBigramSplitSymbolAlphaと異なり、空白を無視して処理する。 - - TokenBigramSplitSymbolAlphaではなくTokenBigramIgnoreBlankSplitSymbolAlphaを利用すると「I am a pen.」に「ama」でマッチする。TokenBigramSplitSymbolAlphaの場合は「am a」でないとマッチしない。 - -TokenBigramIgnoreBlankSplitSymbolAlphaDigit - バイグラムでトークナイズする。TokenBigramSplitSymbolAlphaDigitと異なり、空白を無視して処理する。 - - TokenBigramSplitSymbolAlphaDigitではなくTokenBigramIgnoreBlankSplitSymbolAlphaDigitを利用すると「090 0123 4567」に「9001」でマッチする。TokenBigramSplitSymbolAlphaDigitの場合は「90 01」でないとマッチしない。 - -TokenDelimit - 空白区切りでトークナイズする。 - - 「映画 ホラー 話題」は「映画」・「ホラー」・「話題」にトークナイズされる。 - -TokenDelimitNull - null文字(\\0)区切りでトークナイズする。 - - 「映画\\0ホラー\\0話題」は「映画」・「ホラー」・「話題」にトークナイズされる。 - -TokenUnigram - ユニグラムでトークナイズする。ただし、連続したアルファベット・連続した数字・連続した記号はそれぞれ1つのトークンとして扱う。そのため、2文字以上のトークンも存在する。これはノイズを減らすためである。 - -TokenTrigram - トリグラムでトークナイズする。ただし、連続したアルファベット・連続した数字・連続した記号はそれぞれ1つのトークンとして扱う。そのため、4文字以上のトークンも存在する。これはノイズを減らすためである。 - -デフォルトのパーサは ``configure`` の ``--with-default-parser`` オプションでビルド時に指定することができます。:: - - ./configure --with-default-parser TokenMecab ... - -また、my.cnfまたはSQL内で ``groonga_default_parser`` 変数を指定することでも指定できます。my.cnfで指定するとMySQLを再起動しても値は変更されたままですが、反映させるために再起動しなければいけません。一方、SQLで指定した場合はすぐに設定が反映されますが、MySQLが再起動すると設定は失われます。 - -my.cnf:: - - [mysqld] - groonga_default_parser=TokenMecab - -SQL:: - - mysql> SET GLOBAL groonga_default_parser = TokenMecab; - Query OK, 0 rows affected (0.00 sec) - -位置情報検索の利用方法 ----------------------- - -ストレージモードでは全文検索だけではなく位置情報検索も高速に実行できます。ただし、MyISAMとは異なりデータとして格納できるのはPOINT型のみです。LINEなどの他のデータ型は保存できません。また、インデックスを用いた高速な検索に対応しているのはMBRContainsだけです。MBRDisjointなどには対応していません。 - -位置情報検索を利用する場合のテーブル定義はMyISAMと同様にPOINT型のカラムを定義し、そのカラムに対してSPATIAL INDEXを指定します。:: - - mysql> CREATE TABLE shops ( - -> id INT PRIMARY KEY AUTO_INCREMENT, - -> name VARCHAR(255), - -> location POINT NOT NULL, - -> SPATIAL INDEX (location) - -> ) ENGINE = groonga; - Query OK, 0 rows affected (0.06 sec) - -データの登録方法もMyISAMのときと同様にGeomFromText()関数を使って文字列からPOINT型の値を作成します。:: - - mysql> INSERT INTO shops VALUES (null, '根津のたいやき', GeomFromText('POINT(139.762573 35.720253)')); - Query OK, 1 row affected (0.00 sec) - - mysql> INSERT INTO shops VALUES (null, '浪花家', GeomFromText('POINT(139.796234 35.730061)')); - Query OK, 1 row affected (0.00 sec) - - mysql> INSERT INTO shops VALUES (null, '柳屋 たい焼き', GeomFromText('POINT(139.783981 35.685341)')); - Query OK, 1 row affected (0.00 sec) - -池袋駅(139.7101 35.7292)が左上の点、東京駅(139.7662 35.6815)が右下の点となるような長方形内にあるお店を探す場合は以下のようなSELECTになります。:: - - mysql> SELECT id, name, AsText(location) FROM shops WHERE MBRContains(GeomFromText('LineString(139.7101 35.7292, 139.7662 35.6815)'), location); - +----+-----------------------+------------------------------------------+ - | id | name | AsText(location) | - +----+-----------------------+------------------------------------------+ - | 1 | 根津のたいやき | POINT(139.762572777778 35.7202527777778) | - +----+-----------------------+------------------------------------------+ - 1 row in set (0.00 sec) - -位置情報で検索できていますね! - -レコードIDの取得方法 --------------------- - -groongaではテーブルにレコードを追加した際にレコードを一意に識別するための番号が割当てられます。 - -groongaストレージエンジンではアプリケーションの開発を容易にするため、このレコードIDをSQLで取得できるようになっています。 - -レコードIDを取得するためには、テーブル定義時に ``_id`` という名前のカラムを作成して下さい。 :: - - mysql> CREATE TABLE memos ( - -> _id INT, - > content VARCHAR(255), - -> UNIQUE KEY (_id) USING HASH - -> ) ENGINE = groonga; - Query OK, 0 rows affected (0.04 sec) - -_idカラムのデータ型は整数型(TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT)である必要があります。 - -また_idカラムにはインデックスを作成することが可能ですが、HASH形式である必要があります。 - -INSERTでテーブルにレコードを追加してみましょう。_idカラムは仮想カラムとして実装されており、また_idの値であるレコードIDはgroongaにより割当てられるため、SQLによる更新時に値を指定することはできません。 -更新対象から外すか、値に ``null`` を使用する必要があります。 :: - - mysql> INSERT INTO memos VALUES (null, "今夜はさんま。"); - Query OK, 1 row affected (0.00 sec) - - mysql> INSERT INTO memos VALUES (null, "明日はgroongaをアップデート。"); - Query OK, 1 row affected (0.00 sec) - - mysql> INSERT INTO memos VALUES (null, "帰りにおだんご。"); - Query OK, 1 row affected (0.00 sec) - - mysql> INSERT INTO memos VALUES (null, "金曜日は肉の日。"); - Query OK, 1 row affected (0.00 sec) - -レコードIDを取得するには、_idカラムを含むようにしてSELECTを行います。 :: - - mysql> SELECT * FROM memos; - +------+------------------------------------------+ - | _id | content | - +------+------------------------------------------+ - | 1 | 今夜はさんま。 | - | 2 | 明日はgroongaをアップデート。 | - | 3 | 帰りにおだんご。 | - | 4 | 金曜日は肉の日。 | - +------+------------------------------------------+ - 4 rows in set (0.00 sec) - -また直前のINSERTにより割当てられたレコードIDについては、last_insert_grn_id関数により取得することもできます。 :: - - mysql> INSERT INTO memos VALUES (null, "冷蔵庫に牛乳が残り1本。"); - Query OK, 1 row affected (0.00 sec) - - mysql> SELECT last_insert_grn_id(); - +----------------------+ - | last_insert_grn_id() | - +----------------------+ - | 5 | - +----------------------+ - 1 row in set (0.00 sec) - -last_insert_grn_id関数はユーザ定義関数(UDF)としてgroongaストレージエンジンに含まれていますが、インストール時にCREATE FUNCTIONでMySQLに追加していない場合には、以下の関数定義DDLを実行しておく必要があります。 :: - - mysql> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER SONAME 'ha_groonga.so'; - -ご覧のように_idカラムやlast_insert_grn_id関数を通じてレコードIDを取得することができました。ここで取得したレコードIDは後続のUPDATEなどのSQL文で利用すると便利です。 :: - - mysql> UPDATE memos SET content = "冷蔵庫に牛乳はまだたくさんある。" WHERE _id = last_insert_grn_id(); - Query OK, 1 row affected (0.00 sec) - Rows matched: 1 Changed: 1 Warnings: 0 - -ログ出力 --------- - -groongaストレージエンジンではデフォルトでログの出力を行うようになっています。 - -ログファイルはMySQLのデータディレクトリ直下に ``groonga.log`` というファイル名で出力されます。 - -以下はログの出力例です。 :: - - 2010-10-07 17:32:39.209379|n|b1858f80|groonga-storage-engine started. - 2010-10-07 17:32:44.934048|d|46953940|hash get not found (key=test) - 2010-10-07 17:32:44.936113|d|46953940|hash put (key=test) - -ログのデフォルトの出力レベルはNOTICE(必要な情報のみ出力。デバッグ情報などは出力しない)となっております。 - -ログの出力レベルは ``groonga_log_level`` というシステム変数で確認することができます(グローバル変数)。またSET文で動的に出力レベルを変更することもできます。 :: - - mysql> SHOW VARIABLES LIKE 'groonga_log_level'; - +-------------------+--------+ - | Variable_name | Value | - +-------------------+--------+ - | groonga_log_level | NOTICE | - +-------------------+--------+ - 1 row in set (0.00 sec) - - mysql> SET GLOBAL groonga_log_level=DUMP; - Query OK, 0 rows affected (0.00 sec) - - mysql> SHOW VARIABLES LIKE 'groonga_log_level'; - +-------------------+-------+ - | Variable_name | Value | - +-------------------+-------+ - | groonga_log_level | DUMP | - +-------------------+-------+ - 1 row in set (0.00 sec) - -設定可能なログレベルは以下の通りです。 - -* NONE -* EMERG -* ALERT -* CRIT -* ERROR -* WARNING -* NOTICE -* INFO -* DEBUG -* DUMP - -またFLUSH LOGSでログの再オープンを行うことができます。MySQLサーバを停止せずにログのローテートを行いたいような場合には、以下の手順で実行すると良いでしょう。 - -1. ``groonga.log`` ファイルの名前を変更(OSコマンドのmvなどで) -2. MySQLサーバに対して"FLUSH LOGS"を実行(mysqlコマンドあるいはmysqladminコマンドにて) - -カラムの刈り込み ----------------- - -groongaでは各カラムごとにファイルを分けてデータを格納する「カラムストア方式」が採用されており、groongaストレージエンジンではこの特性を活かすためにテーブルアクセス時に必要なカラムに対してのみアクセスを行う実装を行っています。 - -この高速化の仕組みはgroongaストレージエンジン内部で自動的に行われるため、特に設定などを行う必要はありません。 - -例えば以下のようにカラムが20個定義されているテーブルが存在するものと仮定します。 :: - - CREATE TABLE t1 ( - c1 INT PRIMARY KEY AUTO_INCREMENT, - c2 INT, - c3 INT, - ... - c11 VARCHAR(20), - c12 VARCHAR(20), - ... - c20 DATETIME - ) ENGINE = groonga DEFAULT CHARSET utf8; - -この時、以下のようなSELECT文が発行される場合、groongaストレージエンジンではSELECT句およびWHERE句で参照しているカラムに対してのみデータの読み取りを行ってSQL文を処理します(内部的に不要なカラムに対してはアクセスしません)。 :: - - SELECT c1, c2, c11 FROM t1 WHERE c2 = XX AND c12 = "XXX"; - -このケースではc1,c2,c11,c12に対してのみアクセスが行われ、SQL文が高速に処理されることになります。 - -行カウント高速化 ----------------- - -COUNT(\*)などの行カウントを行う場合と通常のSELECTによるデータ参照を行う場合に対して、従来よりMySQLではストレージエンジンの呼び出しを行う部分(=ストレージエンジンインタフェース)における区別が存在していないため、行数をカウントするだけで良いような場合にもレコードアクセス(SELECTの結果には含まれないデータへのアクセス)が行われる問題があります。 - -groongaストレージエンジンの前身であるTritonn(MySQL+Senna)ではこの問題に対して"2indパッチ"という不要なレコードアクセスを省略する仕組みを独自に実装してこの性能問題を回避していました。 - -これに引き続き、groongaストレージエンジンでも行カウントを高速化するための仕組みを実装しています。 - -例えば以下のSELECT文では不要なカラムデータの読み取りは省略され、必要最小限のコストで行カウントの結果を返すことができます。 :: - - SELECT COUNT(*) FROM t1 WHERE MATCH(c2) AGAINST("hoge"); - -行カウント高速化の処理が行われたかどうかはステータス変数で確認することもできます。:: - - mysql> SHOW STATUS LIKE 'groonga_count_skip'; - +--------------------+-------+ - | Variable_name | Value | - +--------------------+-------+ - | groonga_count_skip | 1 | - +--------------------+-------+ - 1 row in set (0.00 sec) - -行カウント高速化の処理が行われる度に ``groonga_count_skip`` ステータス変数がインクリメントされます。 - -備考:この高速化機能はインデックスを用いて実装されています。現在のところインデックスアクセスのみでレコードが特定できるパタンでのみ有効に機能します。 - -全文検索時の ORDER BY LIMIT 高速化 ----------------------------------- - -一般的にMySQLでは"ORDER BY"はインデックス経由のレコード参照が行えればほぼノーコストで処理可能であり、"LIMIT"は検索結果が大量にヒットする場合でも処理対象を限定することでコストを一定に抑える効果があります。 - -しかし例えば全文検索のスコアの降順+LIMITのように"ORDER BY"の処理の際にインデックスが効かないクエリの場合、検索ヒット件数に比例したコストがかかってしまうため、特に大量の検索がヒットするようなキーワード検索においてクエリ処理に極端に時間がかかってしまうケースがあります。 - -Tritonnではこの問題に対して特に対応はできていませんでしたが、最新レポジトリではsen_records_sort関数を活用してSennaからの読み出しをスコアの降順に対応させることでSQLクエリからORDER BY句を取り除く(※スコア降順を指定していたケースに対してのみ有効)回避方法を導入しました。 - -groongaストレージエンジンでも ORDER BY LIMIT を高速化するための仕組みを実装しています。 - -例えば以下のSELECT文では ORDER BY LIMIT は、groonga内で処理され、必要最小限のレコードだけをMySQLに返却しています。 :: - - SELECT * FROM t1 WHERE MATCH(c2) AGAINST("hoge") ORDER BY c1 LIMIT 1; - -ORDER BY LIMIT 高速化の処理が行われたかどうかはステータス変数で確認することもできます。:: - - mysql> SHOW STATUS LIKE 'groonga_fast_order_limit'; - +--------------------------+-------+ - | Variable_name | Value | - +--------------------------+-------+ - | groonga_fast_order_limit | 1 | - +--------------------------+-------+ - 1 row in set (0.00 sec) - -ORDER BY LIMIT 高速化の処理が行われる度に ``groonga_fast_order_limit`` ステータス変数がインクリメントされます。 - -備考:この高速化機能は、「select ... match against order by _score desc limit X, Y」を狙い撃ちした高速化で、現在のところ以下の条件が成立した場合に機能します。 - -* where句がmatch...againstのみ -* joinしていない -* limitの指定がある -* order byの指定がカラム(_id含む)またはwhere句に指定したmatch...againstである - -.. rubric:: 脚注 - -.. [#score] `MySQL 5.1 リファレンスマニュアル :: 11 関数と演算子 :: 11.7 全文検索関数 <http://dev.mysql.com/doc/refman/5.1/ja/fulltext-search.html>`_ -.. [#parser] groongaではトークナイザーと呼んでいる。 Deleted: doc/ja/source/userguide/wrapper.rst (+0 -321) 100644 =================================================================== --- doc/ja/source/userguide/wrapper.rst 2011-10-29 14:43:34 +0000 (e4cca35) +++ /dev/null @@ -1,321 +0,0 @@ -.. highlightlang:: none - -ラッパーモード -============== - -ここでは groonga ストレージエンジンにおけるラッパーモードの利用方法を説明します。 - -ラッパーモードの利用方法 ------------------------- - -ラッパーモードでは、既存のストレージエンジンをラップするかたちで groonga ストレージエンジンが動作します。ラップする対象となるストレージエンジンは、現在のところ SQL のコメントを利用して ``COMMENT = 'engine "innodb"'`` のように指定するようになっています。 - -.. note:: - - 現在のところ、ラッパーモードではテーブルに必ずプライマリーキーを設定する必要があります。ストレージモードはこの限りではありません。 - -.. note:: - - ラッパーモードでは現在ストレージモードでサポートされていない、以下をサポートしています。 - * null値 - -全文検索の利用方法 ------------------- - -それでは早速 groonga ストレージエンジンのラッパーモードを利用して、テーブルを1つ作成してみましょう。 :: - - mysql> CREATE TABLE diaries ( - -> id INT PRIMARY KEY AUTO_INCREMENT, - -> content VARCHAR(255), - -> FULLTEXT INDEX (content) - -> ) ENGINE = groonga COMMENT = 'engine "innodb"' DEFAULT CHARSET utf8; - Query OK, 0 rows affected (0.52 sec) - -次に INSERT でデータを投入してみましょう。 :: - - mysql> INSERT INTO diaries (content) VALUES ("明日の天気は晴れでしょう。"); - Query OK, 1 row affected (0.26 sec) - - mysql> INSERT INTO diaries (content) VALUES ("明日の天気は雨でしょう。"); - Query OK, 1 row affected (0.29 sec) - -データの投入が終了したら、全文検索を実行してみます。 :: - - mysql> SELECT * FROM diaries WHERE MATCH(content) AGAINST("晴れ"); - +----+-----------------------------------------+ - | id | content | - +----+-----------------------------------------+ - | 1 | 明日の天気は晴れでしょう。 | - +----+-----------------------------------------+ - 1 row in set (0.00 sec) - -お、検索できましたね。 - -検索スコアの取得方法 --------------------- - -全文検索を行う際、指定したキーワードにより内容が一致するレコードを上位に表示したいというような場合があります。そうしたケースでは検索スコアを利用します。 - -検索スコアはMySQLの標準的な方法で取得 [#score]_ できます。つまり、SELECTの取得するカラム名を指定するところやORDER BYのところにMATCH...AGAINSTを指定します。 - -それでは実際にやってみましょう。:: - - mysql> INSERT INTO diaries (content) VALUES ("今日は晴れました。明日も晴れるでしょう。"); - Query OK, 1 row affected (0.18 sec) - - mysql> INSERT INTO diaries (content) VALUES ("今日は晴れましたが、明日は雨でしょう。"); - Query OK, 1 row affected (0.46 sec) - - mysql> SELECT *, MATCH (content) AGAINST ("晴れ") FROM diaries WHERE MATCH (content) AGAINST ("晴れ") ORDER BY MATCH (content) AGAINST ("晴れ") DESC; - +----+--------------------------------------------------------------+------------------------------------+ - | id | content | MATCH (content) AGAINST ("晴れ") | - +----+--------------------------------------------------------------+------------------------------------+ - | 3 | 今日は晴れました。明日も晴れるでしょう。 | 2 | - | 1 | 明日の天気は晴れでしょう。 | 1 | - | 4 | 今日は晴れましたが、明日は雨でしょう。 | 1 | - +----+--------------------------------------------------------------+------------------------------------+ - 3 rows in set (0.01 sec) - - -検索対象の文字列 ``晴れ`` をより多く含む、すなわち検索スコアの高い ``id = 3`` のメッセージが上に来ていることが確認できます。また、SELECT句にMATCH AGAINSTを記述しているため、検索スコアも取得できています。 - -属性名を変更したい場合は ``AS`` を使って下さい。 :: - - mysql> SELECT *, MATCH (content) AGAINST ("晴れ") AS score FROM diaries WHERE MATCH (content) AGAINST ("晴れ") ORDER BY MATCH (content) AGAINST ("晴れ") DESC; - +----+--------------------------------------------------------------+-------+ - | id | content | score | - +----+--------------------------------------------------------------+-------+ - | 3 | 今日は晴れました。明日も晴れるでしょう。 | 2 | - | 1 | 明日の天気は晴れでしょう。 | 1 | - | 4 | 今日は晴れましたが、明日は雨でしょう。 | 1 | - +----+--------------------------------------------------------------+-------+ - 3 rows in set (0.00 sec) - -全文検索用パーサの変更 ----------------------- - -MySQLは全文検索用のパーサ [#parser]_ を指定する以下のような構文を持っています。:: - - FULLTEXT INDEX (content) WITH PARSER パーサ名 - -しかし、この構文を利用する場合は、あらかじめすべてのパーサをMySQLに登録しておく必要があります。一方、groongaはトークナイザー(MySQLでいうパーサ)を動的に追加することができます。そのため、groognaストレージエンジンでもこの構文を採用するとgroonga側に動的に追加されたトークナイザーに対応できなくなります。groongaに動的に追加されるトークナイザーにはMeCabを用いたトークナイザーもあり、この制限に縛られることは利便性を損なうと判断し、以下のようなコメントを用いた独自の構文を採用することにしました。:: - - FULLTEXT INDEX (content) COMMENT 'parser "TokenMecab"' - -.. note:: - - ``FULLTEXT INDEX`` に ``COMMENT`` を指定できるのはMySQL 5.5からになります。MySQL 5.1を利用している場合は後述の ``groonga_default_parser`` 変数を利用してください。 - -パーサに指定できるのは以下の値です。 - -TokenBigram - バイグラムでトークナイズする。ただし、連続したアルファベット・連続した数字・連続した記号はそれぞれ1つのトークンとして扱う。そのため、3文字以上のトークンも存在する。これはノイズを減らすためである。 - - デフォルト値。 - -TokenMecab - MeCabを用いてトークナイズする。groongaがMeCabサポート付きでビルドされている必要がある。 - -TokenBigramSplitSymbol - バイグラムでトークナイズする。TokenBigramと異なり、記号が連続していても特別扱いして1つのトークンとして扱わず通常のバイグラムの処理を行う。 - - TokenBigramではなくTokenBigramSplitSymbolを利用すると「Is it really!?!?!?」の「!?!?!?」の部分に「!?」でマッチする。TokenBigramの場合は「!?!?!?」でないとマッチしない。 - -TokenBigramSplitSymbolAlpha - バイグラムでトークナイズする。TokenBigramSplitSymbolに加えて、連続したアルファベットも特別扱いせずに通常のバイグラムの処理を行う。 - - TokenBigramではなくTokenBigramSplitSymbolAlphaを利用すると「Is it really?」に「real」でマッチする。TokenBigramの場合は「really」でないとマッチしない。 - -TokenBigramSplitSymbolAlphaDigit - バイグラムでトークナイズする。TokenBigramSplitSymbolAlphaに加えて、連続した数字も特別扱いせずに通常のバイグラムの処理を行う。つまり、すべての字種を特別扱いせずにバイグラムの処理を行う。 - - TokenBigramではなくTokenBigramSplitSymbolAlphaDigitを利用すると「090-0123-4567」に「567」でマッチする。TokenBigramの場合は「4567」でないとマッチしない。 - -TokenBigramIgnoreBlank - バイグラムでトークナイズする。TokenBigramと異なり、空白を無視して処理する。 - - TokenBigramではなくTokenBigramIgnoreBlankを利用すると「み な さ ん 注 目」に「みなさん」でマッチする。TokenBigramの場合は「み な さ ん」でないとマッチしない。 - -TokenBigramIgnoreBlankSplitSymbol - バイグラムでトークナイズする。TokenBigramSplitSymbolと異なり、空白を無視して処理する。 - - TokenBigramSplitSymbolではなくTokenBigramIgnoreBlankSplitSymbolを利用すると「! !? ??」に「???」でマッチする。TokenBigramSplitSymbolの場合は「? ??」でないとマッチしない。 - -TokenBigramIgnoreBlankSplitSymbolAlpha - バイグラムでトークナイズする。TokenBigramSplitSymbolAlphaと異なり、空白を無視して処理する。 - - TokenBigramSplitSymbolAlphaではなくTokenBigramIgnoreBlankSplitSymbolAlphaを利用すると「I am a pen.」に「ama」でマッチする。TokenBigramSplitSymbolAlphaの場合は「am a」でないとマッチしない。 - -TokenBigramIgnoreBlankSplitSymbolAlphaDigit - バイグラムでトークナイズする。TokenBigramSplitSymbolAlphaDigitと異なり、空白を無視して処理する。 - - TokenBigramSplitSymbolAlphaDigitではなくTokenBigramIgnoreBlankSplitSymbolAlphaDigitを利用すると「090 0123 4567」に「9001」でマッチする。TokenBigramSplitSymbolAlphaDigitの場合は「90 01」でないとマッチしない。 - -TokenDelimit - 空白区切りでトークナイズする。 - - 「映画 ホラー 話題」は「映画」・「ホラー」・「話題」にトークナイズされる。 - -TokenDelimitNull - null文字(\\0)区切りでトークナイズする。 - - 「映画\\0ホラー\\0話題」は「映画」・「ホラー」・「話題」にトークナイズされる。 - -TokenUnigram - ユニグラムでトークナイズする。ただし、連続したアルファベット・連続した数字・連続した記号はそれぞれ1つのトークンとして扱う。そのため、2文字以上のトークンも存在する。これはノイズを減らすためである。 - -TokenTrigram - トリグラムでトークナイズする。ただし、連続したアルファベット・連続した数字・連続した記号はそれぞれ1つのトークンとして扱う。そのため、4文字以上のトークンも存在する。これはノイズを減らすためである。 - -デフォルトのパーサは ``configure`` の ``--with-default-parser`` オプションでビルド時に指定することができます。:: - - ./configure --with-default-parser TokenMecab ... - -また、my.cnfまたはSQL内で ``groonga_default_parser`` 変数を指定することでも指定できます。my.cnfで指定するとMySQLを再起動しても値は変更されたままですが、反映させるために再起動しなければいけません。一方、SQLで指定した場合はすぐに設定が反映されますが、MySQLが再起動すると設定は失われます。 - -my.cnf:: - - [mysqld] - groonga_default_parser=TokenMecab - -SQL:: - - mysql> SET GLOBAL groonga_default_parser = TokenMecab; - Query OK, 0 rows affected (0.00 sec) - -.. - 位置情報検索の利用方法 - ---------------------- - - ラッパーモードではラップ対象のストレージエンジンに全文検索機能だけではなく位置情報検索機能も追加します。ただし、インデックスを用いた高速な検索に対応しているのはMBRContainsだけです。MBRDisjointなどには対応していません。 - - 位置情報検索を利用する場合のテーブル定義はMyISAMと同様にPOINT型のカラムを定義し、そのカラムに対してSPATIAL INDEXを指定します。:: - - mysql> CREATE TABLE shops ( - -> id INT PRIMARY KEY AUTO_INCREMENT, - -> name VARCHAR(255), - -> location POINT NOT NULL, - -> SPATIAL INDEX (location) - -> ) ENGINE = groonga COMMENT = 'engine "innodb"'; - Query OK, 0 rows affected (0.34 sec) - - データの登録方法もMyISAMのときと同様にGeomFromText()関数を使って文字列からPOINT型の値を作成します。:: - - mysql> INSERT INTO shops VALUES (null, '根津のたいやき', GeomFromText('POINT(139.762573 35.720253)')); - Query OK, 1 row affected (0.26 sec) - - mysql> INSERT INTO shops VALUES (null, '浪花家', GeomFromText('POINT(139.796234 35.730061)')); - Query OK, 1 row affected (0.06 sec) - - mysql> INSERT INTO shops VALUES (null, '柳屋 たい焼き', GeomFromText('POINT(139.783981 35.685341)')); - Query OK, 1 row affected (0.02 sec) - - 池袋駅(139.7101 35.7292)が左上の点、東京駅(139.7662 35.6815)が右下の点となるような長方形内にあるお店を探す場合は以下のようなSELECTになります。:: - - mysql> SELECT id, name, AsText(location) FROM shops WHERE MBRContains(GeomFromText('LineString(139.7101 35.7292, 139.7662 35.6815)'), location); - +----+-----------------------+------------------------------------------+ - | id | name | AsText(location) | - +----+-----------------------+------------------------------------------+ - | 1 | 根津のたいやき | POINT(139.762572777778 35.7202527777778) | - +----+-----------------------+------------------------------------------+ - 1 row in set (0.00 sec) - - 位置情報で検索できていますね! - -ログ出力 --------- - -groongaストレージエンジンではデフォルトでログの出力を行うようになっています。 - -ログファイルはMySQLのデータディレクトリ(/var/lib/mysql/ など)直下に ``groonga.log`` というファイル名で出力されます。 - -以下はログの出力例です。 :: - - 2011-06-24 11:11:31.282121|n|6bdea740|groonga-storage-engine started. - 2011-06-24 11:11:31.282154|n|6bdea740|log level is 'NOTICE' - 2011-06-24 11:30:58.485508|n|3cda6700|DDL:table_create x - 2011-06-24 11:31:05.131690|n|cee84700|DDL:obj_remove x - 2011-06-24 13:37:31.692572|n|86ceb700|DDL:column_create t1_0001 c2 - 2011-06-24 13:37:31.781556|n|86ceb700|DDL:set_source t1_0001.c2 t1.c2 - 2011-06-24 13:49:27.767387|n|5cd1f700|DDL:obj_remove t1_0001 - 2011-06-24 14:33:55.867480| |8cd59700|96a20c50|:18446744072478952540 filter(2) - -ログのデフォルトの出力レベルは NOTICE (必要な情報のみ出力。デバッグ情報などは出力しない)となっています。 - -ログの出力レベルは ``groonga_log_level`` というシステム変数で確認することができます(グローバル変数)。またSET文で動的に出力レベルを変更することもできます。 :: - - mysql> SHOW VARIABLES LIKE 'groonga_log_level'; - +-------------------+--------+ - | Variable_name | Value | - +-------------------+--------+ - | groonga_log_level | NOTICE | - +-------------------+--------+ - 1 row in set (0.00 sec) - - mysql> SET GLOBAL groonga_log_level=DUMP; - Query OK, 0 rows affected (0.05 sec) - - mysql> SHOW VARIABLES LIKE 'groonga_log_level'; - +-------------------+-------+ - | Variable_name | Value | - +-------------------+-------+ - | groonga_log_level | DUMP | - +-------------------+-------+ - 1 row in set (0.00 sec) - -設定可能なログレベルは以下の通りです。 - -* NONE -* EMERG -* ALERT -* CRIT -* ERROR -* WARNING -* NOTICE -* INFO -* DEBUG -* DUMP - -またFLUSH LOGSでログの再オープンを行うことができます。MySQLサーバを停止せずにログのローテートを行いたいような場合には、以下の手順で実行すると良いでしょう。 - -1. ``groonga.log`` ファイルの名前を変更(OSコマンドのmvなどで) -2. MySQLサーバに対して"FLUSH LOGS"を実行(mysqlコマンドあるいはmysqladminコマンドにて) - -全文検索時の ORDER BY LIMIT 高速化 ----------------------------------- - -一般的にMySQLでは"ORDER BY"はインデックス経由のレコード参照が行えればほぼノーコストで処理可能であり、"LIMIT"は検索結果が大量にヒットする場合でも処理対象を限定することでコストを一定に抑える効果があります。 - -しかし例えば全文検索のスコアの降順+LIMITのように"ORDER BY"の処理の際にインデックスが効かないクエリの場合、検索ヒット件数に比例したコストがかかってしまうため、特に大量の検索がヒットするようなキーワード検索においてクエリ処理に極端に時間がかかってしまうケースがあります。 - -Tritonnではこの問題に対して特に対応はできていませんでしたが、最新レポジトリではsen_records_sort関数を活用してSennaからの読み出しをスコアの降順に対応させることでSQLクエリからORDER BY句を取り除く(※スコア降順を指定していたケースに対してのみ有効)回避方法を導入しました。 - -groongaストレージエンジンでも ORDER BY LIMIT を高速化するための仕組みを実装しています。 - -例えば以下のSELECT文では ORDER BY LIMIT は、groonga内で処理され、必要最小限のレコードだけをMySQLに返却しています。 :: - - SELECT * FROM t1 WHERE MATCH(c2) AGAINST("hoge") ORDER BY c1 LIMIT 1; - -ORDER BY LIMIT 高速化の処理が行われたかどうかはステータス変数で確認することもできます。:: - - mysql> SHOW STATUS LIKE 'groonga_fast_order_limit'; - +--------------------------+-------+ - | Variable_name | Value | - +--------------------------+-------+ - | groonga_fast_order_limit | 1 | - +--------------------------+-------+ - 1 row in set (0.00 sec) - -ORDER BY LIMIT 高速化の処理が行われる度に ``groonga_fast_order_limit`` ステータス変数がインクリメントされます。 - -備考:この高速化機能は、「select ... match against order by _score desc limit X, Y」を狙い撃ちした高速化で、現在のところ以下の条件が成立した場合に機能します。 - -* where句がmatch...againstのみ -* joinしていない -* limitの指定がある -* order byの指定がカラム(_id含む)またはwhere句に指定したmatch...againstである - -.. rubric:: 脚注 - -.. [#score] `MySQL 5.1 リファレンスマニュアル :: 11 関数と演算子 :: 11.7 全文検索関数 <http://dev.mysql.com/doc/refman/5.1/ja/fulltext-search.html>`_ -.. [#parser] groongaではトークナイザーと呼んでいる。 Deleted: doc/ja/sphinx2github.sh (+0 -27) 100755 =================================================================== --- doc/ja/sphinx2github.sh 2011-10-29 14:43:34 +0000 (0075987) +++ /dev/null @@ -1,27 +0,0 @@ -#!/bin/sh - -rename() -{ - old_name=$1 - new_name=$2 - - if [ -d $old_name ]; then - rm -rf $new_name - mv $old_name $new_name - fi -} - -cd html - -rename _static static -rename _sources sources -rename _images images - -file_names=$(find . -name "*.html") -for file_name in $file_names; do - sed -e 's/_static/static/g' $file_name | - sed -e 's/_sources/sources/g' | - sed -e 's/_images/images/g' > buf.txt - cp buf.txt $file_name - rm -f buf.txt -done