考虑以下架构,
<schema>
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" multiValued="false"/>
<fieldType name="stop_analyzer_string" class="solr.TextField" multiValued="false">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="50" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
</analyzer>
</fieldType>
</types>
<fields>
<field name="name_search" type="stop_analyzer_string" indexed="true" stored="false"/>
<copyField source="name" dest="name_search"/>
<field name="name" type="string" indexed="true" stored="true"/>
</fields>
</schema>
name字段使用WhitespaceTokenizerFactory索引,但在使用name字段查询时似乎没有使用WhitespaceTokenizerFactory。
对于名称为“solr search”的文档,
查询name_search:solr
- 匹配文档。 //索引时间WhiteSpace tokenizer的工作原理
查询name_search:search
- 匹配文档。 //索引时间WhiteSpace tokenizer的工作原理
但查询name_search:solr search
- 与文档不匹配。 //查询时间WhiteSpace tokenizer不起作用
但是如模式中所指定的那样,查询也应该用空格标记化并与文档匹配。没有?
答案 0 :(得分:0)
不确定您缺少什么,但上述所有查询都适用于我提到的数据。
http://localhost:8983/solr/collection1/select?q=name_search%3Asolr+search&wt=xml&indent=true
我索引的上述返回结果文档。
试试这个:
http://localhost:8983/solr/#/collection1/documents
得到: 然后将文档粘贴到文档部分,然后点击提交文档
{"id":"100001","name_search":"solr search"}
运行查询为:
http://localhost:8983/solr/collection1/select?q=name_search%3Asolr+search&wt=json&indent=true