Php 如何在solr搜索中找到准确的关键字?
实际上,我在solr搜索中面临一个问题。 有一个author字段,我在其中存储了两个值,如“deep kumar singh”和“deep kumar singh”。 当我搜索作者时:“deep kumar singh”会返回两个结果。 但我只希望有一个结果是准确的 以下是我的字段描述:Php 如何在solr搜索中找到准确的关键字?,php,solr,php-7.1,solr-query-syntax,solr7,Php,Solr,Php 7.1,Solr Query Syntax,Solr7,实际上,我在solr搜索中面临一个问题。 有一个author字段,我在其中存储了两个值,如“deep kumar singh”和“deep kumar singh”。 当我搜索作者时:“deep kumar singh”会返回两个结果。 但我只希望有一个结果是准确的 以下是我的字段描述: 我创建了authorFacet字段以获取authorFacet 当我选择authorFacet时,它为两个作者返回计数1 比如: 迪普·库马尔·辛格(1) 迪普·库马尔·辛格(1) 我只希望有一个结果是准确
我创建了authorFacet字段以获取authorFacet
当我选择authorFacet时,它为两个作者返回计数1
比如:
迪普·库马尔·辛格(1)
迪普·库马尔·辛格(1)
我只希望有一个结果是准确的
我怎样才能得到这个?任何建议都会很有帮助。将
作者的字段类型更改为文本的字符串,并重新索引数据。
你会得到想要的结果。作为类型为字符串的字段,它不会创建单词的任何标记,并有助于实现精确匹配
同样,也可以从solr管理页面进行分析。
转到solr管理页面。选择核心/集合。
点击分析。您可以选择该字段,并检查索引时间标记和查询时间是否符合您的期望
这样,作者就不需要两个不同的字段了。
您可以使用一个具有字符串作为字段类型的字段,该字段可用于刻面和搜索
如果需要精确匹配,则应使用字符串字段类型,而不是文本字段。字符串字段按原样存储,根本不进行任何转换
<field name="author" type="string" indexed="true" stored="true" multiValued="true"/>
请记住,如果您使用字符串,那么“abc”将不同于“abc”。(注意额外的句点)或“abc”(注意额外的空格)。精确搜索的概念实际上相当复杂,如果您想处理不同的情况(请参见)您可以通过在索引和查询分析器中添加charFilter来修改字段类型,如下所示:
请注意,charFilter必须放在tokenizer之前。基本上,您是在标记化之前删除连字符
因此,如果您使用以下搜索:
- “deep”,你会得到“deep kumar singh”和“deep kumar singh”
- “库马尔·辛格”,你只能得到“深库马尔·辛格”
- “库马尔·辛格”,你只能得到“深库马尔·辛格”
我相信,这就是你需要的
如果您不想更改text\u general字段类型,您可以使用与text\u general相同的分析器创建另一个字段类型,并将charFilter添加到新的字段类型。问题在于,您使用两种不同的方式拼写同一作者的姓名。处理这一问题的最正确方法是使您的输入数据行为正确-尝试在Solr中解决这一问题将导致以您未考虑的其他方式出现问题。。