This is an automated email from the ASF dual-hosted git repository.
btellier pushed a commit to branch 3.8.x
in repository https://gitbox.apache.org/repos/asf/james-project.git
The following commit(s) were added to refs/heads/3.8.x by this push:
new e8e6152813 JAMES-3921 Fix Lucene indexing issues (#1621) (#1625)
e8e6152813 is described below
commit e8e615281327b44b25bdd074fe17a3044678f7af
Author: Benoit TELLIER <[email protected]>
AuthorDate: Thu Jul 6 22:33:18 2023 +0700
JAMES-3921 Fix Lucene indexing issues (#1621) (#1625)
---
.../lucene/search/LuceneMessageSearchIndex.java | 24 ++--------------------
.../LuceneMailboxMessageSearchIndexTest.java | 24 +++++++++++++++++++++-
2 files changed, 25 insertions(+), 23 deletions(-)
diff --git
a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
index c71e17ce5e..141c6d06ee 100644
---
a/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
+++
b/mailbox/lucene/src/main/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndex.java
@@ -22,7 +22,6 @@ import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
-import java.io.StringReader;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.Calendar;
@@ -79,11 +78,9 @@ import org.apache.james.mime4j.dom.address.Address;
import org.apache.james.mime4j.dom.address.AddressList;
import org.apache.james.mime4j.dom.address.Group;
import org.apache.james.mime4j.dom.address.MailboxList;
-import org.apache.james.mime4j.dom.datetime.DateTime;
import org.apache.james.mime4j.dom.field.DateTimeField;
import org.apache.james.mime4j.field.address.AddressFormatter;
import org.apache.james.mime4j.field.address.LenientAddressParser;
-import org.apache.james.mime4j.field.datetime.parser.DateTimeParser;
import org.apache.james.mime4j.message.SimpleContentHandler;
import org.apache.james.mime4j.parser.MimeStreamParser;
import org.apache.james.mime4j.stream.BodyDescriptor;
@@ -116,8 +113,6 @@ import org.apache.lucene.search.TopDocs;
import org.apache.lucene.search.WildcardQuery;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Version;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.github.fge.lambdas.Throwing;
import com.google.common.base.Preconditions;
@@ -135,7 +130,6 @@ public class LuceneMessageSearchIndex extends
ListeningMessageSearchIndex {
}
- private static final Logger LOGGER =
LoggerFactory.getLogger(LuceneMessageSearchIndex.class);
private static final Date MAX_DATE;
private static final Date MIN_DATE;
public static final org.apache.james.events.Group GROUP = new
LuceneMessageSearchIndexGroup();
@@ -628,22 +622,8 @@ public class LuceneMessageSearchIndex extends
ListeningMessageSearchIndex {
doc.add(new Field(PREFIX_HEADER_FIELD + headerName,
headerValue, Store.NO, Index.ANALYZED));
if (f instanceof DateTimeField) {
- // We need to make sure we convert it to GMT
- try (StringReader reader = new
StringReader(f.getBody())) {
- DateTime dateTime = new
DateTimeParser(reader).parseAll();
- Calendar cal = getGMT();
- cal.set(dateTime.getYear(), dateTime.getMonth() -
1, dateTime.getDay(), dateTime.getHour(), dateTime.getMinute(),
dateTime.getSecond());
- sentDate = cal.getTime();
-
- } catch
(org.apache.james.mime4j.field.datetime.parser.ParseException e) {
- LOGGER.debug("Unable to parse Date header for
proper indexing", e);
- // This should never happen anyway fallback to the
already parsed field
- sentDate = ((DateTimeField) f).getDate();
- }
- if (sentDate == null) {
- sentDate = membership.getInternalDate();
- }
-
+ DateTimeField dateTimeField = (DateTimeField) f;
+ sentDate = dateTimeField.getDate();
}
String field = null;
if ("To".equalsIgnoreCase(headerName)) {
diff --git
a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
index 9508ffeba0..1a7e7fd338 100644
---
a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
+++
b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMailboxMessageSearchIndexTest.java
@@ -97,6 +97,7 @@ class LuceneMailboxMessageSearchIndexTest {
MessageId id3;
MessageId id4;
MessageId id5;
+ private TestMessageId.Factory factory;
protected boolean useLenient() {
return true;
@@ -105,7 +106,7 @@ class LuceneMailboxMessageSearchIndexTest {
@BeforeEach
void setUp() throws Exception {
session = MailboxSessionUtil.create(Username.of("username"));
- TestMessageId.Factory factory = new TestMessageId.Factory();
+ factory = new TestMessageId.Factory();
id1 = factory.generate();
id2 = factory.generate();
id3 = factory.generate();
@@ -192,6 +193,27 @@ class LuceneMailboxMessageSearchIndexTest {
}
+ @Test
+ void dateHeaderParsingShouldNotImpactProcessing() throws Exception {
+ TestId mailboxId = TestId.of(2);
+
+ MessageId id = factory.generate();
+ MessageUid uid = MessageUid.of(500);
+ String subject = "Mail " + id;
+
+ MessageBuilder builder = new MessageBuilder()
+ .header("Subject", subject)
+ .header("Date", "31.3.2009")
+ .uid(uid)
+ .mailboxId(mailboxId);
+
+ index.add(session, mailbox3, builder.build(id)).block();
+
+ SearchQuery query =
SearchQuery.of(SearchQuery.headerContains("Subject", subject));
+ Stream<MessageUid> result = index.search(session, mailbox3,
query).toStream();
+ assertThat(result).containsExactly(uid);
+ }
+
@Test
void bodySearchShouldMatchPhraseInBody() throws Exception {
SearchQuery query = SearchQuery.of(SearchQuery.bodyContains(CUSTARD));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]