当前位置: 首页 > 知识库问答 >
问题:

使用Solr和Haystack进行拼写检查,不显示任何结果

胡墨竹
2023-03-14

我们的Solr构建功能是

     http://192.168.1.106:8983/solr/spell?q=query&spellcheck=true&spellcheck.build=true 

是否根据基于索引的词典成功返回拼写建议

然而,django haystack变量{suggestion}}甚至python命令SearchQuerySet()。拼写建议(“查询”)返回“无”。

我们使用的标准视图和url提供的干草堆。

安装应用程序包括Python 2.7.2、Django 1.3.2、Haystack 2.0、Apache Solr 3.6.1(在标准Jetty上运行)、PySolr 2.1。

下面是我们正在使用的一些代码:

在settings.py

    HAYSTACK_CONNECTIONS = {
        'default': {
           'ENGINE': 'haystack.backends.solr_backend.SolrEngine',
           'URL': 'http://192.168.1.106:8983/solr',
           'INCLUDE_SPELLING': True,
        },
    }

在/PATH/TO/SOLR/example/SOLR/conf/solrconfig.xml中:

    <searchComponent name="spellcheck" class="solr.SpellCheckComponent">
      <str name="queryAnalyzerFieldType">textSpell</str>
        <lst name="spellchecker">
          <str name="name">default</str>
          <str name="field">text</str>
          <str name="spellcheckIndexDir">spellchecker</str>
        </lst>
      </searchComponent>

      <requestHandler name="/spell" class="solr.SearchHandler" startup="lazy">
        <lst name="defaults">
          <str name="df">text</str>
          <str name="spellcheck.onlyMorePopular">false</str>
          <str name="spellcheck.extendedResults">false</str>
          <str name="spellcheck.count">10</str>
        </lst>
        <arr name="last-components">
          <str>spellcheck</str>
        </arr>
      </requestHandler>

所以问题是:代码中的问题在哪里导致安装的应用程序“haystack”无法与Solr找到的拼写建议的结果通信?或者换句话说,为什么haystack没有显示拼写建议,而Solr提供了一些?

共有2个答案

谢财
2023-03-14

我一直在努力解决这个错误,直到我添加到请求处理程序“/select”组件拼写检查器,拼写建议才显示出任何内容。因此,默认连接如上所述,“/select”处理程序如下所示:

<requestHandler name="/select" class="solr.SearchHandler">
 <lst name="defaults">
   <str name="echoParams">explicit</str>
   <int name="rows">10</int>
   <str name="df">text</str>
 </lst>

 <arr name="last-components">
    <str>spellcheck</str>
 </arr>

另外,我还在search_index.py中添加RestaurantIndex的属性,例如:

#Suggestions - so obvious
suggestions = indexes.CharField()

def prepare(self, obj):
    prepared_data = super(RestaurantIndex, self).prepare(obj)
    prepared_data['suggestions'] = prepared_data['text']
    return prepared_data

在这种情况下,“文本”将是您自己的字段,将是建议。在此之后,在python shell中,您可以执行此操作,结果将出现:

sqs = SearchQuerySet().auto_query('Restauront')

spelling = sqs.spelling_suggestion()

我对这家餐馆的建议是。

干杯!

附言:如果你需要额外的配置,就说出来。

冯茂实
2023-03-14

Django设置文件中的连接中是否将INCLUDE_拼写设置定义为True?http://django-haystack.readthedocs.org/en/latest/searchqueryset_api.html#spelling-暗示

有一件事可能会有所帮助,那就是看看干草堆到底在向索尔发送什么。您可以将print语句添加到搜索函数中的干草堆后端/solr_backend.py中的SolrBackend类中,这样您就可以看到正在使用的网址。这至少会告诉你干草堆是否按照命令执行搜索建议。

您可能还想直接从Github回购中检查干草堆更新。那里的发展相当活跃。

 类似资料:
  • http://localhost:8983/solr/prashant1/spell?q=blakc&spellcheck=on&wt=json 结果 但我需要与select查询相同的结果,它不能从SOLR管理中工作。 有没有设置和步骤要做?

  • 我正在用Vim编辑一个文档。有些部分用英语,有些用荷兰语。比如说,我有以下几点 lorem ipsum的一种常见形式是: Lorem ipsum dolor坐在那里,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭,圣职献祭在有限

  • 概述 Sublime Text 使用Hunspell来进行拼写检查,可以从OpenOffice.org Extension List获取额外的字典。 Sublime Text 可用字典:https://github.com/SublimeText/Dictionaries 字典 Sublime Text 目前只支持 UTF-8 编码格式的字典,大多数字典并没有使用 UTF-8 字典,而是使用了和其

  • 自 Electron 8 以来已内置支持 Chromium 拼写检查器。 On Windows and Linux this is powered by Hunspell dictionaries, and on macOS it makes use of the native spellchecker APIs. How to enable the spellchecker? 对于 Electr

  • 使用“检查拼写”命令检查当前 Dreamweaver 网页中的拼写。 使用“拼写检查”检查当前文档中的拼写。 文档必须为网页(例如,HTML、ColdFusion 或 PHP 页)。 拼写检查对文本文件或 XML 文件无效。 此外,拼写检查还会忽略 HTML 标签和属性值。 注意:Dreamweaver 只能对“文档”窗口中当前打开的文件进行拼写检查。它不能同时对站点内的所有文件进行拼写检查。 默

  • 所以我安装了pip-install-django-haystack或者我的项目virtualenv文件夹中的任何命令,我也安装了solr,但是现在我对该怎么做有些困惑。 我一直收到一个错误,说solr后端需要安装pysolr?我不知道我在哪里运行这个命令?“/manage.py build\u solr\u schema” 我一直试图参考《草垛指南》,但它有点模糊。请帮帮我!!谢谢