2017-02-06 40 views
0

如何在索引创建期间指定一个字段应该比另一个字段获得更多关联?Cloudant Lucene索引与每个字段的相关性不同

示例:我的文档带有标题和说明字段,并且希望标题字段的内容在查询期间更加重要。

DOC1:标题: “你好,世界”,介绍道: “只是一个问候语” DOC2:标题: “问候”,介绍道: “你好,大家你好,你好”

指数( “默认” ,doc.title); index(“default”,doc.description);

搜索术语“hello”应该返回doc1,其关联性高于doc2,因为即使doc2包含单词3次,单词“hello”也出现在标题字段中。

这是如何实现的?

回答

1

您可以在查询时间(例如,如果索引项分别

index("title", doc.title); 
index("description", doc.description); 

然后在查询时您可以指定标题得到更多的重量比描述字段

q=(title:hello)^100 OR (description:hello) 

其中^100表明,这个词是提振。见https://docs.cloudant.com/search.html#query-syntax

+0

谢谢,Glynn。这听起来像一个选项。当然,我的默认索引使用来自超过10个不同字段的数据,这使得查询非常冗长,因此我必须将它们全部添加。也许像这样的东西可以工作:'q =“hello”OR(title:“hello”)^ 100' –

+0

是的,Glynn,这对单个单词很有效,但很快就会因为多个搜索词而变得复杂。 'q = hello world OR((title:hello)^ 100 OR(title:world)^ 100)' 除非我搜索一个确切的字符串,否则我不得不将它们分成单独的字段组合。否则,只有第一个词用于特定领域的海参。 –

+0

它应该是'q =你好和世界或((标题:你好)^ 100 AND(标题:世界)^ 100)' –