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,&#8203; please use 'df' on request instead.
[default] query parser default operator is AND. WARNING: Deprecated,&#8203; 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>