繁体   English   中英

solr分析器中的大写

[英]uppercase in solr analyzer

我想从一个字段复制值,然后将值大写并放入另一个字段

在我的schema.xml中,字段“ facility and uppercaseFacility”看起来像

<field name="facility" type="text" indexed="true" stored="true"/>
<field name="facilityuppercaseFacility" type="text" indexed="true" stored="true"/>

如果我没看错,我需要编写自己的Java代码并在分析器中使用它来完成它。

同时,我点击了此链接http://solr.pl/en/2012/05/14/developing-your-own-solr-filter/

我收到此错误。

Caused by: org.apache.solr.common.SolrException: Plugin init failure for [schema.xml] analyzer/filter: class pl.solr.solr2.ReverseFilterFactory
    at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:177)
    at org.apache.solr.schema.FieldTypePluginLoader.readAnalyzer(FieldTypePluginLoader.java:400)
    at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:95)
    at org.apache.solr.schema.FieldTypePluginLoader.create(FieldTypePluginLoader.java:43)
    at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151)
    ... 14 more
Caused by: java.lang.ClassCastException: class pl.solr.solr2.ReverseFilterFactory
    at java.lang.Class.asSubclass(Class.java:3126)
    at org.apache.solr.core.SolrResourceLoader.findClass(SolrResourceLoader.java:454)
    at org.apache.solr.core.SolrResourceLoader.newInstance(SolrResourceLoader.java:573)
    at org.apache.solr.schema.FieldTypePluginLoader$3.create(FieldTypePluginLoader.java:382)
    at org.apache.solr.schema.FieldTypePluginLoader$3.create(FieldTypePluginLoader.java:376)
    at org.apache.solr.util.plugin.AbstractPluginLoader.load(AbstractPluginLoader.java:151)
    ... 18 more

我不知道它在说什么,也不知道如何解决。

您是否希望其他领域的视觉表现成为上流社会? 或已索引的索引(一个用于搜索)。 分析器链不会影响原始(存储的)表示形式,只会影响被索引的内容。 除了切面(使用索引表示)之类的边缘情况外,您看不到任何其他内容。

因此,您需要明确要实现的目标。

  1. 如果您想要索引表示形式,则最新(4.8+)版本的Solr确实具有UpperCaseFilterFactory
  2. 如果您还希望视觉表示形式也大写,则必须使用UpdateRequestProcessor(URP)链。 类似于克隆URP 没有UpperCase URP,您需要编写一个自定义的。 而且,如果这是您首次接触URP,请确保阅读WIKI ,并将LogURP和RunURP包含在链中,否则,任何文档都不会真正纳入Solr。

如果要查看其他可用内容,可以在http://solr-start.com上找到URP分析器的完整列表。

是。 没错 默认情况下没有任何UpperCaseFilterFactory。 因此,您需要自己编写。 但我强烈不建议这样做。 PLZ阅读此澄清- http://mail-archives.apache.org/mod_mbox/lucene-solr-user/201205.mbox/%3CA60A9075-7AEC-4A15-A9EA-9C83CAF8B676@wunderwood.org%3E

在Unicode中,大写字符会丢失信息,因为有些大写字符代表多个小写字符。

小写的大写字母是安全的,因此始终小写。

无论如何,如果您决定这样做-您需要实现此抽象类http://lucene.apache.org/core/4_7_0/analyzers-common/org/apache/lucene/analysis/util/TokenFilterFactory.html ,然后添加到你的schema.xml之类的东西

检查您的类路径中是否没有较旧/混合的Solr库,因为它可能试图转换为较早版本的BaseTokenFilterFactory

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM