在单个文本字段上结合精确匹配和可能匹配的Solr无效
我正在尝试对全名字段执行可能的搜索,并对办公室号、手机号、门牌号和其他电话号码字段执行精确匹配。所有这些我都已复制到文本字段“全部搜索”所以,我可以在网站中配置一个文本框,用户可以在其中搜索全名,比如Kat,应该返回Katric,如果他们在同一文本字段中给出准确的手机号码123456789,应该返回准确的匹配结果。当我执行搜索时,其中一个(手机号、办公室号、门牌号上的精确匹配或全名上的可能匹配)用于我的“全部搜索”字段。它们都不用于solrAdmin中的全部搜索字段。我是斯坦纳德查询解析器 我已经放置了为搜索创建的schema.xml文件 请指出Schema.xml文件中的错误位置。两个搜索都不能在单个文本字段上搜索 完成下面的schema.xml文件在单个文本字段上结合精确匹配和可能匹配的Solr无效,solr,Solr,我正在尝试对全名字段执行可能的搜索,并对办公室号、手机号、门牌号和其他电话号码字段执行精确匹配。所有这些我都已复制到文本字段“全部搜索”所以,我可以在网站中配置一个文本框,用户可以在其中搜索全名,比如Kat,应该返回Katric,如果他们在同一文本字段中给出准确的手机号码123456789,应该返回准确的匹配结果。当我执行搜索时,其中一个(手机号、办公室号、门牌号上的精确匹配或全名上的可能匹配)用于我的“全部搜索”字段。它们都不用于solrAdmin中的全部搜索字段。我是斯坦纳德查询解析器 我已
<?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>
应用程序id
字段名只能由字母数字或下划线字符组成,不能以数字开头
字段的名称。字段名只能由字母数字或下划线字符组成,不能以数字开头。这目前并没有严格执行,但其他字段名将不具有来自所有组件的一流支持,并且不保证后端兼容性。保留带前导下划线和尾随下划线的名称(例如版本)。每个字段都必须有一个名称
大多数字段名包含-
字符,请删除该字符。
资料来源:
一旦将字段复制到full\u search\u all
字段中,就不能将它们与该字段分开。所以,若你们想让名字成为前缀,电话成为精确搜索,你们不能用一个字段来实现
而是编写一个查询分析器,它将告诉您在哪个字段上执行搜索
例如:如果用户在文本框中写入123456789
(仅数字),则查询分析器应返回搜索字段isphone\u number
查询将是:
phone_number : 123456789
如果用户在文本框中写入ashraful
(非数字),则查询分析器应返回full\u name
查询将是:
full_name : ashraful
字段名只能由字母数字或下划线字符组成,不能以数字开头 字段的名称。字段名只能由字母数字或下划线字符组成,不能以数字开头。这目前并没有严格执行,但其他字段名将不具有来自所有组件的一流支持,并且不保证后端兼容性。保留带前导下划线和尾随下划线的名称(例如版本)。每个字段都必须有一个名称 大多数字段名包含
-
字符,请删除该字符。
资料来源:
一旦将字段复制到full\u search\u all
字段中,就不能将它们与该字段分开。所以,若你们想让名字成为前缀,电话成为精确搜索,你们不能用一个字段来实现
而是编写一个查询分析器,它将告诉您在哪个字段上执行搜索
例如:如果用户在文本框中写入123456789
(仅数字),则查询分析器应返回搜索字段isphone\u number
查询将是:
phone_number : 123456789
如果用户在文本框中写入ashraful
(非数字),则查询分析器应返回full\u name
查询将是:
full_name : ashraful
好的,当然。将删除-字符。它是否有助于我的文本字段从不同字段执行可能匹配和精确匹配等搜索。?您好,我已经创建了可能搜索并映射到全名,如下所示。但在xml文件下方的solr Admin UI中,全名字段排序不起作用。我想对全名进行可能的搜索,对电话号码、办公室号、门牌号进行精确匹配,并对全名进行排序,其他字段很少。自从我添加了NGramFilter工厂后,全名排序出现问题。添加了带有页面Ok的xml文件。确定。将删除-字符。它是否有助于我的文本字段从不同字段执行可能匹配和精确匹配等搜索。?您好,我已经创建了可能搜索并映射到全名,如下所示。但在xml文件下方的solr Admin UI中,全名字段排序不起作用。我想对全名进行可能的搜索,对电话号码、办公室号、门牌号进行精确匹配,并对全名进行排序,其他字段很少。自从我添加了NGramFilter工厂后,全名排序出现问题。添加了带有页面的xml文件