是否可以使用Lucene作为完整的数据存储(像其他(mongo,couch)nosql变体)。我知道有一些限制,例如一个索引器新更新的文档不会在其他索引器中显示。因此,我们需要重新启动索引器以获取更新。但我偶然发现了solr最近,似乎通过某种快照复制避免了这些问题。所以我想我可以使用lucene作为数据存储,因为它也使用mongo和couch在内部使用的相同类型的文档(基于JSON)来管理文档,并且其经过验证的索引算法可以超快地获取记录。但我很好奇以前有没有人试过……?如果不是,不选择这种方法的原因是什么。 最佳答案 还有耐用性的问
我经常听说Lucene,它是Java中最好的搜索引擎库之一。Ruby是否有类似(同样强大)的库? 最佳答案 嗯,有Ferret,这是Lucene到Ruby的端口。此外,Lucene非常易于使用JRuby,如果这是您的选择。根据您的需要,您可能还想看看Solr,这是构建在Lucene上的更高级别的前端。有一个Ruby接口(interface),solr-ruby,通过HTTP与Solr交互。 关于java-Lucene的Ruby替代品,我们在StackOverflow上找到一个类似的问题:
我已经使用lucene索引了一组文档。我还为每个文档内容存储了DocumentTermVector。我写了一个程序,得到了每个文档的词频vector,但是我怎样才能得到每个文档的tf-idfvector呢?这是我在每个文档中输出词频的代码:Directorydir=FSDirectory.open(newFile(indexDir));IndexReaderir=IndexReader.open(dir);for(intdocNum=0;docNumlucene中是否有任何内置函数可供我执行此操作?没有人帮忙,我自己做了:Directorydir=FSDirectory.open(ne
在阅读“LuceneinAction2ndedition”时,我看到了关于Filter的描述。可用于在Lucene中进行结果过滤的类。Lucene有很多过滤器重复Query类。例如,NumericRangeQuery和NumericRangeFilter.书上说NRF与NRQ完全相同但没有文件评分。这是否意味着如果我不需要评分或按文档字段值对文档进行排序,我应该更喜欢Filter结束Query从性能的角度来看? 最佳答案 我从UweSchindler那里得到了很好的回答,让我在这里重新发布。Ifyoudontcachefilters
在不使索引脱机(热备份)的情况下备份lucene索引的最佳做法是什么? 最佳答案 您不必为了备份索引而停止您的IndexWriter。只需使用SnapshotDeletionPolicy,它可以让您“保护”给定的提交点(及其包含的所有文件)不被删除。然后,将该提交点中的文件复制到您的备份,最后释放提交。如果备份需要一段时间才能运行也没关系——只要您不使用SnapshotDeletionPolicy释放提交点,IndexWriter就不会删除文件(即使,例如,它们已经合并在一起)。这为您提供了一个一致的备份,它是索引的时间点图像,不会
我正在尝试使用LuceneJava2.3.2来实现对产品目录的搜索。除了产品的常规字段外,还有一个名为“类别”的字段。一个产品可以属于多个类别。目前,我使用FilteredQuery在每个类别中搜索相同的搜索词,以获得每个类别的结果数。这会导致每个查询调用20-30次内部搜索来显示结果。这大大减慢了搜索速度。使用Lucene是否有更快的方法来实现相同的结果? 最佳答案 这是我所做的,虽然它有点占用内存:你需要的是提前创建一堆BitSets,每个类别一个,包含类别中所有文档的文档ID。现在,在搜索时您使用HitCollector并根据
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我是一家初创公司的编码新手,我正在Web主机的目录中实现文档搜索。我正在比较Lucene/Solr、Whoosh、Sphinx和Xapian。Whoosh本身就是Python。但我也想听听你的意见。其中哪些有成熟且易于使用和安装的python接口(interface)?(嗖嗖声是显而易见的)不会出现崩溃、瓶颈和其他故障最佳文档界面(我不阅读PHP文档,因
我正在使用Lucene3.0.3。在准备使用SpanQuery和PhraseQuery时,我想在我的索引中标记段落边界,以阻止这些查询跨段落边界匹配。我知道我需要在PositionIncrementAttribute中将位置增加一些适当大的值处理文本以标记段落边界时。假设在源文档中,我的段落边界标记为...对。如何设置我的token流来检测标签?另外,我实际上并不想索引标签本身。出于索引的目的,我宁愿增加下一个合法token的位置,而不是发出与标签相对应的token,因为我不希望它影响搜索。 最佳答案 添加间隙(=PositionI
我正在使用Lucene对少量大型文档进行索引和搜索。使用来自Lucene站点的演示,我已经为文档编制了索引并且能够搜索它们。但是,搜索结果并不是特别有用,因为它指向文档的文件。对于非常大的文档,这不是特别有用。我想知道Lucene是否可以索引这些非常大的文档并在它们之上创建抽象以提供更细粒度的结果。一个例子可能会更好地解释我的意思。考虑一本非常大的书,例如圣经。一个文件包含圣经的全部文本,因此在演示中,搜索“大马士革”的结果将指向该文件。我想做的是保留大文档,但搜索将返回指向书籍、章节甚至与诗歌一样精确的结果。因此,搜索“大马士革”可以返回(以及其他)第23卷第7章第8节。这是否可能(
我正在构建一个ASP.NETMVC站点,我计划在其中使用Lucene.Net。我设想了一种构建Lucene用法的方法,但不确定我计划的架构是否可行且高效。我的计划:在Global.asax中的Application_Start事件中:我检查文件系统上是否存在索引-如果不存在,我创建它并用从中提取的文件填充它数据库。提交新内容时:我创建了一个IndexWriter,填充文档,写入索引,最后处理IndexWriter。IndexWriters未被重用,因为我想不出在ASP.NETMVC应用程序中执行此操作的好方法。编辑内容时:我重复提交新内容时的相同过程,只是我先删除旧内容,然后添加编辑内