Lucene MultiFieldQueryParser не работает - PullRequest
0 голосов
/ 04 июля 2018

Я не понимаю, почему запрос не работает.

Мне нужно искать документ по двум полям. Два удостоверения личности. Нужно искать документ, если совпадают 2 значения. ID1 И ID2

Но я получаю пустой результат.

        query = MultiFieldQueryParser.parse(new String[]{id1, id2},
            new String[]{"ID1", "ID2"},
            new SimpleAnalyzer());
        TopDocs topDocs = searcher.search(query, 1);
        Document doc = searcher.doc(topDocs.scoreDocs[0].doc)

Индекс работает на 100%. Проверено другими запросами.

Спасибо за помощь.

1 Ответ

0 голосов
/ 04 июля 2018

Поскольку вы хотите выполнять только пересечение AND между двумя отдельными запросами, а не выполнять MultiFieldQuery (где вы ищете одно и то же значение в нескольких полях), слегка измененная версия того, что показано в Lucene ИЛИ поиск с использованием логического запроса должен работать:

BooleanQuery bothQuery = new BooleanQuery();

                                         // field, value
TermQuery idQuery1 = new TermQuery(new Term("ID1", "id1"));
TermQuery idQuery2 = new TermQuery(new Term("ID2", "id2"));

bothQuery.add(new BooleanClause(idQuery1, BooleanClause.Occur.MUST));
bothQuery.add(new BooleanClause(idQuery2, BooleanClause.Occur.MUST));

TopDocs topDocs = searcher.search(bothQuery, 1);
Document doc = searcher.doc(topDocs.scoreDocs[0].doc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...