使用solr在django-oscar中搜索建议

时间:2017-08-16 16:40:58

标签: solr search-suggestion django-oscar

我已经设置了一个django-oscar项目,并根据documentation启用了solr 4.7.2。

Solr似乎工作正常。测试'exxample'的建议(localhost:8983 / solr / collection1 / spell?spellcheck.q = exxample& spellcheck = true>)我得到:

<response>
  <lst name="responseHeader">
     <int name="status">0</int>
     <int name="QTime">10</int>
  </lst>
  <result name="response" numFound="0" start="0"/>
     <lst name="spellcheck">
        <lst name="suggestions">
          <lst name="exxampl">
              <int name="numFound">1</int>
              <int name="startOffset">0</int>
              <int name="endOffset">8</int>
              <int name="origFreq">0</int>
              <arr name="suggestion">
                 <lst>
                    <str name="word">exampl</str>
                    <int name="freq">2</int>
                 </lst>
              </arr>
           </lst>
           <bool name="correctlySpelled">false</bool>
           <lst name="collation">
               <str name="collationQuery">exampl</str>
               <int name="hits">2</int>
               <lst name="misspellingsAndCorrections">
                   <str name="exxampl">exampl</str>
               </lst>
            </lst>
         </lst>
     </lst>
</response>

我还启用OSCAR_SEARCH_FACETS以确保Solang已被Django-Oscar正确注册,并且似乎工作正常。

然而,当我在django-oscar中搜索一个简单的拼写错误时,我得到0返回的搜索结果,没有任何建议。我不知道下一步该做什么。

非常感谢帮助!

1 个答案:

答案 0 :(得分:2)

我设法解决了这个问题。我将编写完整的解决方案来设置Solr,并在Django-Oscar上提供拼写建议,因为设置程序需要根据官方文档中的描述进行调整。这也是我第一次与Solr(或任何搜索引擎)合作,所以不要期待一些专家指导,只是指导如何让Solr在Oscar上运行。

我正在使用Oscar 1.5和Solr 4.7.2(解决方案也适用于4.10.4 ......不确定其他版本)。按照documentations执行所有操作 - 请注意,Oscar版本的说明略有不同。 1.5。

安装并运行Solr后,您可以在Solr服务器上测试一个查询@ localhost:8983 / solr / collection1 / spell?spellcheck.q = [您的搜索查询到此处;没有括号] &amp; spellcheck = true&gt;。需要成为数据库中的一个词 - 无论是产品描述还是产品标题。

您将收到错误结果,指出Analyzer必须属于同一类型。通过编辑位于./solr-4.7.2/example/solr/collection1/conf/solrconfig.xml的solrconfig.xml文件来解决此问题。搜索<str name="field">,并将每个未评论的实例更改为<str name="field">text</str> - 您还可以将每个实例更改为<str name="field">title</str>,但这仅限于在标题中找到的字词。重新启动Solr服务器。这些更改将消除分析器错误,您的Solr服务器现在将开始显示结果,但是他们还没有被送入您的奥斯卡网站。

要解决此问题,您需要对同一个solrconfig.xml文件进行另一次调整。搜索<requestHandler name="/select" class="solr.SearchHandler">,并在此请求处理程序的底部包含以下代码:

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

重启服务器。现在您在奥斯卡网站上有拼写建议。希望其他人发现这有用。就像我说的 - 这是我第一次使用Solr。如果有人要添加任何东西,或者在Oscar上扩展Solr功能,那就太棒了。