почему "multi foo" анализирует значение "(multi multi2) foo" - PullRequest
0 голосов
/ 21 апреля 2011

извините, мой плохой английский, надеюсь, вы понимаете, что я говорю.

В тестовом коде 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, безрезультатно.

Ответы [ 2 ]

1 голос
/ 21 апреля 2011

Похоже, вы взяли тестовый код из 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. Задавайте вопросы здесь, если вы снова застряли.

1 голос
/ 21 апреля 2011

Класс MultiAnalyzer (определенный в том же файле Java ) имеет комментарий:

/**
 * Expands "multi" to "multi" and "multi2", both at the same position,
 * and expands "triplemulti" to "triplemulti", "multi3", and "multi2".  
 */

Что, вероятно, объясняет это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...