我如何摆脱"。"在使用solr whitespacetokenizer和worddelimiterfilterfactory时在令牌的末尾

时间:2015-03-04 03:08:15

标签: solr lucene

我要将此文字标记为:

"让我们购买一台PowerShot-100相机。"

我正在使用空格标记器,然后是字分隔符工厂。

worddelimiterfilterfactory创建令牌,例如"让","让"","购买" ," a" "电源及#34; ," PowerShot" ,," Shot"," 100" ," PowerShot100","相机。"还有#34;相机"

当我尝试运行像这样的短语查询" PowerShot-100相机时。"该文件已经退回,但是" PowerShot-100相机"没有任何回报。如果我通过2的斜率,它将返回文档。两个令牌和相机的起始位置相同。"和#34;相机" 。我不明白为什么短语查询" PowerShot-100相机"没有任何回报。

这是架构



<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.WhitespaceTokenizerFactory" />
    <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="1" generateNumberParts="1" generateWordParts="1" catenateWords="1" splitOnCaseChange="1" stemEnglishPossessive="0" preserveOriginal="1" />
    <filter class="solr.LowerCaseFilterFactory" />

  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.WhitespaceTokenizerFactory" />
    <filter class="solr.WordDelimiterFilterFactory" splitOnNumerics="1" generateNumberParts="1" generateWordParts="1" catenateWords="1" splitOnCaseChange="1" stemEnglishPossessive="0" preserveOriginal="1" />
    <filter class="solr.LowerCaseFilterFactory" />
  </analyzer>
</fieldType>
&#13;
&#13;
&#13;

1 个答案:

答案 0 :(得分:0)

尝试此字段类型,它应该可以解决您的问题。

<fieldType name="text_delimeter" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" preserveOriginal="1" catenateAll="1" splitOnCaseChange="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<!--
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" preserveOriginal="1" catenateAll="0" splitOnCaseChange="0"/> 
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>