SOLR问题包含破折号,夸张等词

时间:2016-10-12 00:14:34

标签: php apache solr lucene

出于某种原因,我的SOLR安装行为很糟糕(我也是这个话题的新手..)

例如: 在我的数据库中我有一个名为“品牌名称XX-7 Yadda Ladida”的项目

如果我搜索:

  

Brandname XX7    我没有得到结果的项目(前20名)

     

Brandname XX-7我得到了第8个位置的预期结果;   第一个位置是“Brandname XX-2 Yadda Ladida”项目

     

Brandname XX-7 Ladida我在第7位获得预期成绩;   第一个位置是“Brandname XX-2 Yadda Ladida”项目

     

Brandname XX-7 Yadda Ladida我在第7位获得预期结果AGAIN;   第一个位置是“Brandname XX-2 Yadda Ladida”项目

PS。 eveything案例不敏感

我做错了什么? 请指教..

这是我的托管架构xml文件 http://pastebin.com/Z9nc36QD

更新 这是一个搜索“boss dd-7”的示例查询

  "debug":{
    "rawquerystring":"Brandname xx-7",
    "querystring":"Brandname xx-7",
    "parsedquery":"_text_:Brandname (_text_:xx _text_:7)",
    "parsedquery_toString":"_text_:Brandname (_text_:xx _text_:7)",

1 个答案:

答案 0 :(得分:0)

好的,不是通过简单地删除我的架构中的这一行

<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="25" />

并添加

             <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />

我的最终代码(考虑我的字段是text_general)

    <fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
         <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
          <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>

  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.WordDelimiterFilterFactory" generateWordParts="0" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1" preserveOriginal="1" />
        <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>