簡體   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