Solr lucene索引文档中多短语匹配的查找和排序

Solr lucene索引文档中多短语匹配的查找和排序,solr,lucene,phrases,Solr,Lucene,Phrases,给定一系列包含文本的文档,我想搜索短语并返回所有匹配项并对它们进行排序。我知道如何让lucene/solr指示哪些文档匹配,并在文档中突出显示,但是如何获得包含同一文档中多个匹配项的排名 First document. It has a single line of text. 如果我搜索文本行,那么我希望它找到三个匹配项,排列如下: 2nd document -> ...This "text line" is quite short. 1st document -> ...It

给定一系列包含文本的文档,我想搜索短语并返回所有匹配项并对它们进行排序。我知道如何让lucene/solr指示哪些文档匹配,并在文档中突出显示,但是如何获得包含同一文档中多个匹配项的排名

First document.  It has a single line of text.
如果我搜索文本行,那么我希望它找到三个匹配项,排列如下:

2nd document -> ...This "text line" is quite short.
1st document -> ...It has a single "line of text".
2nd document -> ...another "line containing more text" and is...

这可能吗?如何匹配?

如果您希望每行有一个匹配项,那么请将每行作为自己的文档。不要让术语文档与文本是否实际上是单个文件混淆

如果您想维护指向该文件的链接,只需在另一个存储字段中为该id编制索引即可

{ id: "myfile.txt",
  text: "first line" }

{ id: "myfile.txt",
  text: "second line" }

我最初有一个更复杂的问题,其中包括:为什么要在结果中使用document2两次?也许你应该把每一行作为一个文档索引…这就是我说的,如果你想让匹配成为行,那么每一行都作为一个文档。我想让文档2在结果中出现两次,因为它有两个不同的匹配,具有不同的排名。但我不能将每一行分开,因为我的源文件是一个文本流,搜索短语必须与新行边界匹配。我不是说文件,我是说lucene文档。为什么每一行都是自己的文档不起作用,因为我真的希望能够搜索跨越多行的短语。如果每一行都是一个单独的lucene文档,那么这是不可能的。
{ id: "myfile.txt",
  text: "first line" }

{ id: "myfile.txt",
  text: "second line" }