如何在solr响应中订购准确的单词

时间:2016-11-29 07:58:10

标签: apache solr

我使用N-GramsFilter在Solr中索引了我的数据。我面临的问题是它返回包含word作为子字符串的所有文档..就像我在我的数据中搜索DHA一样... 它返回

DHAND
DHARD 
DHAI 
DHAM
DHA 

DHA在5号,我希望它是第一个,因为它与用户搜索的术语完全匹配。如何订购我的回复,以便首先找到完全匹配的文件,然后是部分匹配的文件....

其次我的数据包含非英语单词,但它们拼写为英语我可以使用拼写检查器附带solr吗?

2 个答案:

答案 0 :(得分:0)

在这里,您可能需要使用与搜索相同的其他字段。

新复制的字段应为String类型,可用于排序。

您现在用于排序的字段已被标记化,无法为您提供正确的排序。

1. Create/add another field by using copy field 

<copyField source="reference" dest="referenceSort"/>

2. Add the field like below.

<field name="referenceSort" type="string" indexed="true" stored="true"/>

请参阅文档Documentation

  

可以对文档的“得分”进行排序,也可以对任何文档进行排序   multiValued =“false”indexed =“true”字段,前提是该字段为   非标记化(即:没有分析器)或仅使用分析器   产生一个Term(即:使用KeywordTokenizer)

答案 1 :(得分:0)

您想复制字段并搜索两个字段,但具有不同的提升。因此,您对处理的字段进行了非常高的提升,以便仅为您提供完全匹配。如果匹配,则该文档首先出现;如果不是 - 更宽松的n-gram字段。

我不明白问题的后半部分(非英语,但拼写为英语)。它可能是一个单独的问题,有更多的细节/例子。