我有一个带有人名核心的SOLR服务器,现在我尝试了多种配置,但没有找到最适合我们需求的配置。
核心中的典型条目为:
{
"Post_code":"7001",
"Full_name":"Ole Sverre Haugset",
"First_name":"Ole Sverre",
"id":3809194,
"Last_name":"Haugset",
"Full_address":"Some street 112, 7001",
"_version_":1643841934565834759}]
}
我们使用Full_name
属性搜索人员。但是,人们常常不知道他们要搜索的人的中间名。
现在,我将通过搜索以下内容在此条目中获得成功:
但搜索"Ole Haugset"
现在这是我用于此字段的配置:
<field name="Full_name" type="text_ngrm" indexed="true" stored="true"/>
<fieldType name="text_ngrm" class="solr.TextField" positionIncrementGap="100">
我也尝试了其他一些配置,但没有取得重大成功。 最后一个是:
<field name="Full_name" type="text_general" indexed="true" stored="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" />
<!-- 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" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>