[ 
https://issues.apache.org/jira/browse/SOLR-9751?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Steve Rowe updated SOLR-9751:
-----------------------------
    Attachment: SOLR-9751.patch

Patch with a fix.

The problem results from a combination of lenient schema parsing and the lack 
of a concept for non-user-specifiable index-time analyzers.

This patch adds a new interface {{HasImplicitIndexAnalyzer}}, implemented by 
{{PreAnalyzedField}}, and schema parsing and serialization now properly handle 
this case.  As a result, when a field type implements 
{{HasImplicitIndexAnalyzer}}, regardless of the original specified analyzer 
type, an analyzer (if any) will always be specified as a query-time analyzer, 
even if it was originally specified as a non-specific or index-time analyzer. 

I've also adding logged warnings for cases where analyzers are specified in the 
schema for field types that don't support analyzers (currently 
non-{{TextField}}-s).

I'll commit once all tests and precommit pass.

> PreanalyzedField can cause schema corruption
> --------------------------------------------
>
>                 Key: SOLR-9751
>                 URL: https://issues.apache.org/jira/browse/SOLR-9751
>             Project: Solr
>          Issue Type: Bug
>      Security Level: Public(Default Security Level. Issues are Public) 
>          Components: Schema and Analysis
>    Affects Versions: 6.2, 6.3
>            Reporter: liuyang
>            Assignee: Steve Rowe
>            Priority: Minor
>         Attachments: SOLR-9751.patch, SOLR-9751.patch
>
>
> The exception as follows:
> Caused by: org.apache.solr.common.SolrException: Could not load conf for core 
> test_shard1_replica1: Can't load schema managed-schema: Plugin init failure 
> for [schema.xml] fieldType "preanalyzed": Cannot load analyzer: 
> org.apache.solr.schema.PreAnalyzedField$PreAnalyzedAnalyzer
>         at 
> org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:85)
>         at org.apache.solr.core.CoreContainer.create(CoreContainer.java:1031)
>         ... 6 more
> Caused by: org.apache.solr.common.SolrException: Can't load schema 
> managed-schema: Plugin init failure for [schema.xml] fieldType "preanalyzed": 
> Cannot load analyzer: 
> org.apache.solr.schema.PreAnalyzedField$PreAnalyzedAnalyzer
>         at org.apache.solr.schema.IndexSchema.readSchema(IndexSchema.java:600)
>         at org.apache.solr.schema.IndexSchema.<init>(IndexSchema.java:183)
>         at 
> org.apache.solr.schema.ManagedIndexSchema.<init>(ManagedIndexSchema.java:104)
>         at 
> org.apache.solr.schema.ManagedIndexSchemaFactory.create(ManagedIndexSchemaFactory.java:172)
>         at 
> org.apache.solr.schema.ManagedIndexSchemaFactory.create(ManagedIndexSchemaFactory.java:45)
>         at 
> org.apache.solr.schema.IndexSchemaFactory.buildIndexSchema(IndexSchemaFactory.java:75)
>         at 
> org.apache.solr.core.ConfigSetService.createIndexSchema(ConfigSetService.java:107)
>         at 
> org.apache.solr.core.ConfigSetService.getConfig(ConfigSetService.java:78)
>         ... 7 more
> Test procedure:
> 1.create collection using sample_techproducts_configs;
> 2.add field in Solr web view;
> 3.add field again in Solr web view.
> manage-schema is modifyed as follows:
> <fieldType name="preanalyzed" class="solr.PreAnalyzedField">
>       <analyzer class=" 
> org.apache.solr.schema.PreAnalyzedField$PreAnalyzedAnalyzer">
>       </analyzer>
> </fieldType>



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to