2013-08-13 2 views
0

Я добавил LanguageAnalysis в свой файл схемы. После добавления этого фабричного фильтра завод начал работать, но это сделало мое слово непознаваемым.LanguageAnalysis in solr - это слова, которые не доступны для поиска

Я добавил в запрос время после.

Мой файл схемы выглядит следующим образом:

<schema name="test" version="1.50"> 
<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" omitNorms="true"/> 
    <fieldType name="float" class="solr.TrieFloatField" precisionStep="0" positionIncrementGap="0"/> 
    <fieldType name="date" class="solr.TrieDateField" precisionStep="6" positionIncrementGap="0"/> 
    <fieldType name="text" 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.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="100" side="front"/> 
     <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="100" side="back"/>  
     </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"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     </analyzer> 
    </fieldType> 
    <fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/> 

</types> 
<fields> 
    <field name="Id" type="int" indexed="true" stored="true" required="true" /> 
    <field name="Name" type="text" indexed="true" stored="true" required="false" /> 
    <field name="ShortDescription" type="text" indexed="true" stored="true" required="false" /> 
    <field name="FullDescription" type="text" indexed="true" stored="false" required="false" />  

    <field name="_version_" type="long" indexed="true" stored="true"/> 

</fields> 


    <uniqueKey>Id</uniqueKey> 
    <copyField source="Name" dest="NameCopy"/>  
    <defaultSearchField>Name</defaultSearchField> 
    <solrQueryParser defaultOperator="OR"/> 
</schema> 

Некоторые особенности слова, как аккумулятор, инновационные, более и т.д., становится не поиск после добавления solr.PorterStemFilterFactory.

Почему это происходит? Я также попробовал другие фабрики фильтров для stemning и LanguageAnalysis, но они также ведут себя так же, как это.

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

ответ

1

Это потому, что Портер, который меняет ваши слова, когда он их символизирует.

Вы должны применить тот же алгоритм на вашем поле также во время индексации. В вашем случае добавьте в разделе <analyzer type="index"> эту строку:

<filter class="solr.PorterStemFilterFactory"/> 

взглянуть на эту страницу, чтобы увидеть, как PorterStemmer работает на ваших словах: http://9ol.es/porter_js_demo.html