SOLR搜索部分匹配的名称
我有一个SOLR服务器,它的核心是人名,我现在尝试了多种配置,但没有找到最适合我们需要的配置 核心中的典型条目包括:SOLR搜索部分匹配的名称,solr,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", "_v
{
"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\u name
属性来搜索人员。然而,人们通常不知道他们正在搜索的人的中间名
现在,我可以通过搜索以下内容来找到此条目:
- 奥勒·斯韦里·豪
- 豪塞特
- 奥勒斯维尔
<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>
在搜索sverre haugset时,只要您在正确的字段中搜索,最后一个版本应该会给您带来成功。如果使用edismax作为查询类型(defType iirc),则在qf
参数中包含Full\u name
,在q
参数中仅包含查询文本。您可以使用debug=all
获取有关查询处理方式的调试信息。请记住,在更改字段类型后,需要清除索引并重新索引内容,以获得行为上的任何(适当)更改。给梅格发一封邮件给杜·特伦格·默尔·德塔尔杰特·赫杰普:-)嘿,马斯林德,谢谢你的回复。我最挣扎的问题,也许我还不够清楚,是我需要点击“Ole Haugset”,中间的名字省略了。如果你没有在你的查询中加上引号,@MatsLindh说的是真的。这会将它们转换为短语查询,因此您需要引入,以便在有中间令牌时进行匹配?Demax或eDiscoveryMax应该返回结果。Mats和Scott也是对的,不要在引号中搜索。短语在大多数情况下并不是你想要的搜索结果。