Django 将Solr 4.10升级到6.3后,搜索停止工作
我接到了一个升级Django 将Solr 4.10升级到6.3后,搜索停止工作,django,solr,django-haystack,django-oscar,Django,Solr,Django Haystack,Django Oscar,我接到了一个升级Solr的任务,Howewer以前从未使用过Solr。 目前我有下一个堆栈:Django 1.9.12+Oscar 1.3+Solr 6.3.0+Haystack 2.5.1 我通过Haystack生成了一个模式,将其放入托管模式文件中,并根据StackOverflow的回答进行了一些修改,因为Solr不想启动。 现在我有了Solr,它已经启动了,但无法通过站点的搜索字段找到任何内容(使用Solr4.10的hovewer,搜索按预期进行,没有任何问题) 在以下部分的solrcon
Solr
的任务,Howewer以前从未使用过Solr
。
目前我有下一个堆栈:Django 1.9.12+Oscar 1.3+Solr 6.3.0+Haystack 2.5.1
我通过Haystack
生成了一个模式,将其放入托管模式
文件中,并根据StackOverflow的回答进行了一些修改,因为Solr
不想启动。
现在我有了Solr,它已经启动了,但无法通过站点的搜索字段找到任何内容(使用Solr4.10的hovewer,搜索按预期进行,没有任何问题)
在以下部分的solrconfig.xml
中:
<requestHandler name="/select" class="solr.SearchHandler">
<!-- default values for query parameters can be specified, these
will be overridden by parameters in the request
-->
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">10</int>
</lst>
如何修复\规范化搜索
更新1: 仪表板日志页面上的警告
[default] default search field in schema is text. WARNING: Deprecated,​ please use 'df' on request instead.
[default] query parser default operator is AND. WARNING: Deprecated,​ please use 'q.op' on request instead.
可以通过拆卸来固定
<defaultSearchField>text</defaultSearchField>
<solrQueryParser defaultOperator="AND"/>
当您在solr请求中使用q.op时。“q.op”请求参数优先于此参数
<solrQueryParser defaultOperator="OR"/>
如果要查找英特尔奔腾G3260或奔腾G3260或英特尔G3260或G3260-无结果
这与字段的分析和标记方式有关。请参阅文档
使用ClassicTokenizerFactory的标记化行为如下:
输入:“请给约翰发电子邮件。doe@foo.com09年3月,回复:m37 xq。“
输出:“请”、“电子邮件”、“约翰”。doe@foo.com“,”by“,”03-09“,”re“,”m37 xq”
使用solr.EdgeNGramTokenizerFactory进行标记化的行为如下:
输入:“babaloo”
输出:“巴”,“巴巴”,“巴巴”,“巴巴”
在schema.xml中,您可以定义一个新的字段类型,或更新现有字段类型,如下所示:
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
</analyzer>
</fieldType>
玩一玩,看看哪一个适合你的场景。您可能还想看看您给出的查询是如何规范化的。但这是一个很好的起点。我理解这一点,但如何修复\删除此页面上的警告:?
<solrQueryParser defaultOperator="OR"/>
http://localhost:8983/solr/collection1/select?indent=on&q.op=AND&q=for ipod&wt=json
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
</analyzer>
</fieldType>