[英]Solr Query only matches exact
如果我搜索"Movies 10"
找到的文件用的名称Movies 10
如果我搜索Movies 10
则不会返回任何文档。
以下是我的架构:
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="entertainment" version="1.0">
<types>
<!-- The StrField type is not analyzed, but indexed/stored verbatim. -->
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" omitNorms="true" positionIncrementGap="0"/>
<fieldType name="uuid" class="solr.UUIDField" indexed="true"/>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<!-- in this example, we will only use synonyms at query time
<filter class="solr.SynonymFilterFactory" synonyms="index_synonyms.txt" ignoreCase="true" expand="false"/>
-->
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
</types>
<fields>
<field name="uid" type="uuid" indexed="true" stored="true" default="NEW" />
<field name="type" type="string" indexed="true" stored="true" required="true" />
<field name="name" type="string" indexed="true" stored="true" required="true" />
<field name="description" type="string" indexed="true" stored="true" required="false" />
<dynamicField name="movie_*" type="string" indexed="true" stored="true" />
<dynamicField name="movie_review_*" type="string" indexed="true" stored="true" />
<dynamicField name="movie_trailer_*" type="string" indexed="true" stored="true" />
<dynamicField name="theater_*" type="string" indexed="true" stored="true" />
</fields>
<!-- Field to use to determine and enforce document uniqueness.
Unless this field is marked with required="false", it will be a required field
-->
<uniqueKey>uid</uniqueKey>
<!-- field for the QueryParser to use when an explicit fieldname is absent -->
<defaultSearchField>name</defaultSearchField>
<!-- SolrQueryParser configuration: defaultOperator="AND|OR" -->
<solrQueryParser defaultOperator="OR"/>
</schema>
要获得这种搜索行为,您将需要将name
的fieldType更改为使用text_general
以便对值进行标记。 通过将name
当前定义为字符串fieldType,将仅返回完全匹配项。
逐字搜索字符串,因为您最适合使用Tokeniser将text_general映射到solr.TextField。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.