在solr中搜索没有空格的单词和空格的单词

时间:2013-08-14 07:13:49

标签: search text solr space words

让我们假设我有标题字段(文本类型),其值为“冰块”。因此它将被索引为两个标记为“ice”和“cubes”。现在,如果我搜索“icecubes”,则没有找到任何结果,因为“icecubes”既不匹配令牌“ice”或“cube”。

反之亦然也是如此。所以我该如何应对这种情况呢。有没有solr的功能来管理它?

1 个答案:

答案 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"