2

我正在研究一个使用维基百科主题名称的模型,用于我在全文索引中的实验。

'united states'我在“主题”(旧版)上设置和索引,并对:进行全文搜索

start n=node:topic('name:(united states)') return n

第一个结果根本不相关:

'List of United States National Historic Landmarks in United States commonwealths and territories, associated states, and foreign states'

[...]

真正的“美国”深埋在名单的深处。

因此,它提出了一个问题 ,为了在结果上找到最佳匹配(例如,levershtein、bi-gram 等算法),您首先必须获取与模式匹配的所有项目。

这将是一个严重的限制,因为在这种情况下我有 21K 行,大约 4 秒。

neo4j 使用哪些算法对全文搜索 (START) 的结果进行排序? 它使用哪种原理对结果进行排序以及如何使用密码对其进行更改?在文档中编写使用 JAVA api 来应用 sort() - 有一个教程来指定要修改哪些文件并且在任何调整之前知道使用哪个排名原理是非常有用的。

根据以下评论进行编辑 - 结果分页可能为: n=node:topic('name:(united states)') return n skip 10 limit 50;

(在限制之前跳过)但我需要确保第一个结果在分页之前是有意义的。

4

2 回答 2

1

我不知道 lucene 使用哪种顺序算法对结果进行排序。但是,关于分页,如果你改变限制的顺序并像下面这样跳过,应该没问题。 start n=node:topic('name:(united states)') return n skip 10 limit 50 ;

我还要补充一点,如果您正在执行全文搜索,那么像 solr 这样的解决方案可能更合适。

于 2015-08-07T03:35:09.213 回答
0

对于带有评分的 lucene 索引查找,您可能会更好:

http://neo4j.com/docs/stable/rest-api-indexes.html#rest-api-find-node-by-query

于 2015-08-08T09:06:51.367 回答