Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用solr实现模糊搜索_Solr_Fuzzy - Fatal编程技术网

如何使用solr实现模糊搜索

如何使用solr实现模糊搜索,solr,fuzzy,Solr,Fuzzy,例如,我有一个名字,包括名字、中间名和姓氏。我需要搜索不同的名字组合,比如{first name,middle name,last name},{middle name,first name,last name}等等(6个组合)。同时,名字也必须用拼音搜索。就像名字“约翰”一样,它必须选择“乔恩”。同样,对于“Mohammed”,它必须点击“Mohammad”或“Mohammed”。此语音搜索适用于名称的所有三个部分。使用fieldType语音作为名称。 默认模式中包含的字段类型拼音\u en,

例如,我有一个名字,包括名字、中间名和姓氏。我需要搜索不同的名字组合,比如{first name,middle name,last name},{middle name,first name,last name}等等(6个组合)。同时,名字也必须用拼音搜索。就像名字“约翰”一样,它必须选择“乔恩”。同样,对于“Mohammed”,它必须点击“Mohammad”或“Mohammed”。此语音搜索适用于名称的所有三个部分。

使用fieldType
语音作为名称。

默认模式中包含的字段类型
拼音\u en
,如果没有,请使用以下模式:

<fieldType name="phonetic_en" stored="false" indexed="true" class="solr.TextField" >
  <analyzer>
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.DoubleMetaphoneFilterFactory" inject="false"/>
  </analyzer>
</fieldType>

:

此筛选器使用commons codec中的DoubleMetaphone编码算法创建令牌。有关更多信息,请参阅一节


db包含各种名称,如“Bell Aleksander Greham”、“Graham Alexander Bell”等。如果我给出一个名称“Alexander Graham Bell”作为查询,然后它会返回所有这些名称吗?是的。它将返回我已将上述代码添加到schema.xml中的所有名称。但是当我搜索一个在名字和中间名之间包含空格的字符串时,它显示了错误。{“responseHeader”:{“status”:400,“QTime”:0,“params”:{“q”:“name:MOHAMMED MUTLAQ ABU JHESHEH”,“indent”:“true”,“wt”:“json”,“"”:“1499665071823”},“error”:{“msg”:“未定义的字段文本”、“代码”:400}}架构更改后是否重新加载核心/集合并重新索引?
<field name="cfname" type="phonetic_en" indexed="true" stored="false"/>