基于多字段的Solr/Lucene拼写检查建议

基于多字段的Solr/Lucene拼写检查建议,lucene,solr,spell-checking,Lucene,Solr,Spell Checking,我有一个包含供应商信息的数据库:名称和地址(地址、城市、邮政编码和国家/地区字段)。我需要搜索这个数据库并返回一些供应商。在搜索框中,用户可以键入任何内容:供应商名称、部分地址、城市、邮政编码,。。。而且,如果我找不到任何结果,我需要实现一个类似谷歌的“你的意思是什么”功能,向用户提供建议 我考虑过使用Solr/Lucene来做这件事。我已经安装了Solr,使用CSV文件导出了我需要的信息,并基于该文件创建了索引。现在我可以使用Solr.SpellCheckComponent从Solr字段中获得

我有一个包含供应商信息的数据库:名称和地址(地址、城市、邮政编码和国家/地区字段)。我需要搜索这个数据库并返回一些供应商。在搜索框中,用户可以键入任何内容:供应商名称、部分地址、城市、邮政编码,。。。而且,如果我找不到任何结果,我需要实现一个类似谷歌的“你的意思是什么”功能,向用户提供建议

我考虑过使用Solr/Lucene来做这件事。我已经安装了Solr,使用CSV文件导出了我需要的信息,并基于该文件创建了索引。现在我可以使用Solr.SpellCheckComponent从Solr字段中获得建议。问题是我的建议基于单个字段,需要它从地址、城市、邮政编码、国家和名称字段获取信息

在solr配置文件中,我有如下内容:

<searchComponent name="spellcheck" class="solr.SpellCheckComponent">
<str name="queryAnalyzerFieldType">textSpell</str>

<lst name="spellchecker">
    <str name="name">default</str>
    <str name="field">name</str>
    <str name="spellcheckIndexDir">spellchecker</str>
</lst>
</searchComponent>

<requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
    <lst name="defaults">
        <str name="spellcheck.onlyMorePopular">false</str>
        <str name="spellcheck.extendedResults">false</str>
        <str name="spellcheck.count>1</str>
    </lst>
    <arr name="last-components">
        <str>spellcheck</str>
    </arr>
</requestHandler>
有人知道如何更改我的配置文件以便从多个字段中获得建议吗


谢谢

您可以在schema.xml中使用copyfield。
将所有字段复制到contentSpell


然后将
name
更改为
contentSpell
en,您将从所有字段中获得建议。

要将Solr spellcheck配置为使用多个字段中的单词,您应该:

  • 声明一个新字段。新字段声明应使用属性type=“textSpell”和multiValued=“true”。例如:
  • 将所有字段(其中的单词应为拼写检查索引的一部分)复制到新字段中。例如:
    
    
  • 配置Solr以使用新字段。通过设置字段名来使用拼写检查字段名。例如:
    你的意思是
  • 欲了解更多详细信息,请访问

    http://localhost:8983/solr/spell?q=some_company_name&spellcheck=true&spellcheck.collate=true&spellcheck.build=true