【发布时间】:2017-07-11 08:58:51
【问题描述】:
我正在尝试对全名字段执行可能的搜索,并在 office-no、mobile-number、house-no、other-phone-number 字段上进行完全匹配。所有这些我已复制到文本字段“full-search -all”,以便我可以在网站中配置单个文本框,用户可以在其中搜索全名,如 Kat 应该返回 Katric,如果他们在同一文本字段中提供确切的手机号码为 123456789,则应该返回完全匹配的结果。当我执行搜索时,其中一个(在移动设备、办公室、门牌号码上完全匹配或可能在全名上匹配)在我的“全搜索”字段中工作。他们都没有在 solrAdmin 中的全搜索字段上工作.我是标准查询解析器。
我已经放置了我为搜索创建的 schema.xml 文件。
请您指出 Schema.xml 文件哪里出错了。两个搜索都不能在单个文本字段上搜索?
下面的完整 schema.xml 文件
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="dynamic" version="1.5">
<types>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="15" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<fieldType name="search" class="solr.TextField" positionIncrementGap="100" multiValued="true">
<analyzer type="index">
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<fieldType name="exactstring" class="solr.TextField" sortMissingLast="true" omitNorms="true">
<analyzer>
<tokenizer class="solr.KeywordTokenizerFactory" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer>
</fieldType>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" />
<fieldType name="long" class="solr.TrieLongField" />
</types>
<fields>
<!-- The _version_ field is required when using the Solr update log or SolrCloud (cfr. SOLR-3432) -->
<field name="_version_" type="long" indexed="true" stored="true" />
<field name="full-search-all" type="search" indexed="true" stored="false" multiValued="true" />
<field name="phone-number" type="exactstring" indexed="true" stored="false" multiValued="true" />
<!-- Exact Match columns -->
<copyField source="mobile-number" dest="phone-number" />
<copyField source="house-no" dest="phone-number" />
<copyField source="office-no" dest="phone-number" />
<copyField source="other-phone-number" dest="phone-number" />
<copyField source="mobile-number" dest="full-search-all" />
<copyField source="house-no" dest="full-search-all" />
<copyField source="office-no" dest="full-search-all" />
<copyField source="other-phone-number" dest="full-search-all" />
<copyField source="full-name" dest="full-search-all" />
<!-- query fields -->
<field name="application-id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="full-name" type="text_general" indexed="true" stored="true" required="false" multiValued="false" />
<field name="mobile-number" type="exactstring" indexed="true" stored="true" required="false" multiValued="false" />
<field name="house-no" type="exactstring" indexed="true" stored="true" required="false" multiValued="false" />
<field name="office-no" type="exactstring" indexed="true" stored="true" required="false" multiValued="false" />
<field name="other-phone-number" type="exactstring" indexed="true" stored="true" required="false" multiValued="false" />
<field name="campaign-name" type="string" indexed="true" stored="true" required="false" multiValued="false" />
<field name="reason" type="text_general" indexed="true" stored="true" required="false" multiValued="false" />
</fields>
<uniqueKey>application-id</uniqueKey>
</schema>
【问题讨论】:
标签: solr