在solr里配置entity时,没有把field里column的大小写配成和数据库的schema一致,导致有些列的数据一直取不出来,检查好多遍才发现,多花了两个小时。
主要是习惯了hibernate里配置列名时的大小写不敏感。
看了下源码,数据库里复杂类型如datetime,clob列的转换是继承了Transformer类,实现transformRow方法完成的,如Clob字段的转换如下:
public Object transformRow(Map<String, Object> aRow, Context context) {
for (Map<String, String> map : context.getAllEntityFields()) {
if (!TRUE.equals(map.get(CLOB))) continue;
String column = map.get(DataImporter.COLUMN);
String srcCol = map.get(RegexTransformer.SRC_COL_NAME);
if (srcCol == null)
srcCol = column;
[b]Object o = aRow.get(srcCol);[/b]
if (o instanceof List) {
List<Clob> inputs = (List<Clob>) o;
List<String> results = new ArrayList<String>();
for (Object input : inputs) {
if (input instanceof Clob) {
Clob clob = (Clob) input;
results.add(readFromClob(clob));
}
}
aRow.put(column, results);
} else {
if (o instanceof Clob) {
Clob clob = (Clob) o;
aRow.put(column, readFromClob(clob));
}
}
}
return aRow;
}
datetime的转换如下:
public Object transformRow(Map<String, Object> aRow, Context context) {
for (Map<String, String> map : context.getAllEntityFields()) {
Locale locale = Locale.getDefault();
String customLocale = map.get("locale");
if(customLocale != null){
locale = new Locale(customLocale);
}
String fmt = map.get(DATE_TIME_FMT);
if (fmt == null)
continue;
String column = map.get(DataImporter.COLUMN);
String srcCol = map.get(RegexTransformer.SRC_COL_NAME);
if (srcCol == null)
srcCol = column;
try {
[b]Object o = aRow.get(srcCol);[/b]
if (o instanceof List) {
List inputs = (List) o;
List<Date> results = new ArrayList<Date>();
for (Object input : inputs) {
results.add(process(input, fmt, locale));
}
aRow.put(column, results);
} else {
if (o != null) {
aRow.put(column, process(o, fmt, locale));
}
}
} catch (ParseException e) {
LOG.warn("Could not parse a Date field ", e);
}
}
return aRow;
}
从Object o = aRow.get(srcCol);可以看出,这些字段都是大小写敏感的了。
分享到:
相关推荐
而过滤器则进一步处理这些标记,比如去除停用词、进行词干提取或者大小写转换等。常见的分词器有StandardTokenizer、LetterTokenizer、KeywordTokenizer等,过滤器则包括LowerCaseFilter、StopFilter、...
`schema.xml`中的`field`部分定义了索引字段及其类型,例如`string`、`long`和`date`,并配置了分析器来处理文本字段,如`text_general`,以进行分词、停用词过滤和大小写转换等预处理步骤。 总的来说,这个教程...
在写这个时,最新版本可能是7.x或8.x系列,具体取决于发布日期。 2. **配置Tomcat**: - 配置环境变量CATALINA_HOME指向Tomcat的根目录。 - 可选:为了在命令行启动和管理Tomcat,配置环境变量PATH。 3. **运行...
- **Filter**:对分词结果进行进一步处理,如去除停用词、大小写转换等。 5. **配置与部署** - **solrconfig.xml**:Solr的主要配置文件,包括DIH的配置。 - **schema.xml**:定义Solr Schema,指定字段类型和...
同时,在schema.xml中,可以使用`<filter class="solr.StopFilterFactory"`配置停词过滤器,指定停词列表和是否忽略大小写。 **4. 学习和开发文档** Solr提供了丰富的官方文档,包括快速入门指南、用户手册、开发者...
- **过滤器**: 过滤器在分析过程中用于进一步处理令牌,例如去除停用词或转换大小写等。 #### 六、版权与许可 - **许可证**: Solr 是根据 Apache License 2.0 授权发布的,这意味着用户可以在遵循许可证条款的情况...
通过Schema,用户可以定制化字段的分析过程,如分词、大小写转换、删除停用词等。 3. **Collection**:在分布式环境中,多个Core可以组成一个Collection,实现数据的水平扩展和负载均衡。Collection中的Core可以在...
Solr 是一个流行的开源搜索引擎,常用于大数据量的全文检索和数据分析。本性能测试报告针对的是 Solr 7.0 版本,旨在探讨在不同环境下的读写性能,包括单节点部署和 Solr on HDFS 的集群模式。 在环境准备阶段,...
这些组件可以用于处理文本,如去除停用词、词干提取、大小写转换等,以优化搜索性能。 7. **Cloud模式**:SolrCloud是Solr的分布式管理模式,它利用Zookeeper进行集群管理和状态协调。在Solr 7.7中,用户可以更方便...
- **并发读写性能对比**:虽然单节点在并发读写方面有一定的优势,但在大规模数据处理和高可用性方面,Solr Cloud集群模式更具优势。 #### 六、技术要点总结 - **并发编程**:合理设计线程池参数,避免资源浪费的...
- **过滤器功能**:过滤器进一步处理这些词汇单元,例如去除停用词或转换词汇单元的大小写。 - **自定义分析器**:Solr 允许用户根据需求定制自己的分析器链,从而更好地匹配特定的应用场景。 #### 八、Solr 性能...
- 分析器(Analyzers)用于处理输入文本,包括分词、大小写转换、删除停用词等预处理步骤。 6. **高亮显示(Highlighting)**: - Solr提供高亮显示功能,可以突出显示查询结果中的匹配部分,提高用户体验。 7. ...
4. **关于过滤器**:介绍了文本过滤器的概念和用途,包括大小写转换、停用词移除等常见过滤器。 5. **分词器**:提供了 Solr 中可用的各种分词器的具体说明,包括正则表达式分词器、边N分词器等。 6. **过滤器...
7. **分析器与过滤器**:Solr提供了丰富的文本分析能力,包括分词器(Tokenizers)、过滤器(Filters)和 CharFilters,用于预处理输入文本,例如进行大小写转换、去除停用词等。 8. **实时添加和检索**:Solr支持...
- **分析链**:字段类型可以配置分析器,用于分词、大小写转换、删除停用词等预处理操作。 5. **功能特性** - ** faceting**:支持分类统计,用于生成商品分类或时间区间等维度的统计信息。 - ** Spellcheck**:...
- **大小写转换**:统一词汇大小写,提高检索效率。 - **词干提取**:将词汇还原为其基本形式,比如将"lives"、"lived"还原为"live"。 - **标点符号去除**:进一步精简词汇,仅保留有意义的信息。 - **建立索引*...
分词器的作用是把字段数据拆分成单独的标记,而过滤器则对这些标记进行进一步的处理,例如转换大小写、去除停用词或进行词干提取等。这些组件的组合和配置决定了索引的构建方式以及搜索的准确性和效率。 ### 版权和...
- **过滤器**:对分词后的词汇进行进一步的处理,如去除停用词、转换大小写、词干提取等。 #### 六、结语 通过上述介绍,我们可以看到 Apache Solr 不仅是一款强大的搜索引擎,而且其灵活性和扩展性也非常出色。...
3. 在Atlas中配置数据源,指出HBase的位置和Solr的连接信息。 4. 部署和管理SolrCloud,可能需要创建专门的Solr集合来处理HBase的元数据。 5. 确保所有的安全性和权限设置正确,因为这涉及到敏感的企业级数据。 总...