我如何使用solr实现模糊搜索

How can I implement fuzzy search using solr

例如,我有一个包含名字、中间名和姓氏的名字。我需要搜索不同的名称组合,例如 {first name, middle name, last name},{middle name, first name, last name} 等等(6 种组合)。同时,名字也必须用拼音来搜索。就像名字 "John" 一样,它必须选择 "Jonn"。同样对于 "Mohammed" 它必须命中 "Mohammad" 或 "Mouhammed" 此拼音搜索适用于名称的所有三个部分。

名称使用字段类型phonetic_en

字段类型 phonetic_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>

示例:

<field name="cfname" type="phonetic_en" indexed="true" stored="false"/>

DoubleMetaphoneFilterFactory :

This filter creates tokens using the DoubleMetaphone encoding algorithm from commons-codec. For more information, see the Phonetic Matching section.