SOLR匹配短语(带状过滤器)



我使用SOLR 5.2构建一个应用程序,我需要这种类型的匹配:

如果我存储了字段名称:"bla1 bla2"和名称:"bla2 something bla3"当我查询的东西,如名称:"东西bla1 bla2的东西bla3 bla4"我需要它匹配两个项

我最后定义了这个类型的字段:

我使用关键字Tokenizer为索引

我使用空白标记器和Shingle过滤器查询所以我得到这样的东西"bla tra kla zla"输出"bla tra", "bla tra kla", "bla tra kla zla" .......

我在分析和shingling工作得很好,但问题是,当我执行我的查询与真实的数据,它只是似乎没有找到一个匹配。

 <fieldType name="shingleparse" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.KeywordTokenizerFactory"/>
    </analyzer>
  <analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>      
<filter class="solr.ShingleFilterFactory" outputUnigrams="false" outputUnigramsIfNoShingles="true" minShingleSize="2" maxShingleSize="5"/>
  </analyzer>   
</fieldType>
<field name="name" type="shingleparse" indexed="true" stored="true" required="true" multiValued="false" />

您能检查一下这是否符合您的要求吗?

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

最新更新