锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲成AV人片在线播放无码,亚洲尹人香蕉网在线视颅,亚洲精品自产拍在线观看http://m.tkk7.com/persister/category/38140.htmlzh-cnThu, 16 Sep 2010 17:00:17 GMTThu, 16 Sep 2010 17:00:17 GMT60Hadoop瀛︿範絎旇錛堜竴錛?/title><link>http://m.tkk7.com/persister/archive/2010/03/12/315306.html</link><dc:creator>persister</dc:creator><author>persister</author><pubDate>Fri, 12 Mar 2010 12:59:00 GMT</pubDate><guid>http://m.tkk7.com/persister/archive/2010/03/12/315306.html</guid><wfw:comment>http://m.tkk7.com/persister/comments/315306.html</wfw:comment><comments>http://m.tkk7.com/persister/archive/2010/03/12/315306.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.tkk7.com/persister/comments/commentRss/315306.html</wfw:commentRss><trackback:ping>http://m.tkk7.com/persister/services/trackbacks/315306.html</trackback:ping><description><![CDATA[浠婂ぉ灝咹adoop涓嬭澆涓嬫潵瀛︿範浜嗕竴涓嬫枃妗d腑鐨則utorial錛岀劧鍚庝豢鐓у涓嬮摼鎺ュ疄鐜頒簡涓涓獁ord count鐨勪緥瀛愶細<br /> <h1><a >鐢?Hadoop 榪涜鍒嗗竷寮忔暟鎹鐞嗭紝絎?1 閮ㄥ垎: 鍏ラ棬</a></h1> <br /> 浠ヤ笅鏄竴閮ㄥ垎鐞嗚瀛︿範錛?br /> The storage is provided by HDFS, and analysis by MapReduce.<br /> <br /> MapReduce is a good fit for problems<br /> that need to analyze the whole dataset, in a batch fashion, particularly for ad hoc analysis.<br /> An RDBMS is good for point queries or updates, where the dataset has been indexed<br /> to deliver low-latency retrieval and update times of a relatively small amount of<br /> data.<br /> MapReduce suits applications where the data is written once, and read many<br /> times, whereas a relational database is good for datasets that are continually updated.<br /> <br /> MapReduce tries to colocate the data with the compute node, so data access is fast<br /> since it is local.* This feature, known as data locality, is at the heart of MapReduce and<br /> is the reason for its good performance.<br /> <br /> Hadoop divides the input to a MapReduce job into fixed-size pieces called input<br /> splits, or just splits. Hadoop creates one map task for each split, which runs the userdefined<br /> map function for each record in the split.<br /> <br /> On the other hand, if splits are too small, then the overhead of managing the splits and<br /> of map task creation begins to dominate the total job execution time.For most jobs, a<br /> good split size tends to be the size of a HDFS block, 64 MB by default.<br /> <br /> Reduce tasks don’t have the advantage of data locality鈥攖he input to a single reduce<br /> task is normally the output from all mappers.<br /> <br /> Many MapReduce jobs are limited by the bandwidth available on the cluster, so it pays<br /> to minimize the data transferred between map and reduce tasks. Hadoop allows the<br /> user to specify a combiner function to be run on the map output鈥攖he combiner function’s<br /> output forms the input to the reduce function.<br /> <br /> Why Is a Block in HDFS So Large?<br /> HDFS blocks are large compared to disk blocks, and the reason is to minimize the cost<br /> of seeks. By making a block large enough, the time to transfer the data from the disk<br /> can be made to be significantly larger than the time to seek to the start of the block.<br /> Thus the time to transfer a large file made of multiple blocks operates at the disk transfer<br /> rate.<br /> A quick calculation shows that if the seek time is around 10ms, and the transfer rate is<br /> 100 MB/s, then to make the seek time 1% of the transfer time, we need to make the<br /> block size around 100 MB. The default is actually 64 MB, although many HDFS installations<br /> use 128 MB blocks. This figure will continue to be revised upward as transfer<br /> speeds grow with new generations of disk drives.<br /> This argument shouldn’t be taken too far, however. Map tasks in MapReduce normally<br /> operate on one block at a time, so if you have too few tasks (fewer than nodes in the<br /> cluster), your jobs will run slower than they could otherwise.<br /> 鎰忔濇槸榪欐牱鐨勶紝Block澶х殑璇濓紝瀵繪壘Block鐨勬椂闂村ぇ姒傚皯錛屼富瑕佽楀湪浼犺緭鐨勬椂闂翠笂錛屼絾鏄鏋淏lock灝忕殑璇濓紝浼犺緭鐨勬椂闂村拰瀵誨潃鐨勬椂闂村氨鐩稿綋浜嗭紝絳変簬璇村氨鏄秷鑰楃殑鏃墮棿鏄?鍊嶄紶杈撶殑鏃墮棿錛屽垝涓嶆潵銆傚叿浣撶殑璇存槸錛屽鏋滄暟鎹噺涓?00M錛岄偅涔圔lock鐨勫ぇ灝忔槸100M錛岄偅涔堜紶杈撶殑鏃墮棿灝辨槸1s(100M/s)錛屼絾鏄鏋淏lock鐨勫ぇ灝忔槸1M錛岄偅涔堜紶杈撶殑鏃墮棿榪樻槸1s錛屼絾鏄痵eek鐨勬椂闂?0ms*100=1s浜嗐傝繖鏍鋒誨叡鑺卞幓鐨勬椂闂村氨鏄?s銆傛槸涓嶆槸瓚婂ぇ瓚婂ソ鍛紵涔熶笉鏄紝澶ぇ鐨勮瘽錛屽彲鑳藉鑷存枃妗f病鏈夊垎甯冨紡鐨勫瓨鍌紝涔熷氨娌℃湁寰堝ソ鐨勫埄鐢∕apReduce妯″瀷榪涜璁$畻浜嗭紝鍙嶈屽彲鑳芥洿鎱€?br /> <br /> <br /> <img src ="http://m.tkk7.com/persister/aggbug/315306.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.tkk7.com/persister/" target="_blank">persister</a> 2010-03-12 20:59 <a href="http://m.tkk7.com/persister/archive/2010/03/12/315306.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Lucene鏁版嵁瀛樺偍緇撴瀯涓殑VInt錛堝彲鍙橀暱搴︽暣鍨嬶級http://m.tkk7.com/persister/archive/2010/02/02/311642.htmlpersisterpersisterTue, 02 Feb 2010 03:08:00 GMThttp://m.tkk7.com/persister/archive/2010/02/02/311642.htmlhttp://m.tkk7.com/persister/comments/311642.htmlhttp://m.tkk7.com/persister/archive/2010/02/02/311642.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/311642.htmlhttp://m.tkk7.com/persister/services/trackbacks/311642.html

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

鍙彉鏍煎紡鐨勬暣鍨嬪畾涔夛細鏈楂樹綅琛ㄧず鏄惁榪樻湁瀛楄妭瑕佽鍙栵紝浣庝竷浣嶅氨鏄氨鏄叿浣撶殑鏈夋晥浣嶏紝娣誨姞鍒?/p>

緇撴灉鏁版嵁涓傛瘮濡?0000001 鏈楂樹綅琛ㄧず0錛岄偅涔堣鏄庤繖涓暟灝辨槸涓涓瓧鑺傝〃紺猴紝鏈夋晥浣嶆槸鍚庨潰鐨勪竷浣?000001錛屽間負1銆?0000010 00000001 絎竴涓瓧鑺傛渶楂樹綅涓?錛岃〃紺哄悗闈㈣繕鏈夊瓧鑺傦紝絎簩浣嶆渶楂樹綅0琛ㄧず鍒版涓烘浜嗭紝鍗沖氨鏄袱涓瓧鑺傦紝閭d箞鍏蜂綋鐨勫兼敞鎰忥紝鏄粠鏈鍚庝竴涓瓧鑺傜殑涓冧綅鏈夋晥鏁版斁鍦ㄦ渶鍓嶉潰錛屼緷嬈℃斁緗紝鏈鍚庢槸絎竴涓嚜宸辯殑涓冧綅鏈夋晥浣嶏紝鎵浠ヨ繖涓暟琛ㄧず 0000001 0000010錛屾崲綆楁垚鏁存暟灝辨槸130

VInt Encoding Example

Value

First byte

Second byte

Third byte

0

00000000



1

00000001



2

00000010



...




127

01111111



128

10000000

00000001


129

10000001

00000001


130

10000010

00000001


...




16,383

11111111

01111111


16,384

10000000

10000000

00000001

16,385

10000001

10000000

00000001

...





Lucene婧愪唬鐮佷腑榪涜瀛樺偍鍜岃鍙栨槸榪欐牱鐨勩侽utputStream鏄礋璐e啓錛?/p>

 1   /** Writes an int in a variable-length format.  Writes between one and
 2    * five bytes.  Smaller values take fewer bytes.  Negative numbers are not
 3    * supported.
 4    * @see InputStream#readVInt()
 5    */
 6   public final void writeVInt(int i) throws IOException {
 7     while ((i & ~0x7F!= 0) {
 8       writeByte((byte)((i & 0x7f| 0x80));
 9       i >>>= 7;
10     }
11     writeByte((byte)i);
12   }

InputStream璐熻矗璇伙細
 1   /** Reads an int stored in variable-length format.  Reads between one and
 2    * five bytes.  Smaller values take fewer bytes.  Negative numbers are not
 3    * supported.
 4    * @see OutputStream#writeVInt(int)
 5    */
 6   public final int readVInt() throws IOException {
 7     byte b = readByte();
 8     int i = b & 0x7F;
 9     for (int shift = 7; (b & 0x80!= 0; shift += 7) {
10       b = readByte();
11       i |= (b & 0x7F<< shift;
12     }
13     return i;
14   }

>>>琛ㄧず鏃犵鍙峰彸縐?br />



persister 2010-02-02 11:08 鍙戣〃璇勮
]]>
絎竴嬈″皾璇昇utchhttp://m.tkk7.com/persister/archive/2009/07/23/288039.htmlpersisterpersisterThu, 23 Jul 2009 07:43:00 GMThttp://m.tkk7.com/persister/archive/2009/07/23/288039.htmlhttp://m.tkk7.com/persister/comments/288039.htmlhttp://m.tkk7.com/persister/archive/2009/07/23/288039.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/288039.htmlhttp://m.tkk7.com/persister/services/trackbacks/288039.html鐜錛歂utch0.9+Fedora5+tomcat6+JDK6

tomcat鍜宩dk閮藉畨瑁呭ソ錛?/p>

浜岋細nutch-0.9.tar.gz
        灝嗕笅杞藉埌鐨則ar.gz鍖咃紝瑙e帇鍒?opt鐩綍涓嬪茍鏀瑰悕錛?br />         #gunzip -xf nutch-0.9.tar.gz |tar xf
        #mv nutch-0.9.tar.gz /usr/local/nutch
      
       嫻嬭瘯鐜鏄惁璁劇疆鎴愬姛錛氳繍琛岋細/urs/local/nutch/bin/nutch鐪嬩竴涓嬫湁娌℃湁鍛戒護鍙傛暟杈撳嚭錛屽鏋滄湁璇存槑娌¢棶棰樸?/p>

       鎶撳彇榪囩▼錛?cd /opt/nutch
                         #mkdir urls
                         #vi nutch.txt 杈撳叆www.aicent.net
                         #vi conf/crawl-urlfilter.txt 鍔犲叆浠ヤ笅淇℃伅錛氬埄鐢ㄦ鍒欒〃杈懼紡瀵圭綉绔檜rl鎶撳彇絳涢夈?br />                         /**** accept hosts in MY.DOMAIN.NAME******/
                                +^http://([a-z0-9]*\.)*aicent.net/
                       #vi nutch/nutch-site.xml錛堢粰鑷繁鐨勮湗铔涘彇涓涓悕瀛楋級璁劇疆濡備笅錛?br />    <configuration>
<property>
    <name>http.agent.name</name>
    <value>test/unique</value>
</property>
</configuration>

                寮濮嬫姄鍙栵細#bin/nutch crawl urls -dir crawl -detpth 5 -thread 10 >& crawl.log

絳夊緟涓浼氾紝鏃墮棿渚濇嵁緗戠珯鐨勫ぇ灝忥紝鍜岃緗殑鎶撳彇娣卞害銆?/p>


涓夛細apache-tomcat

                鍦ㄨ繖閲岋紝褰撲綘鐪嬪埌姣忔媯绱㈢殑欏甸潰涓?閲岋紝闇瑕佷慨鏀逛竴涓嬪弬鏁幫紝鍥犱負tomcat涓殑nutch鐨勬绱㈣礬寰勪笉瀵歸犳垚鐨勩?br />                 #vi /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/nutch-site.xml
<property>
<name>searcher.dir</name>
<value>/opt/nutch/crawl</value>鎶撳彇緗戦〉鎵鍦ㄧ殑璺緞
<description>My path to nutch's searcher dir.</description>
</property>

                #/opt/tomcat/bin/startup.sh


OK,鎼炲畾銆傘傘?/p>


闂姹囨伙細


榪愯錛歴h ./bin/nutch crawl urls -dir crawl -depth 3 -threads 60 -topN 100 >&./logs/nutch_log.log

1.Exception in thread "main" java.io.IOException: Job failed!
        at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:604)
        at org.apache.nutch.crawl.Injector.inject(Injector.java:162)
        at org.apache.nutch.crawl.Crawl.main(Crawl.java:115)
緗戜笂鏌ユ湁璇存槸JDK鐗堟湰鐨勯棶棰橈紝涓嶈兘鐢↗DK1.6錛屼簬鏄畨瑁?.5銆備絾鏄繕鏄悓鏍風殑闂錛屽鎬晩銆?br /> 浜庢槸緇х畫google錛屽彂鐜版湁濡備笅鐨勫彲鑳斤細

Injector: Converting injected urls to crawl db entries.
Exception in thread "main" java.io.IOException: Job failed!
        at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:604)
        at org.apache.nutch.crawl.Injector.inject(Injector.java:162)
        at org.apache.nutch.crawl.Crawl.main(Crawl.java:115)

璇存槑錛氫竴鑸負crawl-urlfilters.txt涓厤緗棶棰橈紝姣斿榪囨護鏉′歡搴斾負
+^http://www.ihooyo.com ,鑰岄厤緗垚浜?http://www.ihooyo.com 榪欐牱鐨勬儏鍐靛氨寮曡搗濡備笂閿欒銆?/p>

浣嗘槸鑷繁鐨勯厤緗牴鏈氨娌℃湁闂鍟娿?br /> 鍦↙ogs鐩綍涓嬮潰闄や簡鐢熸垚nutch_log.log榪樿嚜鍔ㄧ敓鎴愪竴涓猯og鏂囦歡錛歨adoop.log
鍙戠幇鏈夐敊璇嚭鐜幫細


2009-07-22 22:20:55,501 INFO  crawl.Crawl - crawl started in: crawl
2009-07-22 22:20:55,501 INFO  crawl.Crawl - rootUrlDir = urls
2009-07-22 22:20:55,502 INFO  crawl.Crawl - threads = 60
2009-07-22 22:20:55,502 INFO  crawl.Crawl - depth = 3
2009-07-22 22:20:55,502 INFO  crawl.Crawl - topN = 100
2009-07-22 22:20:55,603 INFO  crawl.Injector - Injector: starting
2009-07-22 22:20:55,604 INFO  crawl.Injector - Injector: crawlDb: crawl/crawldb
2009-07-22 22:20:55,604 INFO  crawl.Injector - Injector: urlDir: urls
2009-07-22 22:20:55,605 INFO  crawl.Injector - Injector: Converting injected urls to crawl db entries.
2009-07-22 22:20:56,574 INFO  plugin.PluginRepository - Plugins: looking in: /opt/nutch/plugins
2009-07-22 22:20:56,720 INFO  plugin.PluginRepository - Plugin Auto-activation mode: [true]
2009-07-22 22:20:56,720 INFO  plugin.PluginRepository - Registered Plugins:
2009-07-22 22:20:56,720 INFO  plugin.PluginRepository -         the nutch core extension points (nutch-extensionpoints)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Basic Query Filter (query-basic)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Basic URL Normalizer (urlnormalizer-basic)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Basic Indexing Filter (index-basic)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Html Parse Plug-in (parse-html)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Basic Summarizer Plug-in (summary-basic)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Site Query Filter (query-site)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         HTTP Framework (lib-http)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Text Parse Plug-in (parse-text)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Regex URL Filter (urlfilter-regex)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Pass-through URL Normalizer (urlnormalizer-pass)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Http Protocol Plug-in (protocol-http)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Regex URL Normalizer (urlnormalizer-regex)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         OPIC Scoring Plug-in (scoring-opic)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         CyberNeko HTML Parser (lib-nekohtml)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         JavaScript Parser (parse-js)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         URL Query Filter (query-url)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Regex URL Filter Framework (lib-regex-filter)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository - Registered Extension-Points:
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Nutch Summarizer (org.apache.nutch.searcher.Summarizer)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Nutch URL Normalizer (org.apache.nutch.net.URLNormalizer)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Nutch Protocol (org.apache.nutch.protocol.Protocol)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Nutch Analysis (org.apache.nutch.analysis.NutchAnalyzer)
2009-07-22 22:20:56,721 INFO  plugin.PluginRepository -         Nutch URL Filter (org.apache.nutch.net.URLFilter)
2009-07-22 22:20:56,722 INFO  plugin.PluginRepository -         Nutch Indexing Filter (org.apache.nutch.indexer.IndexingFilter)
2009-07-22 22:20:56,722 INFO  plugin.PluginRepository -         Nutch Online Search Results Clustering Plugin (org.apache.nutch.clustering.OnlineClusterer)
2009-07-22 22:20:56,722 INFO  plugin.PluginRepository -         HTML Parse Filter (org.apache.nutch.parse.HtmlParseFilter)
2009-07-22 22:20:56,722 INFO  plugin.PluginRepository -         Nutch Content Parser (org.apache.nutch.parse.Parser)
2009-07-22 22:20:56,722 INFO  plugin.PluginRepository -         Nutch Scoring (org.apache.nutch.scoring.ScoringFilter)
2009-07-22 22:20:56,722 INFO  plugin.PluginRepository -         Nutch Query Filter (org.apache.nutch.searcher.QueryFilter)
2009-07-22 22:20:56,722 INFO  plugin.PluginRepository -         Ontology Model Loader (org.apache.nutch.ontology.Ontology)
2009-07-22 22:20:56,786 WARN  regex.RegexURLNormalizer - can't find rules for scope 'inject', using default
2009-07-22 22:20:56,829 WARN  mapred.LocalJobRunner - job_2319eh
java.lang.RuntimeException: java.net.UnknownHostException: jackliu: jackliu
        at org.apache.hadoop.io.SequenceFile$Writer.<init>(SequenceFile.java:617)
        at org.apache.hadoop.io.SequenceFile$Writer.<init>(SequenceFile.java:591)
        at org.apache.hadoop.io.SequenceFile.createWriter(SequenceFile.java:364)
        at org.apache.hadoop.io.SequenceFile.createWriter(SequenceFile.java:390)
        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.startPartition(MapTask.java:294)
        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.sortAndSpillToDisk(MapTask.java:355)
        at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.access$100(MapTask.java:231)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:180)
        at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:126)
Caused by: java.net.UnknownHostException: jackliu: jackliu
        at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
        at org.apache.hadoop.io.SequenceFile$Writer.<init>(SequenceFile.java:614)
        ... 8 more

涔熷氨鏄疕ost閰嶇疆閿欒錛屼簬鏄細
Add the following to your /etc/hosts file
127.0.0.1    jackliu

榪欐鍐嶆榪愯錛岀粨鏋滄垚鍔燂紒

 

2:http://127.0.0.1:8080/nutch-0.9
 杈撳叆nutch榪涜鏌ヨ錛岀粨鏋滄姤閿欙細
 HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /search.jsp(151,22) Attribute value  language + "/include/header.html" is quoted with " which must be escaped when used within the value
 org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
 org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
 org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:198)
 org.apache.jasper.compiler.Parser.parseQuoted(Parser.java:299)
 org.apache.jasper.compiler.Parser.parseAttributeValue(Parser.java:249)
 org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:211)
 org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:154)
 org.apache.jasper.compiler.Parser.parseInclude(Parser.java:867)
 org.apache.jasper.compiler.Parser.parseStandardAction(Parser.java:1134)
 org.apache.jasper.compiler.Parser.parseElements(Parser.java:1461)
 org.apache.jasper.compiler.Parser.parse(Parser.java:137)
 org.apache.jasper.compiler.ParserController.doParse(ParserController.java:255)
 org.apache.jasper.compiler.ParserController.parse(ParserController.java:103)
 org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:170)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:332)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:312)
 org.apache.jasper.compiler.Compiler.compile(Compiler.java:299)
 org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
 org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
 org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
 org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
 javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.20 logs.

鍒嗘瀽錛氭煡鐪媙utch Web搴旂敤鏍圭洰褰曚笅鐨剆earch.jsp鍙煡錛屾槸寮曞彿鍖歸厤鐨勯棶棰樸?/p>

<jsp:include page="<%= language + "/include/header.html"%>"/>  //line 152 search.jsp

絎竴涓紩鍙峰拰鍚庨潰絎竴涓嚭鐜扮殑寮曞彿榪涜鍖歸厤錛岃屼笉鏄拰榪欎竴琛屾渶鍚庝竴涓紩鍙瘋繘琛屽尮閰嶏紝鎵浠ラ棶棰樺氨鍑虹幇浜嗐?/p>

瑙e喅鏂規硶錛?/p>

灝嗚琛屼唬鐮佷慨鏀逛負錛?lt;jsp:include page="<%= language+urlsuffix %>"/>

榪欓噷鎴戜滑瀹氫竴涓瓧絎︿覆urlsuffix錛屾垜浠妸瀹冨畾涔夊湪language瀛楃涓插畾涔変箣鍚庯紝

  String language =   // line 116 search.jsp
    ResourceBundle.getBundle("org.nutch.jsp.search", request.getLocale())
    .getLocale().getLanguage();
 String urlsuffix="/include/header.html";

淇敼瀹屾垚鍚庯紝涓虹‘淇濅慨鏀規垚鍔燂紝閲嶅惎涓涓婽omcat鏈嶅姟鍣紝榪涜鎼滅儲錛屼笉鍐嶆姤閿欍?/p>


3.鏃犳硶鏌ヨ緇撴灉錛?br />   瀵規瘮nutch_log.log鐨勭粨鏋滃彂鐜板拰緗戜笂鎻忚堪鐨勪笉鍚岋紝鑰屼笖crawl閲岄潰鍙湁涓や釜鏂囦歡澶箂egments鍜宑rawldb錛屽悗鏉ラ噸鏂扮埇浜嗕竴嬈?br />   鍙戠幇榪欐鏄ソ鐨勶紝濂囨笉鐭ラ亾涓轟粈涔堜笂嬈$埇鐨勫け璐ヤ簡銆?br />  
4.cached.jsp explain.jsp絳夐兘鏈変笂闈?鐨勯敊璇紝鏇存榪囧幓灝監K浜嗐?/p>

5.浠婂ぉ鑺變簡涓涓婂崍鍜屽崐涓笅鍗堢殑鏃墮棿緇堜簬鎼炲畾浜唍utch鐨勫畨瑁呭拰閰嶇疆浜嗐傛槑澶╃戶緇涔犮?/p>

persister 2009-07-23 15:43 鍙戣〃璇勮
]]>
PhraseQuery銆丼panQuery鍜孭hrasePrefixQueryhttp://m.tkk7.com/persister/archive/2009/07/14/286634.htmlpersisterpersisterTue, 14 Jul 2009 01:49:00 GMThttp://m.tkk7.com/persister/archive/2009/07/14/286634.htmlhttp://m.tkk7.com/persister/comments/286634.htmlhttp://m.tkk7.com/persister/archive/2009/07/14/286634.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/286634.htmlhttp://m.tkk7.com/persister/services/trackbacks/286634.htmlPhraseQuery浣跨敤浣嶇疆淇℃伅鏉ヨ繘琛岀浉鍏蟲煡璇紝姣斿TermQuery浣跨敤“鎴戜滑”鍜?#8220;紲栧浗”榪涜鏌ヨ錛岄偅涔堟枃妗d腑鍚湁榪欎袱涓瘝鐨勬墍鏈夎褰曢兘浼氳鏌ヨ鍑烘潵銆備絾鏄湁涓縐嶆儏鍐碉紝鎴戜滑鍙兘闇瑕佹煡璇?#8220;鎴戜滑”鍜?#8220;涓浗”涔嬮棿鍙殧涓涓瓧鍜屼袱涓瓧鎴栬呬袱涓瓧絳夛紝鑰屼笉鏄畠浠箣闂村瓧璺濈浉宸崄涓囧叓鍗冮噷錛屽氨鍙互浣跨敤PhraseQuery銆傛瘮濡備笅闈㈢殑鎯呭喌錛?br />     doc.add(Field.Text("field", "the quick brown fox jumped over the lazy dog"));
閭d箞錛?br />     String[] phrase = new String[] {"quick", "fox"};
    assertFalse("exact phrase not found", matched(phrase, 0));
    assertTrue("close enough", matched(phrase, 1));
multi-terms:
    assertFalse("not close enough", matched(new String[] {"quick", "jumped", "lazy"}, 3));
    assertTrue("just enough", matched(new String[] {"quick", "jumped", "lazy"}, 4));
    assertFalse("almost but not quite", matched(new String[] {"lazy", "jumped", "quick"}, 7));
    assertTrue("bingo", matched(new String[] {"lazy", "jumped", "quick"}, 8));

鏁板瓧琛ㄧずslop錛岄氳繃濡備笅鏂瑰紡璁劇疆錛岃〃紺烘寜鐓ч『搴忎粠絎竴涓瓧孌靛埌絎簩涓瓧孌典箣闂撮棿闅旂殑term涓暟銆?br />     query.setSlop(slop);

欏哄簭寰堥噸瑕侊細
    String[] phrase = new String[] {"fox", "quick"};
assertFalse("hop flop", matched(phrase, 2));
assertTrue("hop hop slop", matched(phrase, 3));

鍘熺悊濡備笅鍥炬墍紺猴細


瀵逛簬鏌ヨ鍏抽敭瀛梣uick鍜宖ox錛屽彧闇瑕乫ox縐誨姩涓涓綅緗嵆鍙尮閰峲uick brown fox銆傝屽浜巉ox鍜宷uick榪欎袱涓叧閿瓧
闇瑕佸皢fox縐誨姩涓変釜浣嶇疆銆傜Щ鍔ㄧ殑璺濈瓚婂ぇ錛岄偅涔堣繖欏硅褰曠殑score灝辮秺灝忥紝琚煡璇㈠嚭鏉ョ殑鍙兘琛屽氨瓚婂皬浜嗐?br />
SpanQuery鍒╃敤浣嶇疆淇℃伅鏌ヨ鏇存湁鎰忔濈殑鏌ヨ錛?br />
SpanQuery type         Description
SpanTermQuery         Used in conjunction with the other span query types. On its own, it’s
                                        functionally equivalent to TermQuery.
SpanFirstQuery         Matches spans that occur within the first part of a field.
SpanNearQuery         Matches spans that occur near one another.
SpanNotQuery         Matches spans that don’t overlap one another.
SpanOrQuery             Aggregates matches of span queries.

SpanFirstQuery錛歍o query for spans that occur within the first n positions of a field, use Span-FirstQuery.



quick = new SpanTermQuery(new Term("f", "quick"));
brown = new SpanTermQuery(new Term("f", "brown"));
red = new SpanTermQuery(new Term("f", "red"));
fox = new SpanTermQuery(new Term("f", "fox"));
lazy = new SpanTermQuery(new Term("f", "lazy"));
sleepy = new SpanTermQuery(new Term("f", "sleepy"));
dog = new SpanTermQuery(new Term("f", "dog"));
cat = new SpanTermQuery(new Term("f", "cat"));

SpanFirstQuery sfq = new SpanFirstQuery(brown, 2);
assertNoMatches(sfq);
sfq = new SpanFirstQuery(brown, 3);
assertOnlyBrownFox(sfq);

SpanNearQuery錛?br />
褰兼鐩擱偦鐨勮法搴?

      棣栧厛錛屽己璋冧竴涓婸hraseQuery瀵硅薄錛岃繖涓璞′笉灞炰簬璺ㄥ害鏌ヨ綾伙紝浣嗚兘瀹屾垚璺ㄥ害鏌ヨ鍔熻兘銆?/p>

      鍖歸厤鍒扮殑鏂囨。鎵鍖呭惈鐨勯」閫氬父鏄郊姝ょ浉閭葷殑錛岃冭檻鍒板師鏂囨。涓湪鏌ヨ欏逛箣闂村彲鑳芥湁涓浜涗腑闂撮」錛屾垨涓轟簡鑳芥煡璇㈠掓帓鐨勯」錛孭hraseQuery璁劇疆浜唖lop鍥犲瓙錛?font color="#ff0000">浣嗘槸榪欎釜slop鍥犲瓙鎸?涓」鍏佽鏈澶ч棿闅旇窛紱伙紝涓嶆槸浼犵粺鎰忎箟涓婄殑璺濈錛屾槸鎸夐『搴忕粍鎴愮粰瀹氱殑鐭錛屾墍闇瑕佺Щ鍔ㄤ綅緗殑嬈℃暟錛?font color="#0000ff">榪欒〃紺篜hraseQuery鏄繀欏繪寜鐓ч」鍦ㄦ枃妗d腑鍑虹幇鐨勯『搴忚綆楄法搴︾殑錛屽quick brown fox涓烘枃妗o紝鍒檘uick fox2涓」鐨剆lop涓?錛宷uick鍚戝悗縐誨姩涓嬈?鑰宖ox quick闇瑕乹uick鍚戝悗縐誨姩3嬈★紝鎵浠lop涓?

      鍏舵錛屾潵鐪嬩竴涓婼panQuery鐨勫瓙綾籗panTermQuery銆?/p>

      瀹冭兘璺ㄥ害鏌ヨ錛?font color="#0000ff">騫朵笖涓嶄竴瀹氶潪瑕佹寜欏瑰湪鏂囨。涓嚭鐜扮殑欏哄簭錛屽彲浠ョ敤涓涓嫭绔嬬殑鏍囪琛ㄧず鏌ヨ瀵硅薄蹇呴』鎸夐『搴忥紝鎴栧厑璁告寜鍊掕繃鏉ョ殑欏哄簭瀹屾垚鍖歸厤銆?font color="#ff0000">鍖歸厤鐨勮法搴︿篃涓嶆槸鎸囩Щ鍔ㄤ綅緗殑嬈℃暟錛屾槸鎸囦粠絎竴涓法搴︾殑璧峰浣嶇疆鍒版渶鍚庝竴涓法搴︾殑緇撴潫浣嶇疆銆?/font>

      鍦⊿panNearQuery涓皢SpanTermQuery瀵硅薄浣滀負SpanQuery瀵硅薄浣跨敤鐨勬晥鏋滐紝涓庝嬌鐢≒harseQuery鐨勬晥鏋滈潪甯哥浉浼箋傚湪SpanNearQuery鐨勬瀯閫犲嚱鏁頒腑鐨勭涓変釜鍙傛暟涓篿nOrder鏍囧織錛岃緗繖涓爣蹇楋紝琛ㄧず鎸夐」鍦ㄦ枃妗d腑鍑虹幇鐨勯『搴忓掕繃鏉ョ殑欏哄簭銆?/p>

      濡?the quick brown fox jumps over the lazy dog榪欎釜鏂囨。

      public void testSpanNearQuery() throws Exception{

           SpanQuery[] quick_brown_dog=new SpanQuery[]{quick,brown,dog};

           SpanNearQuery snq=new SpanNearQuery(quick_brown_dog,0,true);//鎸夋甯擱『搴?璺ㄥ害涓?,瀵逛笁涓」榪涜鏌ヨ

           assertNoMatches(snq);//鏃犳硶鍖歸厤

           SpanNearQuery snq=new SpanNearQuery(quick_brown_dog,4,true);//鎸夋甯擱『搴?璺ㄥ害涓?,瀵逛笁涓」榪涜鏌ヨ

           assertNoMatches(snq);//鏃犳硶鍖歸厤

           SpanNearQuery snq=new SpanNearQuery(quick_brown_dog,4,true);//鎸夋甯擱『搴?璺ㄥ害涓?,瀵逛笁涓」榪涜鏌ヨ

           assertOnlyBrownFox(snq);//鍖歸厤鎴愬姛    

           SpanNearQuery snq=new SpanNearQuery(new SpanQuery[]{lazy,fox},3,false);//鎸夌浉鍙嶉『搴?璺ㄥ害涓?,瀵逛笁涓」榪涜鏌ヨ

           assertOnlyBrownFox(snq);//鍖歸厤鎴愬姛   

           //涓嬮潰浣跨敤PhraseQuery榪涜鏌ヨ錛屽洜涓烘槸鎸夐『搴忥紝鎵浠azy鍜宖ox蹇呴』瑕佽法搴︿負5

           PhraseQuery pq=new PhraseQuery();

           pq.add(new Term("f","lazy"));

           pq.add(new Term("f","lazy"));

           pq.setslop(4);

           assertNoMatches(pq);//璺ㄥ害4鏃犳硶鍖歸厤

           //PharseQuery,slop鍥犲瓙涓?

           pq.setSlop(5);

           assertOnlyBrownFox(pq);          

      }


3.PhrasePrefixQuery 涓昏鐢ㄦ潵榪涜鍚屼箟璇嶆煡璇㈢殑錛?br />     IndexWriter writer = new IndexWriter(directory, new WhitespaceAnalyzer(), true);
    Document doc1 = new Document();
    doc1.add(Field.Text("field", "the quick brown fox jumped over the lazy dog"));
    writer.addDocument(doc1);
    Document doc2 = new Document();
    doc2.add(Field.Text("field","the fast fox hopped over the hound"));
    writer.addDocument(doc2);

    PhrasePrefixQuery query = new PhrasePrefixQuery();
    query.add(new Term[] {new Term("field", "quick"), new Term("field", "fast")});
    query.add(new Term("field", "fox"));

    Hits hits = searcher.search(query);
    assertEquals("fast fox match", 1, hits.length());
    query.setSlop(1);
    hits = searcher.search(query);
    assertEquals("both match", 2, hits.length());



persister 2009-07-14 09:49 鍙戣〃璇勮
]]>
鎼滅儲寮曟搸涓浜庤緭鍏ユ煡璇㈠叧閿瘝鐨勪竴浜涜冭檻http://m.tkk7.com/persister/archive/2009/07/11/286377.htmlpersisterpersisterSat, 11 Jul 2009 09:33:00 GMThttp://m.tkk7.com/persister/archive/2009/07/11/286377.htmlhttp://m.tkk7.com/persister/comments/286377.htmlhttp://m.tkk7.com/persister/archive/2009/07/11/286377.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/286377.htmlhttp://m.tkk7.com/persister/services/trackbacks/286377.html
2銆佽繎涔夎瘝鏌ヨ銆?SynonymAnalyzer鍜孭hrasePrefixQuery閮借兘瑙e喅榪欎釜闂銆?

persister 2009-07-11 17:33 鍙戣〃璇勮
]]>
Analyzerhttp://m.tkk7.com/persister/archive/2009/07/07/285833.htmlpersisterpersisterTue, 07 Jul 2009 07:59:00 GMThttp://m.tkk7.com/persister/archive/2009/07/07/285833.htmlhttp://m.tkk7.com/persister/comments/285833.htmlhttp://m.tkk7.com/persister/archive/2009/07/07/285833.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/285833.htmlhttp://m.tkk7.com/persister/services/trackbacks/285833.html  Analyzer                          Steps taken  
WhitespaceAnalyzer         Splits tokens at whitespace  
SimpleAnalyzer                Divides text at nonletter characters and lowercases  
StopAnalyzer        Divides text at nonletter characters, lowercases, and removes stop words  
StandardAnalyzer      Tokenizes based on a sophisticated grammar that recognizes
               e-mail addresses, acronyms, Chinese- Japanese-Korean characters,
              alphanumerics錛?and more; lowercases;and removes stop words  


persister 2009-07-07 15:59 鍙戣〃璇勮
]]>
Porter stemming algorithmhttp://m.tkk7.com/persister/archive/2009/07/06/285728.htmlpersisterpersisterMon, 06 Jul 2009 14:47:00 GMThttp://m.tkk7.com/persister/archive/2009/07/06/285728.htmlhttp://m.tkk7.com/persister/comments/285728.htmlhttp://m.tkk7.com/persister/archive/2009/07/06/285728.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/285728.htmlhttp://m.tkk7.com/persister/services/trackbacks/285728.html 鎵璋?a target="_blank">Stemming錛屽彲浠ョО涓?strong>璇嶆牴鍖?/strong>錛岃繖閲屾湁涓?strong>overview銆傚湪鑻辮榪欐牱鐨勬媺涓佽緋婚噷闈紝鍗曡瘝鏈夊縐嶅彉褰€傛瘮濡傚姞涓?ed銆?ing銆?ly絳夌瓑銆傚湪鍒嗚瘝鐨勬椂鍊欙紝濡傛灉鑳藉鎶婅繖浜涘彉褰㈠崟璇嶇殑璇嶆牴鎵懼嚭浜嗭紝瀵規悳绱㈢粨鏋滄槸寰堟湁甯姪鐨勩係temming綆楁硶鏈夊緢澶氫簡錛屼笁澶т富嫻佺畻娉曟槸Porter stemming algorithm銆?a target="_blank">Lovins stemming algorithm銆?a target="_blank">Lancaster (Paice/Husk) stemming algorithm錛岃繕鏈変竴浜涙敼榪涚殑鎴栧叾瀹冪殑綆楁硶銆傝繖涓狿orterStemFilter閲岄潰璋冪敤鐨勪竴涓狿orterStemmer灝辨槸Porter Stemming algorithm鐨勪竴涓疄鐜般?

persister 2009-07-06 22:47 鍙戣〃璇勮
]]>
Lucene鍊掓帓绱㈠紩鍘熺悊http://m.tkk7.com/persister/archive/2009/06/10/281201.htmlpersisterpersisterWed, 10 Jun 2009 10:08:00 GMThttp://m.tkk7.com/persister/archive/2009/06/10/281201.htmlhttp://m.tkk7.com/persister/comments/281201.htmlhttp://m.tkk7.com/persister/archive/2009/06/10/281201.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/281201.htmlhttp://m.tkk7.com/persister/services/trackbacks/281201.html
鍊掓帓绱㈠紩錛欼nverted index

Lucene鏄竴涓珮鎬ц兘鐨刯ava鍏ㄦ枃媯绱㈠伐鍏峰寘錛屽畠浣跨敤鐨勬槸鍊掓帓鏂囦歡绱㈠紩緇撴瀯銆傝緇撴瀯鍙婄浉搴旂殑鐢熸垚綆楁硶濡備笅錛?br />
0錛夎鏈変袱綃囨枃绔?鍜?
鏂囩珷1鐨勫唴瀹逛負錛歍om lives in Guangzhou,I live in Guangzhou too.
鏂囩珷2鐨勫唴瀹逛負錛欻e once lived in Shanghai.

1)鐢變簬lucene鏄熀浜庡叧閿瘝绱㈠紩鍜屾煡璇㈢殑錛岄鍏堟垜浠鍙栧緱榪欎袱綃囨枃绔犵殑鍏抽敭璇嶏紝閫氬父鎴戜滑闇瑕佸涓嬪鐞嗘帾鏂?br /> a.鎴戜滑鐜板湪鏈夌殑鏄枃绔犲唴瀹癸紝鍗充竴涓瓧絎︿覆錛屾垜浠厛瑕佹壘鍑哄瓧絎︿覆涓殑鎵鏈夊崟璇嶏紝鍗沖垎璇嶃傝嫳鏂囧崟璇嶇敱浜庣敤絀烘牸鍒嗛殧錛屾瘮杈冨ソ澶勭悊銆備腑鏂囧崟璇嶉棿鏄繛鍦ㄤ竴璧風殑闇瑕佺壒孌婄殑鍒嗚瘝澶勭悊銆?br /> b.鏂囩珷涓殑”in”, “once” “too”絳夎瘝娌℃湁浠涔堝疄闄呮剰涔夛紝涓枃涓殑“鐨?#8221;“鏄?#8221;絳夊瓧閫氬父涔熸棤鍏蜂綋鍚箟錛岃繖浜涗笉浠h〃姒傚康鐨勮瘝鍙互榪囨護鎺?br /> c.鐢ㄦ埛閫氬父甯屾湜鏌?#8220;He”鏃惰兘鎶婂惈“he”錛?#8220;HE”鐨勬枃绔犱篃鎵懼嚭鏉ワ紝鎵浠ユ墍鏈夊崟璇嶉渶瑕佺粺涓澶у皬鍐欍?br /> d.鐢ㄦ埛閫氬父甯屾湜鏌?#8220;live”鏃惰兘鎶婂惈“lives”錛?#8220;lived”鐨勬枃绔犱篃鎵懼嚭鏉ワ紝鎵浠ラ渶瑕佹妸“lives”錛?#8220;lived”榪樺師鎴?#8220;live”
e.鏂囩珷涓殑鏍囩偣絎﹀彿閫氬父涓嶈〃紺烘煇縐嶆蹇碉紝涔熷彲浠ヨ繃婊ゆ帀
鍦╨ucene涓互涓婃帾鏂界敱Analyzer綾誨畬鎴?br />
緇忚繃涓婇潰澶勭悊鍚?br />     鏂囩珷1鐨勬墍鏈夊叧閿瘝涓猴細[tom] [live] [guangzhou] [i] [live] [guangzhou]
    鏂囩珷2鐨勬墍鏈夊叧閿瘝涓猴細[he] [live] [shanghai]

2) 鏈変簡鍏抽敭璇嶅悗錛屾垜浠氨鍙互寤虹珛鍊掓帓绱㈠紩浜嗐備笂闈㈢殑瀵瑰簲鍏崇郴鏄細“鏂囩珷鍙?#8221;瀵?#8220;鏂囩珷涓墍鏈夊叧閿瘝”銆傚掓帓绱㈠紩鎶婅繖涓叧緋誨掕繃鏉ワ紝鍙樻垚錛?#8220;鍏抽敭璇?#8221;瀵?#8220;鎷ユ湁璇ュ叧閿瘝鐨勬墍鏈夋枃绔犲彿”銆傛枃绔?錛?緇忚繃鍊掓帓鍚庡彉鎴?br /> 鍏抽敭璇?nbsp;  鏂囩珷鍙?br /> guangzhou  1
he         2
i           1
live       1,2
shanghai   2
tom         1

閫氬父浠呯煡閬撳叧閿瘝鍦ㄥ摢浜涙枃绔犱腑鍑虹幇榪樹笉澶燂紝鎴戜滑榪橀渶瑕佺煡閬撳叧閿瘝鍦ㄦ枃绔犱腑鍑虹幇嬈℃暟鍜屽嚭鐜扮殑浣嶇疆錛岄氬父鏈変袱縐嶄綅緗細a)瀛楃浣嶇疆錛屽嵆璁板綍璇ヨ瘝鏄枃绔犱腑絎嚑涓瓧絎︼紙浼樼偣鏄叧閿瘝浜樉鏃跺畾浣嶅揩錛夛紱b)鍏抽敭璇嶄綅緗紝鍗寵褰曡璇嶆槸鏂囩珷涓鍑犱釜鍏抽敭璇嶏紙浼樼偣鏄妭綰︾儲寮曠┖闂淬佽瘝緇勶紙phase錛夋煡璇㈠揩錛夛紝lucene涓褰曠殑灝辨槸榪欑浣嶇疆銆?br />
鍔犱笂“鍑虹幇棰戠巼”鍜?#8220;鍑虹幇浣嶇疆”淇℃伅鍚庯紝鎴戜滑鐨勭儲寮曠粨鏋勫彉涓猴細
鍏抽敭璇?nbsp;  鏂囩珷鍙穂鍑虹幇棰戠巼]   鍑虹幇浣嶇疆
guangzhou 1[2]               3錛?
he       2[1]               1
i         1[1]               4
live      1[2],2[1]           2錛?錛?
shanghai  2[1]               3
tom      1[1]               1

浠ive榪欒涓轟緥鎴戜滑璇存槑涓涓嬭緇撴瀯錛歭ive鍦ㄦ枃绔?涓嚭鐜頒簡2嬈★紝鏂囩珷2涓嚭鐜頒簡涓嬈★紝瀹冪殑鍑虹幇浣嶇疆涓?#8220;2,5,2”榪欒〃紺轟粈涔堝憿錛熸垜浠渶瑕佺粨鍚堟枃绔犲彿鍜屽嚭鐜伴鐜囨潵鍒嗘瀽錛屾枃绔?涓嚭鐜頒簡2嬈★紝閭d箞“2,5”灝辮〃紺簂ive鍦ㄦ枃绔?涓嚭鐜扮殑涓や釜浣嶇疆錛屾枃绔?涓嚭鐜頒簡涓嬈★紝鍓╀笅鐨?#8220;2”灝辮〃紺簂ive鏄枃绔?涓2涓叧閿瓧銆?br />     
浠ヤ笂灝辨槸lucene绱㈠紩緇撴瀯涓渶鏍稿績鐨勯儴鍒嗐傛垜浠敞鎰忓埌鍏抽敭瀛楁槸鎸夊瓧絎﹂『搴忔帓鍒楃殑錛坙ucene娌℃湁浣跨敤B鏍戠粨鏋勶級錛屽洜姝ucene鍙互鐢ㄤ簩鍏冩悳绱㈢畻娉曞揩閫熷畾浣嶅叧閿瘝銆?br />     
瀹炵幇鏃?nbsp;lucene灝嗕笂闈笁鍒楀垎鍒綔涓鴻瘝鍏告枃浠訛紙Term Dictionary錛夈侀鐜囨枃浠?frequencies)銆佷綅緗枃浠?positions)淇濆瓨銆傚叾涓瘝鍏告枃浠朵笉浠呬繚瀛樻湁姣忎釜鍏抽敭璇嶏紝榪樹繚鐣欎簡鎸囧悜棰戠巼鏂囦歡鍜屼綅緗枃浠剁殑鎸囬拡錛岄氳繃鎸囬拡鍙互鎵懼埌璇ュ叧閿瓧鐨勯鐜囦俊鎭拰浣嶇疆淇℃伅銆?br />
    Lucene涓嬌鐢ㄤ簡field鐨勬蹇碉紝鐢ㄤ簬琛ㄨ揪淇℃伅鎵鍦ㄤ綅緗紙濡傛爣棰樹腑錛屾枃绔犱腑錛寀rl涓級錛屽湪寤虹儲寮曚腑錛岃field淇℃伅涔熻褰曞湪璇嶅吀鏂囦歡涓紝姣忎釜鍏抽敭璇嶉兘鏈変竴涓猣ield淇℃伅(鍥犱負姣忎釜鍏抽敭瀛椾竴瀹氬睘浜庝竴涓垨澶氫釜field)銆?br />
    涓轟簡鍑忓皬绱㈠紩鏂囦歡鐨勫ぇ灝忥紝Lucene瀵圭儲寮曡繕浣跨敤浜嗗帇緙╂妧鏈傞鍏堬紝瀵硅瘝鍏告枃浠朵腑鐨勫叧閿瘝榪涜浜嗗帇緙╋紝鍏抽敭璇嶅帇緙╀負<鍓嶇紑闀垮害錛屽悗緙>錛屼緥濡傦細褰撳墠璇嶄負“闃挎媺浼”錛屼笂涓涓瘝涓?#8220;闃挎媺浼?#8221;錛岄偅涔?#8220;闃挎媺浼”鍘嬬緝涓?lt;3錛岃>銆傚叾嬈″ぇ閲忕敤鍒扮殑鏄鏁板瓧鐨勫帇緙╋紝鏁板瓧鍙繚瀛樹笌涓婁竴涓肩殑宸鹼紙榪欐牱鍙互鍑忓皬鏁板瓧鐨勯暱搴︼紝榪涜屽噺灝戜繚瀛樿鏁板瓧闇瑕佺殑瀛楄妭鏁幫級銆備緥濡傚綋鍓嶆枃绔犲彿鏄?6389錛堜笉鍘嬬緝瑕佺敤3涓瓧鑺備繚瀛橈級錛屼笂涓鏂囩珷鍙鋒槸16382錛屽帇緙╁悗淇濆瓨7錛堝彧鐢ㄤ竴涓瓧鑺傦級銆?br />     
    涓嬮潰鎴戜滑鍙互閫氳繃瀵硅绱㈠紩鐨勬煡璇㈡潵瑙i噴涓涓嬩負浠涔堣寤虹珛绱㈠紩銆?br /> 鍋囪瑕佹煡璇㈠崟璇?nbsp;“live”錛宭ucene鍏堝璇嶅吀浜屽厓鏌ユ壘銆佹壘鍒拌璇嶏紝閫氳繃鎸囧悜棰戠巼鏂囦歡鐨勬寚閽堣鍑烘墍鏈夋枃绔犲彿錛岀劧鍚庤繑鍥炵粨鏋溿傝瘝鍏擱氬父闈炲父灝忥紝鍥犺岋紝鏁翠釜榪囩▼鐨勬椂闂存槸姣綰х殑銆?br /> 鑰岀敤鏅氱殑欏哄簭鍖歸厤綆楁硶錛屼笉寤虹儲寮曪紝鑰屾槸瀵規墍鏈夋枃绔犵殑鍐呭榪涜瀛楃涓插尮閰嶏紝榪欎釜榪囩▼灝嗕細鐩稿綋緙撴參錛屽綋鏂囩珷鏁扮洰寰堝ぇ鏃訛紝鏃墮棿寰寰鏄棤娉曞繊鍙楃殑銆?br />
鑷垜璇勮錛?br /> 榪樺彲浠ュ弬鑰僪ttp://zh.wikipedia.org/wiki/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95


浜屽厓鎼滅儲綆楁硶
鍦ㄦ帓濂藉簭鐨勬暟緇勪腑鎵懼埌鐗瑰畾鐨勫厓绱犮?br /> 棣栧厛, 姣旇緝鏁扮粍涓棿鐨勫厓绱狅紝濡傛灉鐩稿悓錛屽垯榪斿洖姝ゅ厓绱犵殑鎸囬拡錛岃〃紺烘壘鍒頒簡銆?濡傛灉涓嶇浉鍚岋紝 姝ゅ嚱鏁板氨浼氱戶緇悳绱㈠叾涓ぇ灝忕浉絎︾殑涓鍗婏紝鐒跺悗緇х畫涓嬪幓銆傚鏋滃墿涓嬬殑鏁扮粍闀垮害涓?錛屽垯琛ㄧず鎵句笉鍒幫紝閭d箞鍑芥暟灝變細緇撴潫銆?br /> 姝ょ畻娉曞嚱鏁板涓嬶細
int *binarySearch(int val, int array[], int n)
{
int m = n/2;
if(n <= 0) return NULL;
if(val == array[m]) return array + m;
if(val < array[m]) return binarySearch(val, array, m);
else return binarySearch(val, array+m+1, n-m-1);
}


瀵逛簬鏈塶涓厓绱犵殑鏁扮粍鏉ヨ錛屼簩鍏冩悳绱㈢畻娉曡繘琛屾渶澶?+log2(n)嬈℃瘮杈冦?濡傛灉鏈変竴鐧句竾鍏冪礌錛屽ぇ姒傛瘮杈?0嬈★紝涔熷氨鏄渶澶?0嬈¢掑綊鎵цbinarySearch()鍑芥暟銆?/p>


persister 2009-06-10 18:08 鍙戣〃璇勮
]]>
Lucene瀛︿範indexhttp://m.tkk7.com/persister/archive/2009/06/09/281032.htmlpersisterpersisterTue, 09 Jun 2009 15:33:00 GMThttp://m.tkk7.com/persister/archive/2009/06/09/281032.htmlhttp://m.tkk7.com/persister/comments/281032.htmlhttp://m.tkk7.com/persister/archive/2009/06/09/281032.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/281032.htmlhttp://m.tkk7.com/persister/services/trackbacks/281032.html1.Adding documents to an index錛?br />  protected String[] keywords = {"1", "2"};
 protected String[] unindexed = {"Netherlands", "Italy"};
 protected String[] unstored = {"Amsterdam has lots of bridges", "Venice has lots of canals"};
 protected String[] text = {"Amsterdam", "Venice"};
 Directory dir = FSDirectory.getDirectory(indexDir, true);
 IndexWriter writer = new IndexWriter(dir, new SimpleAnalyzer(), true);
 writer.setUseCompoundFile(true);
 for (int i = 0; i < keywords.length; i++) {
  Document doc = new Document();
  doc.add(Field.Keyword("id", keywords[i]));
  doc.add(Field.UnIndexed("country", unindexed[i]));
  doc.add(Field.UnStored("contents", unstored[i]));
  doc.add(Field.Text("city", text[i]));
  writer.addDocument(doc);
 }
 writer.optimize();
 writer.close();
2.Removing Documents from an index錛?br />  IndexReader reader = IndexReader.open(dir);
 reader.delete(1);
涓婇潰鐨勬柟寮忎竴嬈″彧鑳藉垹闄や竴涓猟ocument錛屼笅闈㈢殑鏂規硶鍙互鍒犻櫎澶氫釜婊¤凍鏉′歡鐨刣ocument
 IndexReader reader = IndexReader.open(dir);
 reader.delete(new Term("city", "Amsterdam"));
 reader.close();

3.Index dates
 Document doc = new Document();
 doc.add(Field.Keyword("indexDate", new Date()));

4.Tuning indexing performance
 IndexWriter          System property                            Default value          Description
 --------------------------------------------------------------------------------------------------
 mergeFactor          org.apache.lucene.mergeFactor        10       Controls segment merge  frequency and size
 maxMergeDocs     org.apache.lucene.maxMergeDocs   Integar.MAX_VALUE    Limits the number of  documents per segement
 minMergeDocs         org.apache.lucene.minMergeDocs     10     Controls the amount of   RAM used when indexing

mergeFactor鎺у埗鍐欏叆紜洏鍓嶅唴瀛樹腑緙撳瓨鐨刣ocument鏁伴噺錛屽悓鏃舵帶鍒秏erge index segments鐨勯鐜囥傚叾榛樿鍊兼槸10錛屽嵆瀛樻弧10涓?br /> documents鍚庡氨蹇呴』鍐欏叆紜洏錛岃屼笖濡傛灉segment鐨勬暟閲忚揪鍒?0鐨勭駭鏁扮殑鏃跺欎細merge鎴愪竴涓猻egment錛屽綋鐒秏axMergeDocs闄愬埗浜嗘瘡涓?br /> segment鏈澶ц兘澶熶繚瀛樼殑document鏁伴噺銆俶ergeFactor瓚婂ぇ鐨勮瘽灝辮秺鑳藉埄鐢≧AM錛屾彁楂榠ndex鐨勬晥鐜囷紝浣嗘槸mergeFactor瓚婇珮涔熷氨鎰忓懗鐫
merge鐨勯鐜囧氨瓚婁綆錛屼細鍙兘瀵艱嚧segments鐨勬暟閲忓緢澶э紙鍥犱負娌℃湁merge錛夛紝榪欐牱search鐨勬椂鍊欏氨闇瑕佹墦寮鏇村鐨剆egment鏂囦歡錛屼篃灝?br /> 闄嶄綆浜唖earch鐨勬晥鐜囥俶inMergeDocs is another IndexWriter instance variable that affects indexing performance. Its
value controls how many Documents have to be buffered before they’re merged to a segment.涔熷嵆鏄minMergeDocs涔熷叿鏈?br /> mergeFactor鎺у埗緙撳瓨document鏁伴噺鐨勫姛鑳姐?/p>

5.RAMDirectory甯姪鍒╃敤RAM錛屼篃鍙互閲囩敤闆嗙兢鎴栬呭綰跨▼鐨勬柟寮忓厖鍒嗗埄鐢ㄧ‖浠跺拰杞歡璧勬簮錛屾彁楂榠ndex鐨勬晥鐜囥?/p>

6.鏈夋椂鍊欏浜庢瘡涓猣ield鍙兘甯屾湜鎺у埗鍏跺ぇ灝忥紝姣斿鍙鍓?000涓猼erm鍋歩ndex錛岃繖涓椂鍊欏氨闇瑕佷嬌鐢╩axFieldLength鏉ユ帶鍒躲?/p>

7.IndexWriter’s optimize()鏂規硶灝辨槸灝唖egments榪涜merge錛岄檷浣巗egments鐨勬暟閲忎粠鑰屽噺灝憇earch鐨勬椂鍊欒鍙杋ndex鐨勬椂闂淬?/p>

8.娉ㄦ剰澶氱嚎紼嬬幆澧冧笅鐨勫伐浣滐細an index-modifying IndexReader operation can’t be executed
while an index-modifying IndexWriter operation is in progress.涓轟簡闃叉璇敤錛孡ucene鍦ㄤ嬌鐢ㄦ煇浜汚PI鏃朵細緇?br /> index涓婇攣銆?/p>

persister 2009-06-09 23:33 鍙戣〃璇勮
]]>
Lucene鐨凲ueryhttp://m.tkk7.com/persister/archive/2009/06/08/280567.htmlpersisterpersisterMon, 08 Jun 2009 02:05:00 GMThttp://m.tkk7.com/persister/archive/2009/06/08/280567.htmlhttp://m.tkk7.com/persister/comments/280567.htmlhttp://m.tkk7.com/persister/archive/2009/06/08/280567.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/280567.htmlhttp://m.tkk7.com/persister/services/trackbacks/280567.htmlLucene鍩烘湰鐨勬煡璇㈣鍙ワ細
 Searcher searcher = new IndexSearcher(dbpath);
 Query query = QueryParser.parse(searchkey, searchfield,
     new StandardAnalyzer());
 Hits hits = searcher.search(query);
涓嬮潰鏄疩uery鐨勫悇縐嶅瓙鏌ヨ錛屼粬浠枟楸糛ueryParser閮芥湁瀵瑰簲鍏崇郴銆?/p>

1.TermQuery甯哥敤錛屽涓涓猅erm錛堟渶灝忕殑绱㈠紩鍧楋紝鍖呭惈涓涓猣ield鍚嶅瓧鍜屽鹼級榪涜绱㈠紩鏌ヨ銆?br /> Term鐩存帴涓嶲ueryParser.parse閲岄潰鐨刱ey鍜宖ield鐩存帴瀵瑰簲銆?/p>

 IndexSearcher searcher = new IndexSearcher(directory);
 Term t = new Term("isbn", "1930110995");
 Query query = new TermQuery(t);
 Hits hits = searcher.search(query);

2.RangeQuery鐢ㄤ簬鍖洪棿鏌ヨ,RangeQuery鐨勭涓変釜鍙傛暟琛ㄧず鏄紑鍖洪棿榪樻槸闂尯闂淬?br /> QueryParser浼氭瀯寤轟粠begin鍒癳nd涔嬮棿鐨凬涓煡璇㈣繘琛屾煡璇€?/p>

 Term begin, end;
 Searcher searcher = new IndexSearcher(dbpath);
 begin = new Term("pubmonth","199801");
 end = new Term("pubmonth","199810");
 RangeQuery query = new RangeQuery(begin, end, true);

RangeQuery鏈川鏄瘮杈冨ぇ灝忋傛墍浠ュ涓嬫煡璇篃鏄彲浠ョ殑錛屼絾鏄剰涔夊氨浜庝笂闈笉澶т竴鏍蜂簡錛屾諱箣鏄ぇ灝忕殑姣旇緝
璁懼畾浜嗕竴涓尯闂達紝鍦ㄥ尯闂村唴鐨勯兘鑳藉鎼滅儲鍑烘潵錛岃繖閲屽氨瀛樺湪涓涓瘮杈冨ぇ灝忕殑鍘熷垯錛屾瘮濡傚瓧絎︿覆浼氶鍏堟瘮杈冪涓涓瓧絎︼紝榪欐牱涓庡瓧絎﹂暱搴︽病鏈夊叧緋匯?br /> begin = new Term("pubmonth","19");
 end = new Term("pubmonth","20");
 RangeQuery query = new RangeQuery(begin, end, true);


3.PrefixQuery.瀵逛簬TermQuery錛屽繀欏誨畬鍏ㄥ尮閰嶏紙鐢‵ield.Keyword鐢熸垚鐨勫瓧孌碉級鎵嶈兘澶熸煡璇㈠嚭鏉ャ?br /> 榪欏氨鍒剁害浜嗘煡璇㈢殑鐏墊椿鎬э紝PrefixQuery鍙渶瑕佸尮閰峷alue鐨勫墠闈換浣曞瓧孌靛嵆鍙傚Field涓簄ame錛岃褰?br /> 涓偅涔堟湁jackliu,jackwu,jackli,閭d箞浣跨敤jack灝卞彲浠ユ煡璇㈠嚭鎵鏈夌殑璁板綍銆俀ueryParser creates a PrefixQuery
for a term when it ends with an asterisk (*) in query expressions.

 IndexSearcher searcher = new IndexSearcher(directory);
 Term term = new Term("category", "/technology/computers/programming");
 PrefixQuery query = new PrefixQuery(term);
 Hits hits = searcher.search(query);

4.BooleanQuery.涓婇潰鎵鏈夌殑鏌ヨ閮芥槸鍩轟簬鍗曚釜field鐨勬煡璇紝澶氫釜field鎬庝箞鏌ヨ鍛紝BooleanQuery
灝辨槸瑙e喅澶氫釜鏌ヨ鐨勯棶棰樸傞氳繃add(Query query, boolean required, boolean prohibited)鍔犲叆
澶氫釜鏌ヨ.閫氳繃BooleanQuery鐨勫祵濂楀彲浠ョ粍鍚堥潪甯稿鏉傜殑鏌ヨ銆?br />  
 IndexSearcher searcher = new IndexSearcher(directory);
 TermQuery searchingBooks =
 new TermQuery(new Term("subject","search"));

 RangeQuery currentBooks =
 new RangeQuery(new Term("pubmonth","200401"),
  new Term("pubmonth","200412"),true);
  
 BooleanQuery currentSearchingBooks = new BooleanQuery();
 currentSearchingBooks.add(searchingBook s, true, false);
 currentSearchingBooks.add(currentBooks, true, false);
 Hits hits = searcher.search(currentSearchingBooks);

BooleanQuery鐨刟dd鏂規硶鏈変袱涓猙oolean鍙傛暟錛?br /> true錛唂alse錛氳〃鏄庡綋鍓嶅姞鍏ョ殑瀛愬彞鏄繀欏昏婊¤凍鐨勶紱
false錛唗rue錛氳〃鏄庡綋鍓嶅姞鍏ョ殑瀛愬彞鏄笉鍙互琚弧瓚崇殑錛?br /> false錛唂alse錛氳〃鏄庡綋鍓嶅姞鍏ョ殑瀛愬彞鏄彲閫夌殑錛?br /> true錛唗rue錛氶敊璇殑鎯呭喌銆?/p>

QueryParser handily constructs BooleanQuerys when multiple terms are specified.
Grouping is done with parentheses, and the prohibited and required flags are
set when the –, +, AND, OR, and NOT operators are specified.

5.PhraseQuery榪涜鏇翠負綺劇‘鐨勬煡鎵俱傚畠鑳藉瀵圭儲寮曟枃鏈腑鐨勪袱涓垨鏇村鐨勫叧閿瘝鐨勪綅緗繘琛?br /> 闄愬畾銆傚鎼滄煡鍖呭惈A鍜孊騫朵笖A銆丅涔嬮棿榪樻湁涓涓枃瀛椼俆erms surrounded by double quotes in
QueryParser parsed expressions are translated into a PhraseQuery.
The slop factor defaults to zero, but you can adjust the slop factor
by adding a tilde (~) followed by an integer.
For example, the expression "quick fox"~3

6.WildcardQuery.WildcardQuery姣擯refixQuery鎻愪緵浜嗘洿緇嗙殑鎺у埗鍜屾洿澶х殑鐏墊椿鎬э紝榪欎釜鏈瀹規槗
鐞嗚В鍜屼嬌鐢ㄣ?/p>

7.FuzzyQuery.榪欎釜Query姣旇緝鐗瑰埆錛屽畠浼氭煡璇笌鍏抽敭瀛楅暱寰楀緢鍍忕殑鍏朵粬璁板綍銆俀ueryParser
supports FuzzyQuery by suffixing a term with a tilde (~),for exmaple wuzza~.

 public void testFuzzy() throws Exception {
  indexSingleFieldDocs(new Field[] {
  Field.Text("contents", "fuzzy"),
  Field.Text("contents", "wuzzy")
  });
  IndexSearcher searcher = new IndexSearcher(directory);
  Query query = new FuzzyQuery(new Term("contents", "wuzza"));
  Hits hits = searcher.search(query);
  assertEquals("both close enough", 2, hits.length());
  assertTrue("wuzzy closer than fuzzy",
  hits.score(0) != hits.score(1));
  assertEquals("wuzza bear","wuzzy", hits.doc(0).get("contents"));
 }



persister 2009-06-08 10:05 鍙戣〃璇勮
]]>
Lucene瀛︿範http://m.tkk7.com/persister/archive/2009/03/06/258147.htmlpersisterpersisterFri, 06 Mar 2009 03:03:00 GMThttp://m.tkk7.com/persister/archive/2009/03/06/258147.htmlhttp://m.tkk7.com/persister/comments/258147.htmlhttp://m.tkk7.com/persister/archive/2009/03/06/258147.html#Feedback0http://m.tkk7.com/persister/comments/commentRss/258147.htmlhttp://m.tkk7.com/persister/services/trackbacks/258147.html 鍔犳繁浜嗘垜瀵規绱㈢殑鐞嗚В
鍦ㄥ叏鏂囨绱腑錛屽彲浠ュ拰鏁版嵁搴撹繘琛屼竴涓畝鍗曠殑瀵規瘮
鍏ㄦ枃媯绱㈡病鏈夎〃鐨勬蹇碉紝涔熷氨娌℃湁鍥哄畾鐨刦ields錛屼絾鏄湁璁板綍錛屾瘡涓涓褰曞氨鏄竴涓狣ocument瀵硅薄
姣忎竴涓猟ocument閮藉彲浠ユ湁鑷繁涓嶅悓鐨刦ields錛屽涓嬶細

    Document doc = new Document(); 

   doc.add(Field.Keyword("filename",file.getAbsolutePath())); 
     
   //浠ヤ笅涓ゅ彞鍙兘鍙栦竴鍙?鍓嶈呮槸绱㈠紩涓嶅瓨鍌?鍚庤呮槸绱㈠紩涓斿瓨鍌?
   //doc.add(Field.Text("content",new FileReader(file))); 
   doc.add(Field.Text("content",this.chgFileToString(file)));
   
   indexWriter.addDocument(doc);

鍦ㄦ煡璇㈢殑鏃跺欙紝闇瑕佷笁涓噸瑕佺殑鍙傛暟
棣栧厛鏄簱璺緞錛屽嵆鍦ㄥ摢涓簱閲岄潰榪涜媯绱紙鐩稿綋浜巇atabase鐨勮礬寰勶級錛?br />
Searcher searcher = new IndexSearcher(dbpath);

鐒跺悗灝辨槸浣犱互鍝釜瀛楁錛屾煡璇粈涔堝叧閿瘝錛屽洜涓烘牴鎹瓧孌靛氨鍙互寰楀埌瀛楁瀵瑰簲鐨勫唴瀹?br /> 鍦ㄥ緱鍒扮殑鍐呭涓绱綘鐨勫叧閿瘝錛岃繖涓瘡姝籹ql璇彞錛屽彧涓嶈繃娌℃湁琛ㄧ殑姒傚康
Query query
    = QueryParser.parse(searchkey,searchfield,new StandardAnalyzer()); 

鐒跺悗寮濮嬫煡璇紝鏌ヨ鐨勭粨鏋滃氨鏄痙ocument鐨勯泦鍚堬細
   Hits hits = searcher.search(query); 

瀵瑰緱鍒扮殑闆嗗悎榪涜澶勭悊錛?br />
   if(hits != null)
  {
       list = new ArrayList();
       int temp_hitslength = hits.length();
       Document doc = null;
       for(int i = 0;i < temp_hitslength; i++){
           doc = hits.doc(i);
           //list.add(doc.get("filename"));
           list.add(doc.get("content"));
       }
   } 

  闄勫父鐢‵ield錛?span style="font-size: 10pt; color: black; font-family: 瀹嬩綋;">

甯哥敤鐨?/span>Field鏂規硶濡備笅錛?/span>


鏂規硶

鍒囪瘝

绱㈠紩

瀛樺偍

鐢ㄩ?/span>

Field.Text(String name, String value)

Yes

Yes

Yes

鍒囧垎璇嶇儲寮曞茍瀛樺偍錛屾瘮濡傦細鏍囬錛屽唴瀹瑰瓧孌?/span>

Field.Text(String name, Reader value)

Yes

Yes

No

鍒囧垎璇嶇儲寮曚笉瀛樺偍錛屾瘮濡傦細META淇℃伅錛?/span>

涓嶇敤浜庤繑鍥炴樉紺猴紝浣嗛渶瑕佽繘琛屾绱㈠唴瀹?/span>

Field.Keyword(String name, String value)

No

Yes

Yes

涓嶅垏鍒嗙儲寮曞茍瀛樺偍錛屾瘮濡傦細鏃ユ湡瀛楁

Field.UnIndexed(String name, String value)

No

No

Yes

涓嶇儲寮曪紝鍙瓨鍌紝姣斿錛氭枃浠惰礬寰?/span>

Field.UnStored(String name, String value)

Yes

Yes

No

鍙叏鏂囩儲寮曪紝涓嶅瓨鍌?/span>


鍒囧垎璇? 灝辨槸鎸囧鏂囨湰榪涜鍒囪瘝錛岀敤浜庤繘琛岀儲寮曪紝涓婇潰鍙互鐪嬪埌鍒囧垎鐨勯兘浼氳繘琛岀儲寮曪紱绱㈠紩鍗崇敤浜庨氳繃鎼滅儲璇嶈繘琛屾煡璇紱瀛樺偍琛ㄧず鏄惁瀛樺偍鍐呭鏈韓銆備笂闈㈢殑 Field.Keyword鏂規硶灝變笉鍒囧垎浣嗘槸鍙互绱㈠紩錛屾墍浠ュ彲浠ョ敤榪欎釜瀛楁榪涜鏌ヨ錛岃孎ield.UnIndexed灝變笉鑳借繘琛屾煡璇簡銆備絾鏄敱浜? Field.Keyword涓嶅垏鍒嗭紝鎵浠ュ綋浣跨敤new Term(searchkey,searchfield)榪涜鏌ヨ鏃訛紝緇欏嚭鐨剆earchkey蹇呴』涓巚aue鍙傛暟鍊煎畬鍏ㄤ竴鑷存墠浼氭煡璇㈠嚭鏉ワ紝鑰? Field.Text鍜孎ield.UnStored鍒欏氨涓嶄竴鏍?/span>銆?br />
Lucene涓浗鏄竴涓潪甯稿ソ鐨勭綉绔欙紝瀵筁ucene鍐呴儴緇撴瀯榪涜浜嗚緇嗙殑鍒嗘瀽錛屽彲浠ュ弬鑰冦?br />



persister 2009-03-06 11:03 鍙戣〃璇勮
]]>
主站蜘蛛池模板: 国产高清在线免费视频| 久久亚洲国产精品五月天婷| 久久丫精品国产亚洲av| 中文字幕成人免费高清在线视频| 免费h成人黄漫画嘿咻破解版| 国产精品亚洲av色欲三区| 免费鲁丝片一级在线观看| 色综合久久精品亚洲国产| 免费永久国产在线视频| 国产亚洲精品美女久久久久久下载 | 在线视频免费观看高清| wwwxxx亚洲| 日韩免费视频一区| 免费无遮挡无码视频在线观看| 亚洲国产精品嫩草影院久久| 乱爱性全过程免费视频| 中国亚洲女人69内射少妇| a毛片免费全部在线播放**| 久久av无码专区亚洲av桃花岛| 天天影院成人免费观看| 亚洲日韩精品无码专区加勒比☆| 国产小视频免费观看| 一区二区三区AV高清免费波多| 亚洲中文字幕无码久久综合网| 大地资源网高清在线观看免费| 亚洲精品第五页中文字幕| 67194成是人免费无码| 国产精品亚洲精品日韩电影| 国产精品亚洲综合一区| 最近免费2019中文字幕大全| 亚洲人成人网站18禁| 精品国产日韩亚洲一区| 7x7x7x免费在线观看| 亚洲第一街区偷拍街拍| 亚洲精品无码mv在线观看网站 | 成人免费观看一区二区| 亚洲日韩一区精品射精| 最新国产AV无码专区亚洲| 很黄很色很刺激的视频免费| 免费人成再在线观看网站 | 亚洲精品国产精品国自产观看|