1
回答
lucene StandardAnalyzer 标准分词器修改
利用AWS快速构建适用于生产的无服务器应用程序,免费试用12个月>>>   

在生物文本分词过程中”-“ 减号/破折号 连接的一个词元,被拆分成2个例如:TNF-alpha ,下面的示例是因为这样原因的拆分造成查询结果中出的假阳性结果。

基因符号:TNF

表型:gout

句子:ALPK1 phosphorylates myosin IIA modulating TNF-alpha trafficking in gout flares.

修改lucene StandardAnalyzer 标准分词器修改,使之不对“-”连接的词元进行拆分,例如上例中应保持“TNF-alpha”不拆分为“TNF”和“alpha”

<无标签>
举报
yimi
发帖于1年前 1回/183阅
共有1个答案 最后回答: 1年前

修改lucerne 标准分词器,

package org.apache.lucene.analysis.standardStandardTokenizerImpl.java    Java文件

753行的位置添加判断如果输入的字符(zzInput)为- ,就将zzNext (The transition table of the DFA)值设置为2,”-“在(ASCII 表)十进制的值为:45 详情参考下图

 if(zzInput==45) 
         zzNext = 2;

ASCii 表和ASCii扩展表

DFA简介: 

学过编译原理的同学们一定知道,在词法分析阶段将源代码中的文本变成语法的集合就是通过确定有限自动机实现的。
DFA文字过滤 
在文字过滤系统中,为了能够应付较高的并发,有一个目标比较重要,就是尽量的减少计算,而在DFA中,基本没有什么计算,有的只是状态的转移。而要把违禁文字列表构造成一个状态机,用矩阵来实现是比较麻烦的,下面介绍一种比较简单的实现方式,就是树结构。
所有的违禁词其本质来说是有ascii码组成的,而待过滤文本其本质也是ascii码的集合.
输入是A=[101,102,105,97,98,112,110] 
违禁词列表: 
[102,105] 
[98,112] 

顶部