1

我知道 SOLR 可以进行自由文本搜索,但是在 SOLR 文本字段中对常用术语进行分面的最佳做法是什么?

例如,我们有一大堆文本(对房产的描述),其中包含有用的文本,例如“私人车库”、“私人花园”、“私人停车场”、“地下停车场”、“硬木地板”、 “两层楼”,……还有几十个这样的。

我想创建一个视图,让用户查看每个术语的属性数量,并允许用户深入了解相关属性。

一个明显的解决方案是预处理数据,解析文本,并使用布尔值是/否为这些关键短语中的每一个创建构面。

理想情况下,我希望将其自动化,所以我想 SOLR 自由文本搜索引擎可能允许这样做?例如,我可以使用自由文本搜索引擎来删除停用词并收集常用短语的数量,然后我们可以将其呈现给用户吗?

如果预处理是唯一的方法,是否有对此或任何执行此功能的开源库的通用/最佳实践方法?

从 SOLR 中的文本字段计算和分组常用短语的最佳实践是什么?

4

1 回答 1

2

问题是使用一些自定义分析链对文本字段(非字符串字段)进行分面是相当昂贵的。您可以尝试使用 shingles,即将您的输入分解为一组重叠的二元组。如果您要使用 solr4,请确保在文本字段定义中设置 docValues=true。这可能会加快或至少节省您的 RAM。

可以使用 ShingleFilterFactory 实现双语法:http ://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.ShingleFilterFactory

请注意,它仍然是计算密集型的。

如果您的数据集不是太大(取决于单独的定义)或者您可以适当地对数据进行分片,这可能会起作用。

于 2013-09-23T10:26:26.370 回答