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 我想在一个软件里添加一个优惠弹窗,应该怎么写代码
  • ¥15 fluent的在模拟压强时使用希望得到一些建议
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 Web.config连不上数据库
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流