我已经设置了一个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返回的搜索结果,没有任何建议。我不知道下一步该做什么。
非常感谢帮助!
答案 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功能,那就太棒了。