검색엔진 의 토끼 사냥 분사 실례
import java.io.IOException;
import java.io.Reader;
import java.io.StringReader;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.Token;
import org.apache.lucene.analysis.TokenFilter;
import org.apache.lucene.analysis.TokenStream;
import com.lietu.seg.result.CnTokenizer;
// lucene-core-2.3.2.jar seg.jar dic
public class MyCnAnalyzerTest {
static class MyCnAnalyzer extends Analyzer
{
public MyCnAnalyzer()
{
CnTokenizer.makeTag=true;
}
@Override
public TokenStream tokenStream(String fieldName, Reader reader) {
TokenStream result = new CnTokenizer(reader);
result = new MySingleFilter(result);
return result;
}
}
static class MySingleFilter extends TokenFilter
{
private Token buff=null;
private int offset=0;
//
private static String tokenType = "1word";
public MySingleFilter(TokenStream in) {
super(in);
}
@Override
public Token next() throws IOException {
if (buff!=null)
{
if(offset == buff.termText().length())
{
Token buff2 = buff;
buff = null;
return buff2;
}
Token buff2 = new Token(buff.termText().substring(offset,1+offset),
buff.startOffset()+offset,
buff.startOffset()+offset+1,tokenType);
buff2.setPositionIncrement(0);// 0, 0 , , 。
++offset;
return buff2;
}
Token t = input.next();
if (t == null)
return null;
if (t.termText().length()>1)
{
buff = t;// buff private Token buff=null; if buff
offset = 0;
Token buff2 = new Token(buff.termText().substring(offset,1+offset),
buff.startOffset()+offset,
buff.startOffset()+offset+1,tokenType);
buff2.setPositionIncrement(0);
++offset;
return buff2;
}
return t;
}
}
public static void main(String[] args) throws IOException {
MyCnAnalyzer cna = new MyCnAnalyzer();
String input = " 《 》 , , ";
// CnAnalyzer tokenStream 。
TokenStream ts = cna.tokenStream("asd", new StringReader(input));
for (Token t = ts.next(); t != null; t = ts.next()) {
System.out.println(t.termText() + " " + t.startOffset() + " "
+ t.endOffset() + " " + t.type() + " "
+ t.getPositionIncrement());
}
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
elasticsearchnested 삽입 대상 전체 텍스트 검색 및 정렬ES Nested 중첩 유형은 무엇입니까?Elasticsearch에는 다음과 같은 다양한 데이터 유형이 있습니다. 기본 데이터 형식:string 형식.ES 7.x에서string 형식은:text와 키워드로 업그레이드됩...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.