我有一个文本字段,其中包含电视剧或电影的标题。在某些情况下,我想对我所说的非常正常的文本字段执行短语查询。这适用于大多数短语术语,但在某些可重现的情况下,它不会,但只是不返回任何内容。它似乎与一些特殊的"字符,但不是我认为的所有特殊字符都会受到影响。
Title:("Mission: Impossible")
正常工作Title:("Disney A.N.T.")
无法正常工作Title:("Stephen King's Shining")
无法正常工作Title:("Irgendwie L. A.")
正常工作在尝试了其他几个标题之后我会假设它与点.
和叛逆者'
有某种关联,也许其他我还不知道。我不知道,在哪里知道
相关的schema.xml
<fieldType name="title" class="solr.TextField" sortMissingLast="true"
positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.GermanNormalizationFilterFactory"/>
<filter class="solr.ICUFoldingFilterFactory"/>
<filter class="solr.WordDelimiterFilterFactory" preserveOriginal="1"
splitOnCaseChange="0" splitOnNumerics="0" stemEnglishPossessive="0"
generateWordParts="1" generateNumberParts="0"
catenateWords="1" catenateNumbers="0" catenateAll="0" />
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.GermanNormalizationFilterFactory"/>
<filter class="solr.ICUFoldingFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
答案 0 :(得分:1)
您的问题是关于字段上的短语,其中“index”类型的分析器包含solr.WordDelimiterFilterFactory,但在类型“query”中它不包含。
MatsLindh告诉我们,第一步是打开analysis screen。
在这种情况下,位置值很重要。
使用solr.WordDelimiterFilterFactory中的属性,标记“King's”将转换为“king”,“king”“kings”“s”,最后一个“s”开启!second!位置。
这不解释 solr.StandardTokenizerFactory 因此,如果您在没有solr.WordDelimiterFilterFactory的情况下搜索短语“Stephen King's Shining”,则“Shining”标记位于第三位,但如果您使用solr.WordDelimiterFilterFactory进行索引,则标记“Shining”位于第四位,因此只有“Stephen King's闪耀的“~2(与Slop”相匹配,但不是“斯蒂芬金的闪耀”。
这并不能解释您对“迪士尼A.N.T.”的问题。但请注意,solr.StandardTokenizerFactory将删除最后一个点,而solr.WhitespaceTokenizerFactory则不会。