2015-04-27 3 views
0

Я получаю выше исключения в поиске solr, когда пытаюсь найти что-то с пространством. Он отлично работает, если я ищу без пробелов.org.apache.solr.common.SolrException: неопределенное имя поля

мой поисковый запрос package_name:Life Style

и мой schema.xml является

<?xml version="1.0" ?> 


<schema name="example core two" version="1.5"> 
    <types> 
    <fieldtype name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/> 
    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/> 
    <fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="double" class="solr.TrieDoubleField" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="date" class="solr.TrieDateField" precisionStep="0" positionIncrementGap="0"/> 
    <!-- A Trie based date field for faster date range queries and date faceting. --> 
    <fieldType name="tdate" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/> 

    <fieldType name="location" class="solr.LatLonType" subFieldSuffix="_coordinate"/> 
    <dynamicField name="*_coordinate" type="tdouble" indexed="true" stored="false"/> 
    <!-- A text field that only splits on whitespace for exact matching of words --> 
    <fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     </analyzer> 
    </fieldType> 



    <!-- A general text field that has reasonable, generic 
     cross-language defaults: it tokenizes with StandardTokenizer, 
    removes stop words from case-insensitive "stopwords.txt" 
    (empty by default), and down cases. At query time only, it 
    also applies synonyms. --> 
    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
     <!-- in this example, we will only use synonyms at query time 
     <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
     --> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 

    <fieldType name="text_general_standard" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
     <!-- in this example, we will only use synonyms at query time 
     <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
     --> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 


    <!-- A text field with defaults appropriate for English: it 
     tokenizes with StandardTokenizer, removes English stop words 
     (lang/stopwords_en.txt), down cases, protects words from protwords.txt, and 
     finally applies Porter's stemming. The query time analyzer 
     also applies synonyms from synonyms.txt. --> 
    <fieldType name="text_en" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <!-- in this example, we will only use synonyms at query time 
     <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
     --> 
     <!-- Case insensitive stop word removal. 
      add enablePositionIncrements=true in both the index and query 
      analyzers to leave a 'gap' for more accurate phrase queries. 
     --> 
     <filter class="solr.StopFilterFactory" 
       ignoreCase="true" 
       words="lang/stopwords_en.txt" 
       enablePositionIncrements="true" 
       /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.EnglishPossessiveFilterFactory"/> 
     <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
    <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory: 
     <filter class="solr.EnglishMinimalStemFilterFactory"/> 
    --> 
     <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.StopFilterFactory" 
       ignoreCase="true" 
       words="lang/stopwords_en.txt" 
       enablePositionIncrements="true" 
       /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    <filter class="solr.EnglishPossessiveFilterFactory"/> 
     <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
    <!-- Optionally you may want to use this less aggressive stemmer instead of PorterStemFilterFactory: 
     <filter class="solr.EnglishMinimalStemFilterFactory"/> 
    --> 
     <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
    </fieldType> 


    <!-- A text field with defaults appropriate for English, plus 
    aggressive word-splitting and autophrase features enabled. 
    This field is just like text_en, except it adds 
    WordDelimiterFilter to enable splitting and matching of 
    words on case-change, alpha numeric boundaries, and 
    non-alphanumeric chars. This means certain compound word 
    cases will work, for example query "wi fi" will match 
    document "WiFi" or "wi-fi". However, other cases will still 
    not match, for example if the query is "wifi" and the 
    document is "wi fi" or if the query is "wi-fi" and the 
    document is "wifi". 
     --> 
    <fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> 
     <analyzer type="index"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <!-- in this example, we will only use synonyms at query time 
     <filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/> 
     --> 
     <!-- Case insensitive stop word removal. 
      add enablePositionIncrements=true in both the index and query 
      analyzers to leave a 'gap' for more accurate phrase queries. 
     --> 
     <filter class="solr.StopFilterFactory" 
       ignoreCase="true" 
       words="lang/stopwords_en.txt" 
       enablePositionIncrements="true" 
       /> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.StopFilterFactory" 
       ignoreCase="true" 
       words="lang/stopwords_en.txt" 
       enablePositionIncrements="true" 
       /> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
    </fieldType> 



    <!-- Less flexible matching, but less false matches. Probably not ideal for product names, 
     but may be good for SKUs. Can insert dashes in the wrong place and still match. --> 
    <fieldType name="text_en_splitting_tight" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true"> 
     <analyzer> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="0" catenateWords="1" catenateNumbers="1" catenateAll="0"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/> 
     <filter class="solr.EnglishMinimalStemFilterFactory"/> 
     <!-- this filter can remove any duplicate tokens that appear at the same position - sometimes 
      possible with WordDelimiterFilter in conjuncton with stemming. --> 
     <filter class="solr.RemoveDuplicatesTokenFilterFactory"/> 
     </analyzer> 
    </fieldType> 




    <!-- Just like text_general except it reverses the characters of 
    each token, to enable more efficient leading wildcard queries. --> 
    <fieldType name="text_general_rev" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true" 
      maxPosAsterisk="3" maxPosQuestion="2" maxFractionAsterisk="0.33"/> 
     </analyzer> 
     <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" /> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     </analyzer> 
    </fieldType> 





    <fieldtype name="payloads" stored="false" indexed="true" class="solr.TextField" > 
     <analyzer> 
     <tokenizer class="solr.WhitespaceTokenizerFactory"/> 
     <!-- 
     The DelimitedPayloadTokenFilter can put payloads on tokens... for example, 
     a token of "foo|1.4" would be indexed as "foo" with a payload of 1.4f 
     Attributes of the DelimitedPayloadTokenFilterFactory : 
     "delimiter" - a one character delimiter. Default is | (pipe) 
    "encoder" - how to encode the following value into a playload 
     float -> org.apache.lucene.analysis.payloads.FloatEncoder, 
     integer -> o.a.l.a.p.IntegerEncoder 
     identity -> o.a.l.a.p.IdentityEncoder 
      Fully Qualified class name implementing PayloadEncoder, Encoder must have a no arg constructor. 
     --> 
     <filter class="solr.DelimitedPayloadTokenFilterFactory" encoder="float"/> 
     </analyzer> 
    </fieldtype> 


    </types> 

    <fieldType name="compositeKeyType" class="solr.TextField" omitNorms="true"> 
     <analyzer> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.ConcatTokenFilterFactory" delim="-"/> 
     </analyzer> 
    </fieldType> 

    <fields> 
    <!-- general --> 
    <field name="test_package_id"  type="int" indexed="true" stored="true" multiValued="false" required="false"/> 
    <field name="package_name"  type="text_general" indexed="true" stored="true" multiValued="false" /> 
    <field name="code"  type="text_general" indexed="true" stored="true" multiValued="false" required="false"/> 
    <field name="from_age"  type="int" indexed="true" stored="true" multiValued="false" /> 
    <field name="to_age"  type="int" indexed="true" stored="true" multiValued="false" /> 
    <field name="price"  type="float" indexed="true" stored="true" multiValued="false" required="false"/> 
    <field name="description" type="text_general" indexed="true" stored="true" multiValued="false" /> 
    <field name="city_id" type="int" indexed="true" stored="true" multiValued="false" /> 
<!-- <copyField source="doctor_id" dest="id"/> --> 
    </fields> 



<!-- field to use to determine and enforce document uniqueness. --> 



<!-- SolrQueryParser configuration: defaultOperator="AND|OR" --> 
<solrQueryParser defaultOperator="OR"/> 
</schema> 

Пожалуйста, помогите мне. что происходит здесь не так

ответ

Смежные вопросы