Хиты одного слова в Lucene не найдены

Я создаю систему, которая просматривает статьи о разных вещах и выбирает некоторые описания об этом. В основном очень похоже на энциклопедию. Сначала я столкнулся с проблемой, когда, если я искал "кошку", я получал много обращений к таким статьям, как "CAT5", "CAT6", ".cat" и так далее. Однако хитом номер один по-прежнему был "Кот". Я использовал StandardAnalyzer для этого. Вместо этого я получил совет использовать WhitespaceAnalyzer, который решил исходную проблему и заставил Lucene отказаться от статей типа CAT6, но теперь статья "Cat" больше не входит в мой список посещений. Почему это? Любые предложения, например, для другого анализатора?

РЕДАКТИРОВАТЬ: код для самого поиска:

public static String searchAbstracts(String input, int hitsPerPage) throws ParseException, IOException {
    String query = input;
    StandardAnalyzer analyzer = new StandardAnalyzer(Version.LUCENE_41);
    Query q = new QueryParser(Version.LUCENE_41, "article", analyzer).parse(query);
    Directory index = new NIOFSDirectory(new File(INDEX_PATH));
    IndexReader reader = IndexReader.open(index);
    String resultSet = "";

    IndexSearcher searcher = new IndexSearcher(reader);
    TopScoreDocCollector collector = TopScoreDocCollector.create(hitsPerPage, true);
    searcher.search(q, collector);
    ScoreDoc[] hits = collector.topDocs().scoreDocs;

    System.out.println("Found " + hits.length + " articles.");

    for(int i=0;i<hits.length;++i) {
        int docId = hits[i].doc;
        Document d = searcher.doc(docId);
        resultSet += d.get("desc") + " ";
        System.out.println((i + 1) + ". " + d.get("article") + " :: Words from abstract: " + d.get("desc"));
    }
    return resultSet;
}

1 ответ

Решение

Когда вы запускаете предложение: "Быстрый кот перепрыгнул через ленивый CAT6" через WhitespaceAnalyzer, это то, что он с ним делает:
[The] [быстрый] [Cat] [перепрыгнул] [над] [the] [ленивый] [CAT6]

Как вы можете видеть, "Кот" явно указан в списке, вы сможете найти его. Как ты это делаешь? Во время запроса какой анализатор вы используете?

Другие вопросы по тегам