SOLR查询和SCORE

时间:2017-02-08 22:53:24

标签: solr

我有一个接受用户免费文本搜索的应用程序。假设用户在html输入文本中写“一二三”,所以我的搜索URI是“... / solr / my_index / select?q =表达式:(一二三)......”。

文档在架构中描述如下:

<field name="id" type="int" indexed="true" stored="true" required="true" />
<field name="expressions" type="text_general" indexed="true" stored="true" multiValued="true" />

在“my_index”中,我有两个索引的文件:

id:“1”,表达方式:[“七一二三四五”,“七八七”,“二六九六”]

id:“2”,表达式:[“one”,“one two”,“one two four”,“four one two one”]

查询的结果是文档id = 2得分更高,因为单词“one”和“two”的匹配更多。但我有更具体的要求:SCORE必须考虑不匹配计数,但“搜索短语中的相似性”。所以,因为文件id = 1的值为“七一二三四”,其中“..一二三......”子字符串在值内,这与用户写的短语非常相似, document id = 1必须有更大的SCORE。

可以这样做吗?我是SOLR / Lucene的新手,所以我不知道是否需要使用特定的查询解析器,构建一个自定义的解析器......

感谢。

2 个答案:

答案 0 :(得分:0)

所以基本上你的问题归结为如何根据匹配的早期提升文档。在Lucene中,支持SpanFirst查询,该查询提供了此功能。虽然在Solr Jira中有关于向Solr添加对SpanFirst的支持的开放票证,但我还没有看到任何有关此问题的信息。不过,您可以查看here以获取相关帮助。

答案 1 :(得分:0)

您可以尝试使用dismax / edismax Query Parser的最小匹配mm参数。

mm表示查询中必须匹配的最小子句数

使用mm参数的solr请求网址。

例如:

.../solr/my_index/select?q=expressions:(one two three)&defType=dismax&mm=3...