Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package org.apache.solr.update.processor;
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
 import java.util.List;
Identifies the language of a set of input fields using

The UpdateProcessorChain config entry can take a number of parameters which may also be passed as HTTP parameters on the update request and override the defaults. Here is the simplest processor config possible:

 <processor class="org.apache.solr.update.processor.LangDetectLanguageIdentifierUpdateProcessorFactory">
   <str name="langid.fl">title,text</str>
   <str name="langid.langField">language_s</str>

         UpdateRequestProcessorFactory implements SolrCoreAwareLangIdParams {
   protected SolrParams defaults;
   protected SolrParams appends;
   protected SolrParams invariants;
   public void inform(SolrCore core) {

The UpdateRequestProcessor may be initialized in solrconfig.xml similarly to a RequestHandler, with defaults, appends and invariants.

args a NamedList with the configuration parameters
   public void initNamedList args )
     try {
     } catch (Exception e) {
       throw new RuntimeException("Couldn't load profile data, will return empty languages always!"e);
     if (args != null) {
       Object o;
       o = args.get("defaults");
       if (o != null && o instanceof NamedList) {
          = SolrParams.toSolrParams((NamedListo);
       } else {
          = SolrParams.toSolrParams(args);
       o = args.get("appends");
       if (o != null && o instanceof NamedList) {
          = SolrParams.toSolrParams((NamedListo);
       o = args.get("invariants");
       if (o != null && o instanceof NamedList) {
          = SolrParams.toSolrParams((NamedListo);
                                            SolrQueryResponse rspUpdateRequestProcessor next) {
    // Process defaults, appends and invariants if we got a request
    if(req != null) {
    return new LangDetectLanguageIdentifierUpdateProcessor(reqrspnext);
  // DetectorFactory is totally global, so we only want to do this once... ever!!!
  static boolean loaded;
  // profiles we will load from classpath
  static final String languages[] = {
  public static synchronized void loadData() throws IOExceptionLangDetectException {
    if () {
     = true;
    List<StringprofileData = new ArrayList<String>();
    Charset encoding = Charset.forName("UTF-8");
    for (String language : ) {
      InputStream stream = LangDetectLanguageIdentifierUpdateProcessor.class.getResourceAsStream("langdetect-profiles/" + language);
      BufferedReader reader = new BufferedReader(new InputStreamReader(streamencoding));
      profileData.add(new String(IOUtils.toCharArray(reader)));
New to GrepCode? Check out our FAQ X