2017-01-20 5 views
0

Das ist mein schema.xml istsolr nicht in mehrsprachiger Suche

<?xml version="1.0" encoding="UTF-8"?> 
<!-- multi language in single core R&D Pallav Jha --> 
<schema name="Pallav" version="1.14"> 
    <uniqueKey>SolrId</uniqueKey> 
    <defaultSearchField>Name</defaultSearchField> 
    <solrQueryParser defaultOperator="OR"/> 
    <fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/> 
    <fieldType name="booleans" class="solr.BoolField" sortMissingLast="true"/> 
    <fieldType name="date" class="solr.TrieDateField" positionIncrementGap="0" precisionStep="6"/> 
    <fieldType name="float" class="solr.TrieFloatField" positionIncrementGap="0" precisionStep="0"/> 
    <fieldType name="int" class="solr.TrieIntField" omitNorms="true" positionIncrementGap="0" precisionStep="0"/> 
    <fieldType name="long" class="solr.TrieLongField" positionIncrementGap="0" precisionStep="0"/> 
    <fieldType name="nGramAttributes" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <charFilter class="solr.PatternReplaceCharFilterFactory" pattern="!!.*?!!" replacement=""/> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.EdgeNGramFilterFactory" maxGramSize="10" minGramSize="1"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.FrenchLightStemFilterFactory"/> 
     <filter class="solr.SnowballPorterFilterFactory" language="French" /> 
     <filter class="solr.ASCIIFoldingFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
     <tokenizer class="solr.KeywordTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.SnowballPorterFilterFactory" language="German2"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     <filter class="solr.FrenchLightStemFilterFactory"/> 
     <filter class="solr.SnowballPorterFilterFactory" language="French" /> 
     <filter class="solr.ASCIIFoldingFilterFactory"/> 
    </analyzer> 
    </fieldType> 
    <fieldType name="nGramtext" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <charFilter class="solr.HTMLStripCharFilterFactory"/> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.EdgeNGramFilterFactory" maxGramSize="15" minGramSize="3"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     <filter class="solr.PhoneticFilterFactory" encoder="Soundex" inject="true"/> 
     <filter class="solr.FrenchLightStemFilterFactory"/> 
     <filter class="solr.SnowballPorterFilterFactory" language="French" /> 
     <filter class="solr.ASCIIFoldingFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     <filter class="solr.PhoneticFilterFactory" encoder="Soundex" inject="true"/> 
     <filter class="solr.FrenchLightStemFilterFactory"/> 
     <filter class="solr.SnowballPorterFilterFactory" language="French" /> 
     <filter class="solr.ASCIIFoldingFilterFactory"/> 
    </analyzer> 
    </fieldType> 
    <fieldType name="string" class="solr.StrField" omitNorms="true" sortMissingLast="true"/> 
    <fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <charFilter class="solr.HTMLStripCharFilterFactory"/> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     <filter class="solr.PhoneticFilterFactory" encoder="Soundex" inject="true"/> 
    </analyzer> 
    <analyzer type="query"> 
     <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.PorterStemFilterFactory"/> 
     <filter class="solr.PhoneticFilterFactory" encoder="Soundex" inject="true"/> 
    </analyzer> 
    </fieldType> 
    <fieldType name="textSpell" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    <analyzer type="query"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
    </fieldType> 
    <field name="SolrId" type="string" indexed="true" required="true" stored="true"/> 
    <field name="Name" type="string" indexed="true" required="true" stored="true"/> 

    <field name="en_Name" type="string" indexed="true" required="false" stored="true"/> 
    <field name="nl_Name" type="string" indexed="true" required="false" stored="true"/> 
    <field name="fr_Name" type="string" indexed="true" required="false" stored="true"/> 
    <field name="hi_Name" type="string" indexed="true" required="false" stored="true"/> 

    <field name="_version_" type="long" indexed="true" stored="true"/> 
    <field name="nGramContent" type="nGramtext" multiValued="true" indexed="true" required="false" stored="false"/> 
    <dynamicField name="CDO_*" type="int" indexed="true" required="false" stored="true"/> 
    <dynamicField name="MDO_*" type="int" indexed="true" required="false" stored="true"/> 
    <dynamicField name="pa_*" type="string" multiValued="true" indexed="true" required="false" stored="true"/> 
    <dynamicField name="cp_*" type="string" indexed="true" required="false" stored="true"/> 
    <dynamicField name="f_*" type="string" multiValued="true" indexed="true" required="false" stored="true"/> 
    <dynamicField name="*_s" type="string" indexed="true" stored="true"/> 
    <!-- <copyField source="Name" dest="SpellContent"/> --> 

</schema> 

Ich versuche nur zu Testzwecken für Französisch Multi Sprache Suche zu implementieren. aber es funktioniert nicht Ich bekomme kein Ergebnis.Kann mir helfen.Was mache ich falsch

Dies ist mein Ergebnis für Französisch. solr french search result

+0

in Ordnung, Sie in einem Englisch Beispiel alle nur zurückkehren tun, könnten Sie versuchen, denselben auf Französisch? – Mysterion

+0

das ist meine Abfrage für die Suche in Französisch localhost: 8983/solr/MultiLang/wählen? FQ = FR_Name: A * & Einzug = auf & q = *: * & wt = JSON es gibt mir kein Ergebnis –

+0

Ich nehme an, Sie haben einige Daten mit Name beginnend von A, richtig? :) – Mysterion

Antwort

0

diesen Feldtyp hinzufügen für mich

<fieldType name="text_fr" class="solr.TextField" positionIncrementGap="100"> 
     <analyzer> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.ElisionFilterFactory" articles="lang/contractions_fr.txt" ignoreCase="true"/> 
     <filter class="solr.LowerCaseFilterFactory"/> 
     <filter class="solr.StopFilterFactory" format="snowball" words="lang/stopwords_fr.txt" ignoreCase="true"/> 
     <filter class="solr.FrenchLightStemFilterFactory"/> 
     </analyzer> 
    </fieldType> 

seine Arbeit

0

Das Problem ist, fr_Name das Feld vom Typ string, was bedeutet, dass es nicht analysiert oder Token aufgeteilt ist, dass, wenn Sie etwas suchen möchten, die Leerzeichen enthält, wie Apple Mac Book Pro, Sie doppelte Anführungszeichen verwenden müssen, für eine vollständige Spiel. Also, Abfrage "fq":"fr_Name":\"Apple Mac Book Pro\" sollte für Sie arbeiten.

Einige Referenzmaterial aus dem Solr wiki:

String (UTF-8-codierter String oder Unicode). Strings sind für kleine Felder vorgesehen und werden in keiner Weise in Token zerlegt oder analysiert. Sie haben eine harte Grenze von etwas weniger als 32K.

+0

, indem ich dieses benutze, ich erhält alle das Ergebnis, das ich will nur fr_Name: Apple Mac Book Ergebnis –

+0

Jetzt kommt es auf Ihre Daten an, haben Sie bekommen, was ich Ihnen geschrieben habe? Das String-Feld wird nicht analysiert, nicht in Token, um eine Übereinstimmung zu erhalten, müssen Sie es vollständig in Anführungszeichen schreiben – Mysterion

+0

in Solr Admin könnte es möglich sein, dass Sie doppelte Anführungszeichen nicht entkommen müssen – Mysterion