问题:
我在 solr 中有一个电影信息。两个字符串字段定义电影标题和导演姓名。复制字段定义 solr 默认搜索的另一个字段。
我想要像谷歌一样的搜索,范围有限,如下所示。如何实现它。
1)如何在solr中搜索包含
例如。
a) 如果电影导演的名字是“John Cream”,搜索工作不会返回任何内容。但是,搜索 John 将返回正确的结果。
b) 如果有一个电影名为aaabbb另一个叫aaa,搜索 aaa 仅返回一个结果。我需要返回这两个结果。
2)如何解决拼写错误
例如。
如果电影导演的名字是“John Cream”,则搜索 Jon 将不会返回任何结果。是否有一个很好的听起来像(soundex)的 solr 实现?如果是的话如何启用它?
您可以使用 solr 查询语法
显然可以使用通配符搜索包含(例如:title:*aaa*
将匹配“aaabbb”和“cccaaabbb”),但要小心,因为它不能有效地使用索引。你真的需要这个吗?
可以应用类似 soundex 的搜索solr.PhoneticFilterFactory
过滤您的索引和查询。为了实现这一点,请在模式中像这样定义您的 fieldType:
<fieldType name="text_soundex" class="solr.TextField">
...
<filter class="solr.PhoneticFilterFactory" encoder="Soundex" inject="true"/>
</fieldType>
如果您将“导演”字段定义为“text_soundex”,您将能够搜索“Jon”并找到“John”
See http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)