包含破折号、连字符等的单词的SOLR问题

x8diyxa7  于 2022-11-05  发布在  Solr
关注(0)|答案(1)|浏览(218)

由于某种原因,我的SOLR安装行为不稳定(我也是这个主题的新手...)
示例:在我的数据库中,我有一个名为**“Brandname XX-7 Yadda Ladida”的项目**
如果我搜索:
Brandname XX7我在结果(前20个)中根本找不到该项目
Brandname XX-7我在第8位得到预期结果;第一个位置由“品牌XX-2 Yadda Ladida”占据
Brandname XX-7 Ladida我在第7位得到预期结果;第一个位置由“品牌XX-2 Yadda Ladida”占据
Brandname XX-7 Yadda Ladida我在第7位再次得到预期结果;第一个位置由“品牌XX-2 Yadda Ladida”占据
PS.所有内容不区分大小写
我做错了什么???请指教。
这是我托管架构xml文件http://pastebin.com/Z9nc36QD

UPDATE这是一个搜索“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)",
kfgdxczn

kfgdxczn1#

好,没有,只要在我的模式中删除这一行就行了

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

相关问题