首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在SOLR中实现“开始于”搜索?

如何在SOLR中实现“开始于”搜索?
EN

Stack Overflow用户
提问于 2010-01-25 18:24:49
回答 3查看 826关注 0票数 1

我有一个分类广告网站,用户可以搜索汽车。

当搜索一辆汽车时,它们的名字中有许多结尾,你们可能都知道。例如宝马330ci (结尾为“ci”),但也有宝马330i,或宝马330di等。

我如何才能让SOLR“理解”这一点,这样如果用户搜索330Solr将返回包含330ci/330i/330di等的结果。

此外,它不应该返回结果,如果用户专门输入宝马330ci,那么它应该只返回宝马330ci,而不是宝马330i/di等。

我是SOLR的新手,但我开始了解如何让它工作。不过,在这个问题上需要一点指导!

你会怎么做呢?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-01-25 18:48:21

您可能希望使用WordDelimiterFilterFactory分析字段,并将其设置为对数值转换进行拆分。这将允许330的查询匹配330任何东西。

我相信,默认情况下,当您在查询时执行此操作时,它将从330di ->“330di”创建一个短语查询,只有在索引中同时存在这两个部分时才会匹配。有关更多详细信息,请参阅http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters

票数 2
EN

Stack Overflow用户

发布于 2010-01-25 18:34:27

嗯,这取决于几个因素,但作为一般规则,在第一种情况下,您可以使用通配符,例如:

q=330*

在第二种情况下,您可以直接指向字段并执行精确搜索::330ci

票数 1
EN

Stack Overflow用户

发布于 2010-01-25 18:31:45

我不知道SOLR,它似乎是用于全文搜索的。

但是,因为您预先了解模型,所以可以使用常规SQL来完成此操作。

在name的数据库字段中,您可以将两个名称拆分为两列,如"rootName“和"suffixName”,而不是将基本名称与结尾混合在一起。

然后,您的SQL可以非常自然地、极其高效地(与全文搜索相比)找到所需的内容:搜索"rootName",并选择"suffixName“(但仅在指定的情况下)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2131576

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档