SOLR搜索部分匹配的名称

时间:2019-09-07 16:11:33

标签: solr

我有一个带有人名核心的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 sverre hau
  • haugset
  • ole sverre

但搜索"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>

0 个答案:

没有答案