Lucene: создайте запрос путём токенизации строки и передачи - PullRequest
2 голосов
/ 23 марта 2011

Мне нужно извлечь отдельные термины из строки, чтобы построить запрос, используя BooleanQuery. Я использую QueryParser.parse() метод для этого, это мой фрагмент кода:

booleanQuery.add(
    new QueryParser(
            org.apache.lucene.util.Version.LUCENE_40, 
            "tags", 
            new WhitespaceAnalyzer(org.apache.lucene.util.Version.LUCENE_40)
    ).parse("tag1 tag2 tag3"), 
    BooleanClause.Occur.SHOULD);

Мне, однако, интересно, если это правильный способ передачи отдельных терминов в booleanQuery.

Метод

QueryParser.parse возвращает объект SrndQuery, который я непосредственно передаю методу booleanQuery.add().

Не уверен, что это правильно. Должен ли я извлечь отдельные термины из SrndQuery ... или что-то в этом роде и вызвать booleanQuery.add() несколько раз?

Обновление : печатный запрос

*.*:*.* title:Flickrmeetup_01 description:Michael description:R. description:Ross tags:rochester tags:ny tags:usa tags:flickrmeetup tags:king76 tags:eos350d tags:canon50mmf14 tags:mikros tags:canon tags:ef tags:50mm tags:f14 tags:usm tags:canonef50mmf14 tags:canonef50mmf14usm

1 Ответ

1 голос
/ 23 марта 2011

Полагаю, вам следует извлечь токены, обернуть каждый из них в термин, затем создать для него запрос TermQuery, а затем добавить запрос TermQuery в BooleanQuery. В любом случае SrndQuery является абстрактным, так что я думаю, что ваш текущий код создаст экземпляр подкласса, что, вероятно, не то, что вы хотите сделать. Вы можете создать свой собственный QueryParser для этого.

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