使用自定义类型

时间:2016-07-31 19:48:53

标签: solr

我正在使用Solr。我需要通过使用来搜索我们得到的关键字 例如,我想搜索x1碳, 在我的SQL搜索中我得到了正确的结果

select * from table where name like "%x1 carbon%"

在solr中我得到了正确的结果但是我没有得到例如说的条目,但我在mysql中使用类似“%text%”

获得以下条目

x1碳 x1碳 x1碳 .................

我的架构在下面

<fieldType name="text_general_k" class="solr.TextField">
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>  

我应该怎样做才能获得上述vaules,如

someword_x1 carbon

someword_x1 carbon_?

这个模式我没有得到

<fieldType name="string" class="solr.StrField" sortMissingLast="true" />

    <fieldType name="text_general_k" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" /> 
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
</fieldType>

我附上了查询分析器的场景

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以在自己的字段下尝试以下自定义字段类型。

<fieldType name="likeField" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
    <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" /> 
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
</fieldType>

使用下面的配置,字符串值尼日利亚会细分为以下字词

Nigerian => "ni", "nig", "nige", "niger", "nigeri", "nigeria", "nigeria", "nigerian"