Solr词缀,带或不带空格的词

时间:2016-04-14 10:19:02

标签: solr filter

匈牙利语比英语有点棘手。这些词可以很奇怪地改变,这意味着如果我们想给用户一个很好的体验,我们需要微调搜索。

我已经做了很长一段时间的研究,我遇到了一些可能的解决方案,但我不确定它们是否适合我们的需求。这就是为什么我想请求一些在使用solr方面经验丰富的人的帮助。

予。用或不用空格写的字

如果使用或不使用空格键入单词,如何获得相同的结果?

说我正在寻找一个玻璃花瓶(匈牙利语中的“üvegváza”)。在匈牙利语中,将这些单词组合在一起是很常见的。如何才能获得相同的结果结果如果有人输入没有空格的单词:“üvegváza”? 反之亦然,如何在搜索词“üvegváza”中获得带有“üvegváza”字样的项目?

II。处理词缀,变形

在匈牙利语言中,变形可以改变这个词本身。例如,如果您正在寻找“花卉装饰花瓶”,您可以说:

  • virágosváza”=带花的花瓶(最接近的英文)

  • vázavirággal”=带花的花瓶

  • vázavirágokkal”=带花的花瓶

处理变形的最佳方法是什么?例如,如果我输入“virág”,如何为“virágos”,“virággal”提供结果呢? 反之亦然:输入关键字“virágos”并获取带有“virág”字样的项目?

您对我们如何使这些工作有任何建议/想法吗?

2 个答案:

答案 0 :(得分:0)

这可以实现,并且可以使用NGramTokenizerFactory将单词分解为较小的标记。

一样使用它
<analyzer>
  <tokenizer class="solr.NGramTokenizerFactory" minGramSize="4" maxGramSize="15"/>
</analyzer>

此处如果输入为"bicycle"

然后创建的令牌是Out:

"bicy", "bicyc", "icyc", "icycl", "cycl", "cycle", "ycle"

您可以针对您的字段尝试此NGramTokenizerFactory,并在solr分析工具中进行检查。如果它与您的查询文本匹配。

您还可以查看读取字段文本的EdgeNGramTokenizerFactory,并生成给定范围内大小的边缘n-gram标记。

这可以像

一样使用
<analyzer>
  <tokenizer class="solr.EdgeNGramTokenizerFactory" minGramSize="2" maxGramSize="5"/>
</analyzer>

它有另一个属性side :( "front""back",默认为"front")是否从头(front)开始计算n-gram文本或最后(back)

输入文字:"babaloo" 输出文字:"ba", "bab", "baba", "babal"

答案 1 :(得分:0)

索尔拥有一定程度的匈牙利支持。在the solr-start analyzer page上搜索匈牙利语,向我展示了一个完整的分析器,以及过滤器。在Snowball过滤器中还有匈牙利人的支持。您可以在the TYPO 3 Solr plugin configuration中看到示例配置。

要处理多令牌与单令牌写单词的方式,您可能需要查看ShingleFilter并将令牌分隔符设置为“”(空字符串)。如果文本和搜索都可以连接或分离,则可能需要进行一些实验。您可能需要在类型上启用autoGeneratePhraseQueries以获取分隔的单词版本,以使其成为查询时间ShingleFilter(我认为)。