zack_kane 2014-08-26 01:35 采纳率: 0%
浏览 2176

lucene做同义词练习,关于restoreState的疑问。

比如一句话有我,
他的同义词是咱、俺。

网上的代码一般是
循环遍历执行incrementToken,然后每次添加一个同义词
比如:
// 如果有同义词
if (sames.size() > 0) {
// 将元素出栈,并且获取这个同义词
String str = sames.pop();
// 还原状态
restoreState(current);
cta.setEmpty();
cta.append(str);
// 设置位置0
pia.setPositionIncrement(0);

        return true;
    }

为什么不能是,如果有同义词,一次全部取出来:这样的执行结果是,只有最后一个同义词。
if (sames.size() > 0) {
while (sames.size() > 0) {

            // 将元素出栈,并且获取这个同义词

            String str = sames.pop();

            // 还原状态

            restoreState(current);

            cta.setEmpty();

            cta.append(str);

            // 设置位置0

            pia.setPositionIncrement(0);
        }

        return true;
    }

这是为什么啊?

  • 写回答

1条回答

  • Panda_熊猫 2014-12-28 13:01
    关注
    1. 如果是做同义词练习,在增加同义词时,应该用的是 cta.copyBuffer(). 当然了这跟这次提问无关。
    2. while循环里做的工作,明显后覆盖上一次循环的结果。所以最终只是添加了最后一次添加的同义词。所以要想不被覆盖,就得添加后return。
    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘