2017-07-10 51 views
0

比如我實現模糊搜索,我有跟名字,中間名和姓的名稱。我需要搜索名字的不同組合,如{名,中間名,姓氏},{中間名,名,姓}等等(6種組合)。同時,名字也必須用語音搜索。就像名字「John」一樣,它必須選擇「Jonn」。亦作「穆罕默德」,必須會一炮打響「穆罕默德」或「Mouhammed」這個拼音搜索是適用於所有名的三個部分。如何使用Solr的

回答

0

使用的字段類型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

該濾波器產生使用從公共的編解碼器的編碼DoubleMetaphone算法令牌。有關更多信息,請參見Phonetic Matching部分。

+0

db包含各種名字,比如「Bell Aleksander Greham」,「Graham Alexander Bell」等。如果我給一個名字「Alexander Graham Bell」作爲查詢,然後它會返回所有這些名字嗎? –

+0

是的。它會返回所有這些名稱忽略順序 –

+0

我已經將上面的代碼添加到schema.xml。但是,當我搜索包含名和中間名之間的空格的字符串時,它顯示錯誤。 –