Документы не найдены в Lucene - PullRequest
0 голосов
/ 29 сентября 2019

Я индексирую документы по lucene, индексы созданы, но когда осуществим поиск, получим 0 хитов.

Я не знаю, где ошибка при индексации или поиске.

Индексирование

Directory directory = FSDirectory.open(Paths.get("C:\\indexies\\teste"));
Analyzer analyzer = new StandardAnalyzer();
IndexWriterConfig config = new IndexWriterConfig(analyzer);
IndexWriter indexWriter = new IndexWriter(directory, config);

Document document = new Document();
document.add(new StringField("id", "1", Store.YES));
document.add(new StringField("name", "Pedro Henriques", Store.YES));
document.add(new StringField("displayName", "Pedro Rosa", Store.YES));
document.add(new StringField("segment", "segment xpto", Store.YES));

indexWriter.addDocument(document);
indexWriter.commit();
indexWriter.close();

directory.close();

Поиск

Directory directory = FSDirectory.open(Paths.get("C:\\indexies\\teste"));
IndexReader reader = DirectoryReader.open(directory);
IndexSearcher searcher = new IndexSearcher(reader);
Analyzer analyzer = new StandardAnalyzer();
QueryParser parser = new QueryParser("", analyzer);
Query query = parser.parse("name:Henriques");
log.info("Consulta analisada-> " + query);

TopDocs docs = searcher.search(query, 100);
for (ScoreDoc sd : docs.scoreDocs) {
    Document doc = searcher.doc(sd.doc);
    log.info(doc.toString());
}

docs.scoreDocs пуст.

Мои зависимости Lucene:

        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-core</artifactId>
            <version>8.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-analyzers-common</artifactId>
            <version>8.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queries</artifactId>
            <version>8.2.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queryparser</artifactId>
            <version>8.2.0</version>
        </dependency>

Моя версия Java - 11.

спасибо!

1 Ответ

0 голосов
/ 29 сентября 2019

Поле ' name ' не может иметь тип StringField, поскольку поля этого типа не могут содержать пробелы, специальные символы или заглавные буквы.

В этом случае используется тип TextField.

document.add(new TextField("name", "Pedro Henriques", Store.YES));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...