solr分析仪中的大写字母

时间:2014-05-30 05:53:23

标签: solr indexing

我想从一个字段复制值并将值设为大写并将其放在另一个字段中

在我的schema.xml中,字段" facility和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

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

3 个答案:

答案 0 :(得分:1)

你想让其他领域的视觉表现成为上层阶级吗?或索引的(一个用于搜索)。分析器链不会影响原始(存储)表示,只会影响索引。您没有看到,除了像分面(使用索引表示)之类的边缘情况。

所以,你需要清楚自己想要达到的目标。

  1. 如果您想要索引表示,Solr的最新版本(4.8+)确实有UpperCaseFilterFactory
  2. 如果您希望可视化表示也是大写,则必须使用UpdateRequestProcessor(URP)链。像Clone URP这样的东西。没有UpperCase URP,您需要编写自定义URP。并且,如果这是您第一次接触URP,请确保read the WIKI并在链中包含LogURP和RunURP,否则,任何文档都不会真正进入Solr。
  3. 如果您想查看其他可用内容,可以在URPs找到Analyzershttp://solr-start.com的完整列表。

答案 1 :(得分:0)

是。你纠正了。默认情况下,没有任何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中

                                          

答案 2 :(得分:0)

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