我已经实现了一个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>
是否有一种方法可以使建议程序返回中间名不存在的值?
一种搜索方式是在搜索字符串中包含逗号,例如。汤姆·福特。可以,但是我正在尝试使其不带逗号。