Solr搜索使用包含,声音像

Sri*_*ake 4 search solr soundex

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

我希望谷歌像搜索范围有限,如下所示.如何实现它.

1)如何搜索solr for contains

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

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

2)如何解释拼写错误

例如,如果电影导演名称为"John Cream",则搜索Jon不会返回任何结果.是否有类似(soundex)实现solr的好声音.如果是这样如何启用它?

您可以使用solr查询语法

Zac*_*Zac 7

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

像搜索这样的soundex可以将solr.PhoneticFilterFactory过滤器应用于索引和查询.要实现这一点,请在模式中定义这样的fieldType:

<fieldType name="text_soundex" class="solr.TextField">
...
<filter class="solr.PhoneticFilterFactory" encoder="Soundex" inject="true"/>
</fieldType>
Run Code Online (Sandbox Code Playgroud)

如果您将"director"字段定义为"text_soundex",您将能够搜索"Jon"并找到"John"

有关更多信息,请参阅http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters.