search - Solr 使用 contains 进行搜索,听起来像

标签 search solr soundex

问题: 我在 solr 中有一个电影信息。两个字符串字段定义电影标题和导演姓名。复制字段定义 solr 默认搜索的另一个字段。

我想要像谷歌一样的搜索,范围有限,如下所示。如何实现它。

1)如何在solr中搜索包含

例如 a) 如果电影导演的名字是“John Cream”,搜索 joh 将不会返回任何内容。但是,搜索 John 返回正确的结果。

b) 如果有一个名为 aaabbb 的电影标题和另一个名为 aaa 的电影标题,则搜索 aaa 仅返回一个结果。我需要返回这两个结果。

2) 如何解决拼写错误

例如 如果电影导演的名字是“John Cream”,则搜索 Jon 将不会返回任何结果。是否有一个很好的听起来像(soundex)的 solr 实现?如果是这样如何启用它?

您可以使用 solr 查询语法

最佳答案

显然可以使用通配符搜索 contains(例如:title:*aaa* 将匹配 'aaabbb' 以及 'cccaaabbb'),但要小心,因为它不使用有效地建立索引。你真的需要这个吗?

solr.PhoneticFilterFactory 过滤器应用于索引和查询,可以进行类似 soundex 的搜索。为了实现这一点,请在架构中像这样定义您的 fieldType:

<fieldType name="text_soundex" class="solr.TextField">
...
<filter class="solr.PhoneticFilterFactory" encoder="Soundex" inject="true"/>
</fieldType>

如果您将“导演”字段定义为“text_soundex”,您将能够搜索“Jon”并找到“John”

参见http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters了解更多信息。

关于search - Solr 使用 contains 进行搜索,听起来像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22552446/

相关文章:

sql-server - where 子句中的最佳搜索字符串

search - 3 年后,我的网站在站点地图中包含 1338 个网址,但在 Search Console 中仍然显示 1232 个页面 "Crawled - currently not indexed"。这是正常的吗?

java - 即时在 TreeSet 中搜索记录

java - 加载类 solr.ICUCollat​​ionKeyFilterFactory 时出错

elasticsearch - Lucene:按文档 ID 过滤查询

mysql - Soundex 与逗号分隔子查询的比较?

php - 有没有简单的方法可以将数据库表字段中的单词与 soundex 匹配?

php - 权衡搜索结果

c++ - 使用二进制搜索的模板递归

Solr 你的意思是(拼写检查组件)