我有一个由haystack创建的模式,用于索引Solr 4.3中的书籍和作者 执行搜索时,除了包含连字符的搜索词外,一切正常。
我知道你必须使用反斜杠来逃避它们,但即使使用solr web界面,我也无法找到正确的文档。
如下面的屏幕截图所示,有一位名为Ukiyo-E的作者可以使用 full_name :( ukiyo)找到。输入 full_name :( ukiyo-e)或 full_name :( ukiyo-e)时,我找不到任何内容。
修改
架构信息:
<fieldType name="edge_ngram" class="solr.TextField" positionIncrementGap="1">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
</analyzer>
</fieldType>
...
<field name="full_name" type="edge_ngram" indexed="true" stored="true" multiValued="false" />
分析结果
答案 0 :(得分:3)
分别使用“分析”菜单分析您的术语,以进行索引和查询。具体来说,在索引和查询时间内应该有类似的文本处理例程(请参阅架构中的full_name字段)。如果您没有将查询“ukiyo-e”标记为2个术语ukiyo
和e
,但在编制索引时将其标记化,则无法找到完整的术语ukiyo-e
。