0

我有一个由 haystack 创建的架构,用于在 Solr 4.3 中为书籍和作者编制索引 执行搜索时,除了包含连字符的搜索词外,一切正常。

我知道您必须使用反斜杠来转义它们,但即使使用 solr Web 界面,我也无法找到正确的文档。

如下图所示,有一个名为 Ukiyo-E 的作者,可以使用full_name:(ukiyo)找到。输入full_name:(ukiyo-e)full_name:(ukiyo-e)时,我找不到任何东西。

搜索 ukiyo 给出一个匹配 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" />

分析仪结果: 在此处输入图像描述

4

1 回答 1

3

使用“分析”菜单分别分析您的术语以进行索引和查询。具体来说,您应该在索引和查询期间有类似的文本处理例程(请参阅架构中​​的 full_name 字段)。如果您不将查询“ukiyo-e”标记为 2 个术语ukiyoe,而是在索引期间对其进行标记,您将无法找到完整的术语ukiyo-e

于 2013-09-02T10:59:17.277 回答