From 421b6e31d66db57f52342f0d9d28635626194ab1 Mon Sep 17 00:00:00 2001 From: Guus der Kinderen Date: Mon, 9 Aug 2021 20:16:57 +0200 Subject: [PATCH] fixes #192: Return results for keyword and participant(s) combination query Using a term-based query for the JIDs of participants when searching through the Lucene index. --- changelog.html | 1 + .../org/jivesoftware/openfire/archive/ArchiveIndexer.java | 2 +- .../org/jivesoftware/openfire/archive/ArchiveSearcher.java | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/changelog.html b/changelog.html index c7a62e5da..9a498342f 100644 --- a/changelog.html +++ b/changelog.html @@ -48,6 +48,7 @@

2.2.1 -- February 12, 2021

diff --git a/src/java/org/jivesoftware/openfire/archive/ArchiveIndexer.java b/src/java/org/jivesoftware/openfire/archive/ArchiveIndexer.java index 738abbbfd..06bf7dc80 100644 --- a/src/java/org/jivesoftware/openfire/archive/ArchiveIndexer.java +++ b/src/java/org/jivesoftware/openfire/archive/ArchiveIndexer.java @@ -375,7 +375,7 @@ private void indexDocument(IndexWriter writer, long conversationID, boolean exte document.add(new StringField("external", String.valueOf(external), Field.Store.NO)); document.add(new NumericDocValuesField("date", date.toEpochMilli())); for (JID jid : jids) { - document.add(new StringField("jid", jid.toString(), Field.Store.NO)); + document.add(new StringField("jid", jid.toBareJID(), Field.Store.NO)); } document.add(new TextField("text", text, Field.Store.NO)); writer.addDocument(document); diff --git a/src/java/org/jivesoftware/openfire/archive/ArchiveSearcher.java b/src/java/org/jivesoftware/openfire/archive/ArchiveSearcher.java index 25f580426..202d342c9 100644 --- a/src/java/org/jivesoftware/openfire/archive/ArchiveSearcher.java +++ b/src/java/org/jivesoftware/openfire/archive/ArchiveSearcher.java @@ -157,7 +157,7 @@ private Collection luceneSearch(ArchiveSearch search) { if (!participants.isEmpty()) { if (participants.size() == 1) { JID jid = participants.iterator().next().asBareJID(); - Query participantQuery = new QueryParser("jid", analyzer).parse(jid.toString()); + TermQuery participantQuery = new TermQuery(new Term("jid", jid.toBareJID())); Log.debug( "... restricting to participant: {}", jid ); // Add this query to the existing query. @@ -177,8 +177,8 @@ private Collection luceneSearch(ArchiveSearch search) { Log.debug( "... restricting to participants: {} and {}", participant1, participant2 ); final BooleanQuery participantQuery = new BooleanQuery.Builder() - .add(new QueryParser("jid", analyzer).parse(participant1), BooleanClause.Occur.MUST) - .add(new QueryParser("jid", analyzer).parse(participant2), BooleanClause.Occur.MUST) + .add(new TermQuery(new Term("jid", participant1)), BooleanClause.Occur.MUST) + .add(new TermQuery(new Term("jid", participant2)), BooleanClause.Occur.MUST) .build(); // Add this query to the existing query.