对不起我的英语很差,希望你能看到我说的话。
在Lucene3 Junit测试代码:org.apache.lucene.queryParser.TestMultiAnalyzer.testMultiAnalyzer()
QueryParser qp = new QueryParser(Version.LUCENE_CURRENT, "", new MultiAnalyzer());
// two tokens at the same position:
assertEquals("(multi multi2) foo", qp.parse("multi foo").toString());
assertEquals("foo (multi multi2)", qp.parse("foo multi").toString());
我不明白为什么“multi foo”解析的值是“(multi multi2)foo”。
我在google.com和baidu.com上搜索过,没有结果。
答案 0 :(得分:1)
MultiAnalyzer
类(已定义in the same Java file)具有注释:
/**
* Expands "multi" to "multi" and "multi2", both at the same position,
* and expands "triplemulti" to "triplemulti", "multi3", and "multi2".
*/
这可能解释了它......
答案 1 :(得分:1)
看起来你已经从TestMultiAnalyzer.java获取了测试代码。如果查看代码,可以看到Javadoc和类MultiAnalyzer
的定义:
/**
* Expands "multi" to "multi" and "multi2", both at the same position,
* and expands "triplemulti" to "triplemulti", "multi3", and "multi2".
*/
private class MultiAnalyzer extends Analyzer {
// <snipped>
}
所以,Javadoc解释了发生了什么:“multi”将成为“multi multi2”。如果您想确切知道为什么会发生这种情况,请通过代码进行调试并阅读所有相关的Javadoc。如果你再次陷入困境,请在这里提问。