从 Solr Suggester 返回单个单词
Returning single word from Solr Suggester
我正在开发 Web 应用程序,并使用 Solr 作为搜索引擎。我想添加自动完成功能。为此,我添加了 Suggester 组件,并为其配置了一个单独的字段。这工作正常。
问题是 Suggester return 是字段的全部值。例如,如果一篇文章的名称是 "A newsworthy item" 并且我搜索 "new",它将 return 整个 "A newsworthy item",我希望它只是 [=28] =] "newsworthy"。换句话说,return 个单词标记。
架构如下所示:
<fieldType name="text_autocomplete" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="term" type="text_autocomplete" indexed="true" stored="true" multiValued="false" />
<field name="weight" type="float" indexed="true" stored="true" />
<copyField source="name" dest="term"/>
值被复制到 "term" 字段中。 Solr 配置:
<!-- Search component -->
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">suggester</str>
<str name="lookupImpl">AnalyzingLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">term</str>
<str name="weightField">weight</str>
<str name="suggestAnalyzerFieldType">text_autocomplete</str>
<str name="buildOnStartup">false</str>
</lst>
</searchComponent>
<!-- Search handler -->
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
<str name="suggest.dictionary">suggester</str>
<str name="suggest.build">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
任何人都可以提出一个架构 and/or 配置,使建议者 return 成为一个词吗?
尝试使用 solr.SpellCheckComponent 而不是 solr.SuggestComponent。
As SuggestComponent 旨在建议完整的短语。
您可以在此处查看 solr.SpellCheckComponent 的详细信息。
http://wiki.apache.org/solr/SpellCheckComponent
为了快速参考,你可以试试这个。
<searchComponent name="suggest" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.fst.FSTLookupFactory</str>
<str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
<str name="field">term</str>
<str name="accuracy">0.7</str>
<float name="thresholdTokenFrequency">.0001</float>
</lst>
</searchComponent>
我正在开发 Web 应用程序,并使用 Solr 作为搜索引擎。我想添加自动完成功能。为此,我添加了 Suggester 组件,并为其配置了一个单独的字段。这工作正常。
问题是 Suggester return 是字段的全部值。例如,如果一篇文章的名称是 "A newsworthy item" 并且我搜索 "new",它将 return 整个 "A newsworthy item",我希望它只是 [=28] =] "newsworthy"。换句话说,return 个单词标记。
架构如下所示:
<fieldType name="text_autocomplete" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<field name="term" type="text_autocomplete" indexed="true" stored="true" multiValued="false" />
<field name="weight" type="float" indexed="true" stored="true" />
<copyField source="name" dest="term"/>
值被复制到 "term" 字段中。 Solr 配置:
<!-- Search component -->
<searchComponent name="suggest" class="solr.SuggestComponent">
<lst name="suggester">
<str name="name">suggester</str>
<str name="lookupImpl">AnalyzingLookupFactory</str>
<str name="dictionaryImpl">DocumentDictionaryFactory</str>
<str name="field">term</str>
<str name="weightField">weight</str>
<str name="suggestAnalyzerFieldType">text_autocomplete</str>
<str name="buildOnStartup">false</str>
</lst>
</searchComponent>
<!-- Search handler -->
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
<str name="suggest">true</str>
<str name="suggest.count">10</str>
<str name="suggest.dictionary">suggester</str>
<str name="suggest.build">true</str>
</lst>
<arr name="components">
<str>suggest</str>
</arr>
</requestHandler>
任何人都可以提出一个架构 and/or 配置,使建议者 return 成为一个词吗?
尝试使用 solr.SpellCheckComponent 而不是 solr.SuggestComponent。 As SuggestComponent 旨在建议完整的短语。 您可以在此处查看 solr.SpellCheckComponent 的详细信息。
http://wiki.apache.org/solr/SpellCheckComponent
为了快速参考,你可以试试这个。
<searchComponent name="suggest" class="solr.SpellCheckComponent">
<lst name="spellchecker">
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.fst.FSTLookupFactory</str>
<str name="distanceMeasure">org.apache.lucene.search.spell.JaroWinklerDistance</str>
<str name="field">term</str>
<str name="accuracy">0.7</str>
<float name="thresholdTokenFrequency">.0001</float>
</lst>
</searchComponent>