Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
南宫伊儿
elasticsearch-analysis-ik
提交
1f80b50a
E
elasticsearch-analysis-ik
项目概览
南宫伊儿
/
elasticsearch-analysis-ik
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
E
elasticsearch-analysis-ik
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
1f80b50a
编写于
9月 17, 2014
作者:
weixin_43283383
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix offset problemn while create the custom analyzer combined with html_strip filter, @xpandan
上级
44b63715
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
28 addition
and
7 deletion
+28
-7
pom.xml
pom.xml
+5
-0
src/main/java/org/wltea/analyzer/lucene/IKTokenizer.java
src/main/java/org/wltea/analyzer/lucene/IKTokenizer.java
+23
-7
未找到文件。
pom.xml
浏览文件 @
1f80b50a
...
...
@@ -78,6 +78,11 @@
<version>
4.10
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.apache.lucene
</groupId>
<artifactId>
lucene-core
</artifactId>
<version>
4.9.0
</version>
</dependency>
</dependencies>
<build>
...
...
src/main/java/org/wltea/analyzer/lucene/IKTokenizer.java
浏览文件 @
1f80b50a
...
...
@@ -37,6 +37,7 @@ import org.wltea.analyzer.core.Lexeme;
import
java.io.IOException
;
import
java.io.Reader
;
import
org.apache.lucene.analysis.tokenattributes.PositionIncrementAttribute
;
/**
* IK分词器 Lucene Tokenizer适配器类
...
...
@@ -55,8 +56,13 @@ public final class IKTokenizer extends Tokenizer {
private
final
TypeAttribute
typeAtt
;
//记录最后一个词元的结束位置
private
int
endPosition
;
/**
private
int
skippedPositions
;
private
PositionIncrementAttribute
posIncrAtt
;
/**
* Lucene 4.0 Tokenizer适配器类构造函数
* @param in
*/
...
...
@@ -65,8 +71,9 @@ public final class IKTokenizer extends Tokenizer {
offsetAtt
=
addAttribute
(
OffsetAttribute
.
class
);
termAtt
=
addAttribute
(
CharTermAttribute
.
class
);
typeAtt
=
addAttribute
(
TypeAttribute
.
class
);
posIncrAtt
=
addAttribute
(
PositionIncrementAttribute
.
class
);
_IKImplement
=
new
IKSegmenter
(
input
,
settings
,
environment
);
_IKImplement
=
new
IKSegmenter
(
input
,
settings
,
environment
);
}
/* (non-Javadoc)
...
...
@@ -76,16 +83,22 @@ public final class IKTokenizer extends Tokenizer {
public
boolean
incrementToken
()
throws
IOException
{
//清除所有的词元属性
clearAttributes
();
Lexeme
nextLexeme
=
_IKImplement
.
next
();
skippedPositions
=
0
;
Lexeme
nextLexeme
=
_IKImplement
.
next
();
if
(
nextLexeme
!=
null
){
posIncrAtt
.
setPositionIncrement
(
skippedPositions
+
1
);
//将Lexeme转成Attributes
//设置词元文本
termAtt
.
append
(
nextLexeme
.
getLexemeText
());
//设置词元长度
termAtt
.
setLength
(
nextLexeme
.
getLength
());
//设置词元位移
offsetAtt
.
setOffset
(
nextLexeme
.
getBeginPosition
(),
nextLexeme
.
getEndPosition
());
//记录分词的最后位置
// offsetAtt.setOffset(nextLexeme.getBeginPosition(), nextLexeme.getEndPosition());
offsetAtt
.
setOffset
(
correctOffset
(
nextLexeme
.
getBeginPosition
()),
correctOffset
(
nextLexeme
.
getEndPosition
()));
//记录分词的最后位置
endPosition
=
nextLexeme
.
getEndPosition
();
//记录词元分类
typeAtt
.
setType
(
nextLexeme
.
getLexemeTypeString
());
...
...
@@ -104,12 +117,15 @@ public final class IKTokenizer extends Tokenizer {
public
void
reset
()
throws
IOException
{
super
.
reset
();
_IKImplement
.
reset
(
input
);
skippedPositions
=
0
;
}
@Override
public
final
void
end
()
{
public
final
void
end
()
throws
IOException
{
super
.
end
();
// set final offset
int
finalOffset
=
correctOffset
(
this
.
endPosition
);
offsetAtt
.
setOffset
(
finalOffset
,
finalOffset
);
posIncrAtt
.
setPositionIncrement
(
posIncrAtt
.
getPositionIncrement
()
+
skippedPositions
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录