001// -------------------------------------------------------------------------------- 002// Copyright 2002-2025 Echo Three, LLC 003// 004// Licensed under the Apache License, Version 2.0 (the "License"); 005// you may not use this file except in compliance with the License. 006// You may obtain a copy of the License at 007// 008// http://www.apache.org/licenses/LICENSE-2.0 009// 010// Unless required by applicable law or agreed to in writing, software 011// distributed under the License is distributed on an "AS IS" BASIS, 012// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013// See the License for the specific language governing permissions and 014// limitations under the License. 015// -------------------------------------------------------------------------------- 016 017package com.echothree.model.control.forum.server.analyzer; 018 019import com.echothree.model.control.index.common.IndexFields; 020import com.echothree.model.control.index.server.analyzer.BasicAnalyzer; 021import com.echothree.model.control.index.server.analyzer.WhitespaceLowerCaseAnalyzer; 022import com.echothree.model.data.core.server.entity.EntityAliasType; 023import com.echothree.model.data.core.server.entity.EntityAttribute; 024import com.echothree.model.data.core.server.entity.EntityType; 025import com.echothree.model.data.party.server.entity.Language; 026import com.echothree.model.data.tag.server.entity.TagScope; 027import com.echothree.util.server.message.ExecutionErrorAccumulator; 028import java.util.List; 029import java.util.Map; 030import java.util.Set; 031import org.apache.lucene.analysis.Analyzer; 032 033public class ForumMessageAnalyzer 034 extends BasicAnalyzer { 035 036 public ForumMessageAnalyzer(final ExecutionErrorAccumulator eea, final Language language, final EntityType entityType, final List<EntityAliasType> entityAliasTypes, final List<EntityAttribute> entityAttributes, 037 final List<TagScope> tagScopes) { 038 super(eea, language, entityType, entityAliasTypes, entityAttributes, tagScopes); 039 } 040 041 public ForumMessageAnalyzer(final ExecutionErrorAccumulator eea, final Language language, final EntityType entityType) { 042 super(eea, language, entityType); 043 } 044 045 @Override 046 protected Map<String, Analyzer> getEntityTypeFieldAnalyzers(final Map<String, Analyzer> fieldAnalyzers) { 047 super.getEntityTypeFieldAnalyzers(fieldAnalyzers); 048 049 fieldAnalyzers.put(IndexFields.forumNames.name(), new WhitespaceLowerCaseAnalyzer()); 050 fieldAnalyzers.put(IndexFields.forumMessageName.name(), new WhitespaceLowerCaseAnalyzer()); 051 fieldAnalyzers.put(IndexFields.forumThreadName.name(), new WhitespaceLowerCaseAnalyzer()); 052 053 return fieldAnalyzers; 054 } 055 056 @Override 057 public Set<String> getDateTimeFields() { 058 return Set.of( 059 IndexFields.postedTime.name() 060 ); 061 } 062 063}