.. -*- rst -*- .. highlightlang:: none .. groonga-include : data.txt .. groonga-command .. database: tutorial ãã¾ãã¾ãªæ¤ç´¢æ¡ä»¶ã®æå® ======================== groongaã¯ãJavaScriptã«ä¼¼ãææ³ã§ã®æ¡ä»¶çµè¾¼ããè¨ç®ããå¤ãç¨ããã½ã¼ããè¡ããã¨ãã§ãã¾ããã¾ããä½ç½®æ å ±(緯度ã»çµåº¦)ãç¨ããçµè¾¼ã»ã½ã¼ããè¡ããã¨ãã§ãã¾ãã JavaScriptã«ä¼¼ãææ³ã§ã®çµè¾¼ã»å ¨ææ¤ç´¢ -------------------------------------- selectã³ãã³ãã®filterãã©ã¡ã¼ã¿ã¯ãqueryãã©ã¡ã¼ã¿ã¨åæ§ã«ãã¬ã³ã¼ãã®æ¤ç´¢æ¡ä»¶ãæå®ãã¾ããfilterãã©ã¡ã¼ã¿ã¨queryãã©ã¡ã¼ã¿ãç°ãªãç¹ã¯ãfilterãã©ã¡ã¼ã¿ã«ã¯ãJavaScriptã®å¼ã«ä¼¼ãææ³ã§æ¡ä»¶ãæå®ããç¹ã§ãã .. groonga-command .. include:: ../example/tutorial/search-1.log .. select --table Site --filter "_id <= 1" --output_columns _id,_key ããã§ãfilterãã©ã¡ã¼ã¿ã«ã¯ _id <= 1 ã¨ããæ¡ä»¶ãæå®ãã¦ãã¾ãããã®å ´åã¯_idã®å¤ã1以ä¸ã®ã¬ã³ã¼ããæ¤ç´¢çµæã¨ãã¦å¾ããã¾ãã ã¾ãã&& ã || ã使ã£ã¦ãæ¡ä»¶ã®ANDã»ORæå®ããããã¨ãã§ãã¾ãã .. groonga-command .. include:: ../example/tutorial/search-2.log .. select --table Site --filter "_id >= 4 && _id <= 6" --output_columns _id,_key .. select --table Site --filter "_id <= 2 || _id >= 7" --output_columns _id,_key queryãã©ã¡ã¼ã¿ã¨filterãã©ã¡ã¼ã¿ãåæã«æå®ããã¨ã両è ã®æ¡ä»¶ãã¨ãã«æºããã¬ã³ã¼ããçµæã¨ãã¦è¿ãã¾ãã scorerãå©ç¨ããã½ã¼ã ---------------------- selectã³ãã³ãã®scorerãã©ã¡ã¼ã¿ã¯ã å ¨ææ¤ç´¢ãè¡ã£ãçµæã®åã¬ã³ã¼ãã«å¯¾ãã¦å¦çãè¡ãããã®ãã©ã¡ã¼ã¿ã§ãã filterãã©ã¡ã¼ã¿ã¨åæ§ã«ã JavaScriptã®å¼ã«ä¼¼ããªææ³ã§æ§ã ãªæ¡ä»¶ãæå®ãããã¨ãã§ãã¾ãã .. groonga-command .. include:: ../example/tutorial/search-3.log .. select --table Site --filter "1" --scorer "_score = rand()" --output_columns _id,_key,_score --sortby _score .. select --table Site --filter "1" --scorer "_score = rand()" --output_columns _id,_key,_score --sortby _score æ¤ç´¢çµæã«ã¯ã'_score'ã¨ããååã®ãå ¨ææ¤ç´¢ã®ã¹ã³ã¢ãä»£å ¥ããã¦ããä»®æ³çãªã«ã©ã ãä»ä¸ããããã¨ããã¥ã¼ããªã¢ã«ä¸ã½ã¼ãã®é ç®ã§èª¬æãã¾ããã ä¸è¨ã®å®è¡ä¾ã§ã¯ãscorerãã©ã¡ã¼ã¿ã« _score = rand() ã¨ããæ¡ä»¶ãæå®ãã¦ãã¾ããããã§ã¯ãrand()ã¨ããä¹±æ°ãè¿ãé¢æ°ãç¨ãã¦ãå ¨ææ¤ç´¢ã®ã¹ã³ã¢ãä¹±æ°ã§ä¸æ¸ããã¦ãã¾ãã sortbyãã©ã¡ã¼ã¿ã«ã¯ã _score ãæå®ãã¦ãã¾ããããã¯ãã¹ã³ã¢é ã«æé ã«ã½ã¼ããããã¨ãæå³ãã¦ãã¾ãã ãã£ã¦ãä¸è¨ã®ã¯ã¨ãªã¯å®è¡ããããã³ã«æ¤ç´¢çµæã®ä¸¦ã³é ãã©ã³ãã ã«å¤ããã¾ãã ä½ç½®æ å ±ãç¨ããçµè¾¼ã»ã½ã¼ã ---------------------------- groongaã§ã¯ãä½ç½®æ å ±ï¼çµç·¯åº¦ï¼ãä¿åãããã¨ãã§ãã¾ããã¾ããä¿åããçµç·¯åº¦ãç¨ãã¦çµè¾¼ãã½ã¼ããã§ãã¾ãã ä½ç½®æ å ±ãä¿åããããã®ã«ã©ã ã®åã¨ãã¦ãTokyoGeoPoint/WGS84GeoPointã®ï¼ã¤ã®åãããã¾ããåè ã¯æ¥æ¬æ¸¬å°ç³»ãå¾è ã¯ä¸ç測å°ç³»(WGS84ç¸å½)ã®çµç·¯åº¦ãä¿åãã¾ãã çµç·¯åº¦ã¯ä»¥ä¸ã®ããããã®å½¢å¼ã®æååã¨ãã¦æå®ãã¾ãã * "[緯度ã®ããªç§]x[çµåº¦ã®ããªç§]"ï¼ä¾: "128452975x503157902"ï¼ * "[緯度ã®ããªç§],[çµåº¦ã®ããªç§]"ï¼ä¾: "128452975,503157902"ï¼ * "[緯度ã®å°æ°è¡¨è¨ã®åº¦æ°]x[çµåº¦ã®å°æ°è¡¨è¨ã®åº¦æ°]"ï¼ä¾: "35.6813819x139.7660839"ï¼ * "[緯度ã®å°æ°è¡¨è¨ã®åº¦æ°],[çµåº¦ã®å°æ°è¡¨è¨ã®åº¦æ°]"ï¼ä¾: "35.6813819,139.7660839"ï¼ ããã§ã¯ããããã«æ±äº¬é§ ã¨æ°å®¿é§ ã¨ã¤ãã¦ãä¸ç測å°ç³»ã§ã®ä½ç½®æ å ±ãä¿åãã¦ã¿ã¾ããããæ±äº¬é§ ã¯ç·¯åº¦ã35度40å52.975ç§ãçµåº¦ã139度45å57.902ç§ã§ããæ°å®¿é§ ã¯ç·¯åº¦ã35度41å27.316ç§ãçµåº¦ã139度42å0.929ç§ã§ãããã£ã¦ãããªç§è¡¨è¨ã®å ´åã¯ãããã"128452975x503157902"/"128487316x502920929"ã¨ãªãã¾ãã度æ°è¡¨è¨ã®å ´åã¯ãããã"35.6813819x139.7660839"/"35.6909211x139.7002581"ã¨ãªãã¾ããããã§ã¯ããªç§è¡¨è¨ã§ç»é²ãã¾ãããã .. groonga-command .. include:: ../example/tutorial/search-4.log .. column_create --table Site --name location --type WGS84GeoPoint .. load --table Site .. [ .. {"_key":"http://example.org/","location":"128452975x503157902"} .. {"_key":"http://example.net/","location":"128487316x502920929"}, .. ] .. select --table Site --query "_id:1 OR _id:2" --output_columns _key,location scorerãã©ã¡ã¼ã¿ã«ããã¦ã :doc:`/reference/functions/geo_distance` é¢æ°ãç¨ãããã¨ã«ãããï¼ç¹éã®è·é¢ãè¨ç®ãããã¨ãã§ãã¾ãã ããã§ã¯ãç§èåé§ ããã®è·é¢ã表示ããã¦ã¿ã¾ããããä¸ç測å°ç³»ã§ã¯ãç§èåé§ ã®ä½ç½®ã¯ç·¯åº¦ã35度41å55.259ç§ãçµåº¦ã139度46å27.188ç§ã§ãããã£ã¦ãgeo_distanceé¢æ°ã«ä¸ããæååã¯"128515259x503187188"ã¨ãªãã¾ãã .. groonga-command .. include:: ../example/tutorial/search-5.log .. select --table Site --query "_id:1 OR _id:2" --output_columns _key,location,_score --scorer '_score = geo_distance(location, "128515259x503187188")' ãã®çµæãè¦ãã¨ãæ±äº¬é§ ã¨ç§èåé§ ã¯2054mãç§èåé§ ã¨æ°å®¿é§ ã¯6720mé¢ãã¦ããããã§ãã geo_distanceé¢æ°ã¯ã_scoreãéãã¦ã½ã¼ãã§ãç¨ãããã¨ãã§ãã¾ãã .. groonga-command .. include:: ../example/tutorial/search-6.log .. select --table Site --query "_id:1 OR _id:2" --output_columns _key,location,_score --scorer '_score = geo_distance(location, "128515259x503187188")' --sortby -_score ãããå°ç¹ããä½m以å ã«åå¨ãããã¨ãã£ãçµè¾¼ãå¯è½ã§ãã filterãã©ã¡ã¼ã¿ã«ããã¦ã :doc:`/reference/functions/geo_in_circle` é¢æ°ãç¨ãããã¨ã«ãããï¼ç¹éã®è·é¢ãæå®ã®m以ä¸ã«ããã¾ããã©ãããå¤å®ãããã¨ãã§ãã¾ãã ãã¨ãã°ãç§èåé§ ãã5000m以å ã«ããã¬ã³ã¼ããæ¤ç´¢ãã¦ã¿ã¾ãããã .. groonga-command .. include:: ../example/tutorial/search-7.log .. select --table Site --output_columns _key,location --filter 'geo_in_circle(location, "128515259x503187188", 5000)' ã¾ããçµç·¯åº¦ãæå®ã®ç©å½¢é åå ã§ãããã©ãããå¤å®ãã :doc:`/reference/functions/geo_in_rectangle` é¢æ°ãåå¨ãã¾ãã