【发布时间】:2013-12-20 10:42:03
【问题描述】:
考虑以下架构,
<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 标记器工作
查询name_search:search - 匹配文档。 //索引时间 WhiteSpace 标记器工作
但是查询 name_search:solr search - 不匹配文档。 //查询时间 WhiteSpace 分词器不起作用
但正如架构中指定的那样,查询也应该用空格标记并与文档匹配。没有?
【问题讨论】:
标签: search solr lucene search-engine tokenize