我使用N-GramsFilter在Solr中索引了我的数据。我面临的问题是它返回包含word作为子字符串的所有文档..就像我在我的数据中搜索DHA一样... 它返回
DHAND
DHARD
DHAI
DHAM
DHA
DHA在5号,我希望它是第一个,因为它与用户搜索的术语完全匹配。如何订购我的回复,以便首先找到完全匹配的文件,然后是部分匹配的文件....
其次我的数据包含非英语单词,但它们拼写为英语我可以使用拼写检查器附带solr吗?
答案 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字段。
我不明白问题的后半部分(非英语,但拼写为英语)。它可能是一个单独的问题,有更多的细节/例子。