繁体   English   中英

Solr不使用多语言搜索

[英]solr not searching in multi language

这是我的schema.xml

<?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>

我正在尝试仅针对测试实施法语的多语言搜索。 但是它没有用,我没有得到任何结果。有人可以帮助我。我在做什么错

这是我的法语结果。 solr法语搜索结果

问题在于,字段fr_Name的类型为string ,这意味着未对其进行分析或标记化,如果要搜索包含空格的内容(例如Apple Mac Book Pro ,则需要使用双引号将其完全匹配。 因此,查询"fq":"fr_Name":\\"Apple Mac Book Pro\\"应该适合您。

Solr Wiki上的一些参考资料:

字符串(UTF-8编码的字符串或Unicode)。 字符串用于较小的字段,不会以任何方式标记或分析。 它们的硬限制略小于32K。

添加此字段类型

<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>

它为我工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM