Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lucene java无solr短语提示器_Java_Lucene_Indexing_Phrase - Fatal编程技术网

Lucene java无solr短语提示器

Lucene java无solr短语提示器,java,lucene,indexing,phrase,Java,Lucene,Indexing,Phrase,我有一个包含二进制文档(如PDF)的大型数据库和一个没有TermFreqVector的索引,只是“Store.NO,index.analysis”。我正试图用它来实现短语提示器/预测器。我想搜索单个或多个单词,比如:“where”或“where are”,我希望得到类似“where are you john”的内容 我很惊讶LUKE能够以某种方式从创建的索引中逐项恢复文档文档(我已经检查了它的来源,但是…我仍然不知道没有TermFreqVector怎么可能)。有人知道这是怎么可能的吗? 我的建议

我有一个包含二进制文档(如PDF)的大型数据库和一个没有TermFreqVector的索引,只是“Store.NO,index.analysis”。我正试图用它来实现短语提示器/预测器。我想搜索单个或多个单词,比如:“where”或“where are”,我希望得到类似“where are you john”的内容

我很惊讶LUKE能够以某种方式从创建的索引中逐项恢复文档文档(我已经检查了它的来源,但是…我仍然不知道没有TermFreqVector怎么可能)。有人知道这是怎么可能的吗? 我的建议者有两个选择:

1) 使用“不知何故”LUKE的机制从我现在的索引中恢复文档。(那就最好了)

2) 为短语建议者创建另一个索引。(但是,目前实施的索引大约需要2-3天,大约需要4-5个IGS)。我在网上搜索过这个解决方案,但大多数都导致了我无法使用的SOLR

我已经尝试了一些解决方案,但是。。。我结巴了


如有任何提示,我将不胜感激

首先,我不建议尝试模仿卢克的文档重建。它是用来调试的。这是昂贵的,复杂的,有损的。如果你真的想知道它是如何工作的,Luke是开源的,那么就抓住源代码看看:/src/org/getopt/Luke/docrestructor.java


我看到的短语建议的实现是将短语存储为
StringField
,并使用
SpellChecker
查找建议。这需要您定义什么是上下文中的“短语”,并分别为它们编制索引。我可能会为此创建另一个字段,而不是一个完全独立的索引,但这取决于您。

好的。经过几次尝试,采取了不同的方法。。。我做到了,而且它运行得非常快。:)
我所做的一切。我已经用一个附加选项“TermVector.with_POSITIONS”为我的所有文档重新编制了索引,并使用PrefixQuery直接在索引中搜索术语。然后,我将在文档中搜索术语的所有位置,并将其存储在地图中。然后,我将迭代文档中的术语,检查术语位置是否为TermPosition。我见过autosuggester使用拼写检查器的一些实现(但没有描述如何准备索引:/)。然而,它是针对lucene 4+的。我忘了说我需要使用lucene 3.5,它没有StringField,只有一个字段。我知道它也有拼写检查器。无论如何,它将需要一个额外的索引。对吗?我只是在想。。。如果currnet索引需要大约4Gigs,拼写检查器将要大得多。。。我想。在4.0之前,您可以通过
字段.Index.NOT\u分析
。您还可以使用
关键字标记器
对其进行分析,并使用过滤器对文本进行规范化(例如
小写过滤器
),这可能会使其更可用。