【问题标题】:Autocomplete term suggestion as per popularity根据受欢迎程度自动完成术语建议
【发布时间】:2016-05-02 10:36:56
【问题描述】:

我已经在我的 MVC 应用程序中实现了自动完成术语建议。让我解释一下我是如何做到这一点的。我在 DB 中创建了一个表,表列如下:

Id  SearchTerm  CatID ResultCount Clicks Latency TermSearchTime

现在,每当用户搜索一个词时,我们都会将其存储在此表中。下次匹配相同的单词时,我们会显示术语建议。而且,作为用语人气表示用语建议。在建议中首先显示哪个单词被搜索得更多。

但现在我也想为拼写错误的术语提供术语建议。例如 Samsung 已经在我的桌子上。如果有人在这种情况下搜索 samsng,那么三星应该会提供术语建议。

由于我不知道如何在 SQL Server 中进行拼写检查,所以我决定使用 Solr 进行检查。

如何使用 Solr 和我在 SQL Db 中完成的默认行为来做到这一点?此外,请注意我从 Solr 获取的搜索结果。我已经索引了所有产品。我还需要索引搜索词吗?

任何帮助都是赞赏。谢谢。

【问题讨论】:

  • 拼写检查处理程序将在 solr 中。检查您的 solrconfig.xml 文件。使用像 /spell?q=ipad 这样的 /spell 处理程序进行查询,您会得到 ipod 单词作为建议,因为没有单词 ipad 索引的术语
  • 是的,我知道有拼写检查器。但我的问题是我将搜索词存储在数据库中并根据受欢迎程度提供建议。
  • 如果 searchterm 的结果为零,那么您可以考虑再添加两个名称拼写正确的列(值:true、false) termsuggestion(值:可能拼写错误的术语的正确拼写)
  • 但是如果我想用 Solr 来做呢?我们不能将这些数据存储在 Solr 中并使用 Solr 拼写检查行为吗?
  • 是的,你可以。您只需在 solr 中使用拼写检查处理程序 /spell 。如果他们的搜索词是正确的,你会得到文件。如果它错了,你会得到术语建议数组

标签: solr autocomplete solr4 solrnet


【解决方案1】:

在您的 solrconfig.xml 文件中选中此项以使用拼写检查处理程序。

 <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
<lst name="defaults">
  <str name="df">text</str>
  <!-- Solr will use suggestions from both the 'default' spellchecker
       and from the 'wordbreak' spellchecker and combine them.
       collations (re-written queries) can include a combination of
       corrections from both spellcheckers -->
  <str name="spellcheck.dictionary">default</str>
  <str name="spellcheck.dictionary">wordbreak</str>
  <str name="spellcheck">on</str>
  <str name="spellcheck.extendedResults">true</str>       
  <str name="spellcheck.count">10</str>
  <str name="spellcheck.alternativeTermCount">5</str>
  <str name="spellcheck.maxResultsForSuggest">5</str>       
  <str name="spellcheck.collate">true</str>
  <str name="spellcheck.collateExtendedResults">true</str>  
  <str name="spellcheck.maxCollationTries">10</str>
  <str name="spellcheck.maxCollations">5</str>         
</lst>
<arr name="last-components">
  <str>spellcheck</str>
</arr></requestHandler>

如果不存在,则复制粘贴到您的文件中。重启solr。试试/spell?q=ipad

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-10
    • 2014-06-25
    相关资源
    最近更新 更多