CJKAnalyzer.java
上传用户:cctqzzy
上传日期:2022-03-14
资源大小:12198k
文件大小:3k
源码类别:

搜索引擎

开发平台:

Java

  1. //package org.apache.lucene.analysis.cjk;
  2. /**
  3.  * Licensed to the Apache Software Foundation (ASF) under one or more
  4.  * contributor license agreements.  See the NOTICE file distributed with
  5.  * this work for additional information regarding copyright ownership.
  6.  * The ASF licenses this file to You under the Apache License, Version 2.0
  7.  * (the "License"); you may not use this file except in compliance with
  8.  * the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package chapter8;
  19. import org.apache.lucene.analysis.Analyzer;
  20. import org.apache.lucene.analysis.StopFilter;
  21. import org.apache.lucene.analysis.TokenStream;
  22. import java.io.Reader;
  23. import java.util.Set;
  24. /**
  25.  * Filters CJKTokenizer with StopFilter.
  26.  *
  27.  * @author Che, Dong
  28.  */
  29. public class CJKAnalyzer extends Analyzer {
  30.   //~ Static fields/initializers ---------------------------------------------
  31.   /**
  32.    * An array containing some common English words that are not usually
  33.    * useful for searching and some double-byte interpunctions.
  34.    */
  35.   public final static String[] STOP_WORDS = {
  36.     "a", "and", "are", "as", "at", "be",
  37.     "but", "by", "for", "if", "in",
  38.     "into", "is", "it", "no", "not",
  39.     "of", "on", "or", "s", "such", "t",
  40.     "that", "the", "their", "then",
  41.     "there", "these", "they", "this",
  42.     "to", "was", "will", "with", "",
  43.     "www"
  44.   };
  45.   //~ Instance fields --------------------------------------------------------
  46.   /**
  47.    * stop word list
  48.    */
  49.   private Set stopTable;
  50.   //~ Constructors -----------------------------------------------------------
  51.   /**
  52.    * Builds an analyzer which removes words in {@link #STOP_WORDS}.
  53.    */
  54.   public CJKAnalyzer() {
  55.     stopTable = StopFilter.makeStopSet(STOP_WORDS);
  56.   }
  57.   /**
  58.    * Builds an analyzer which removes words in the provided array.
  59.    *
  60.    * @param stopWords stop word array
  61.    */
  62.   public CJKAnalyzer(String[] stopWords) {
  63.     stopTable = StopFilter.makeStopSet(stopWords);
  64.   }
  65.   //~ Methods ----------------------------------------------------------------
  66.   /**
  67.    * get token stream from input
  68.    *
  69.    * @param fieldName lucene field name
  70.    * @param reader    input reader
  71.    * @return TokenStream
  72.    */
  73.   public final TokenStream tokenStream(String fieldName, Reader reader) {
  74.     return new StopFilter(new CJKTokenizer(reader), stopTable);
  75.   }
  76. }