SOLR建议程序返回值

时间:2019-06-25 00:55:09

标签: solr autosuggest

我已经实现了一个SOLR建议程序来搜索名称(名字,中间名,姓氏)。名称的数据是从数据库中获取的,并存储在SOLR的 name 字段中。

例如的数据将是:名称:TOM,JASON,SMITH 如果没有中间名,则数据为:名称:TOM ,, FORD

如果我搜索TOM FORD,建议者不会返回值。如果我搜索TOM JASON,效果很好。

<searchComponent name="suggest" class="solr.SuggestComponent">
        <lst name="suggester">
            <str name="name">mySuggester</str>
            <str name="lookupImpl">FuzzyLookupFactory</str>
            <str name="exactMatchFirst">true</str>
            <str name="dictionaryImpl">DocumentDictionaryFactory</str>
            <str name="field">name</str>
            <str name="weightField">name</str>
            <str name="suggestAnalyzerFieldType">string</str>
            <str name="buildOnStartup">false</str>
            <str name="buildOnOptimize">true</str>
            <str name="storeDir">fuzzy_suggestions</str>            
        </lst>
    </searchComponent>

该字段在schema.xml中配置如下

<field name="name" type="text_exact_fuzzy" indexed="true" stored="true"/>

<fieldType name="text_exact_fuzzy" class="solr.TextField" omitNorms="false">
        <analyzer type="index">
            <tokenizer class="solr.ClassicTokenizerFactory"/>
            <filter class="solr.DoubleMetaphoneFilterFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>           
        </analyzer>
        <analyzer type="query">
            <tokenizer class="solr.ClassicTokenizerFactory"/>
            <filter class="solr.DoubleMetaphoneFilterFactory"/>
            <filter class="solr.LowerCaseFilterFactory"/>           
        </analyzer>
    </fieldType>

是否有一种方法可以使建议程序返回中间名不存在的值?

一种搜索方式是在搜索字符串中包含逗号,例如。汤姆·福特。可以,但是我正在尝试使其不带逗号。

0 个答案:

没有答案