让我们假设我有标题字段(文本类型),其值为“冰块”。因此它将被索引为两个标记为“ice”和“cubes”。现在,如果我搜索“icecubes”,则没有找到任何结果,因为“icecubes”既不匹配令牌“ice”或“cube”。
反之亦然也是如此。所以我该如何应对这种情况呢。有没有solr的功能来管理它?
答案 0 :(得分:1)
您可以使用带有solr.WordDelimiterFilterFactory
选项的catenateAll="1"
。
这将导致所有子字部分被连接。例如:
"wi-fi-4000" => "wifi4000"
这将解决您的问题。
关于反之,您可以在同一过滤器上使用generateWordParts="1"
(以及splitOnCaseChange="1"
和splitOnNumerics="1"
)选项。
这会导致生成部分单词。例如:
"PowerShot" => "Power" "Shot" (if splitOnCaseChange=1)
"Power-Shot" => "Power" "Shot"
但你需要的话至少是camelcase,否则Solr无法理解在哪里分词。
如果您希望原始作品也按原样进行标记,请记住设置preserveOriginal="1"
。