问题标签 [apache-lucy]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
292 浏览

perl - 如何使用 Perl 在 Apache Lucy 中进行前缀查询?

我正在使用Apache Lucy来加速 Web 表单上的预先输入(自动完成)字段。我正在查询近 80 万条记录。我有一个工作设置,但想限制我对以查询字符串开头的术语的响应。目前,查询匹配器要么匹配整个单词,要么如果我使用标记化,/./我可以将查询与整个单词的部分进行匹配。

在浏览文档时,我发现Lucy::Docs::Cookbook::CustomQueryParser

在扩展查询语言标题下的那个页面上,有一个参考PrefixQuery。这个包在 Lucy 中不存在,我不得不做更多的搜索。最终,我在 lucy 的 git 存储库中找到了PrefixQuery.pm代码示例。

请注意,此包引用了另一个不存在的包,名为Lucy::Search::Tally. 删除对 tally 的引用使我能够使这个示例正常工作,但它远非功能匹配器。它不处理多个字段,没有评分等……</p>

有谁知道一种方法可以让 Lucy 进行前缀匹配,而无需担心这些问题?

0 投票
1 回答
298 浏览

perl - 索引还是不索引?Google CSE 在做什么?备择方案?

我试图了解 Google CSE(自定义搜索引擎)在做什么。我使用免费版本并提交一个sitemap.php.

谷歌 CSE 采用这个并索引 200(2500 页)。我前段时间做过这个,并且开始怀疑它是否会索引其余部分。

如果我查看 Google 网站管理员工具,相关网站的仪表板显示 200 个页面已编入索引。

如果我查看谷歌网站管理员工具,索引状态它告诉我有 0 个页面被索引。这对我来说看起来不正确。200是我现在猜对的,但我真的不知道。

我怀疑这些差异是由于谷歌之前知道该网站。但是,sitemap.php如果没有此文件,则无法找到指向页面的点。

我开始怀疑这是否会起作用。Google CSE 以前有时返回 0,有时返回很多命中。我无法理解发生了什么,这就是我添加此站点地图的原因。站点地图以一种我认为更适合 Google 的新方式呈现相关页面。(相同的页面在http://zotero.org/上也有不同的形式。)

关于我可以做些什么来让这个搜索工作的任何建议?(我正在考虑使用 OpenSearchEngine,但目前我没有可以运行 Java 的虚拟主机。这是一个免费项目,在我的业余时间,所以我没有很多经济资源。也许我可以让 Apache Lucy 工作,但我不确定。我尝试在 Cygwin 下编译它,但由于gcc-4perl 5.18 中修复的 -link 问题而失败,但 Cygwin 只有 5.14。当然运行Linux,但是对于Lucy来说看起来有点早。也许我错了?)

0 投票
1 回答
806 浏览

apache - Apache solr 与 Apache Lucy

我有一个用Perl编写的 Web 应用程序。我的搜索要求是索引可以包含文件类型的文件系统/动态文档,即;HTML、MS Office、PDF 文档等,然后执行全文搜索。我已经调查过Apache Solr可以很好地处理示例数据。现在我了解了Apache Lucy,并想知道这是否适合我的基于 Perl 的应用程序。Apache Lucy的担忧之一是 2014 年 12 月之后CPAN没有更新。不确定这是否得到积极维护,尤其是与Lucene 5.3集成的进展情况。我需要以下几点建议:

谢谢,

0 投票
3 回答
124 浏览

c - 编译 Apache Lucy

我正在尝试编译 Apache Lucy。以下是我遵循的步骤:

  1. 下载露西和小丑鱼
  2. 编译的 Clownfish 运行时和编译器
  3. 配置露西
  4. 开始露西化妆

核心目录中文件的编译工作正常,但是当它到达模块时会引发错误:

$ make gcc -pedantic -Wall -Wextra -Wno-variadic-macros -std=gnu99 -D_GNU_SOURCE -D CFP_LUCY -D CFP_TESTLUCY -fvisibility=hidden -O2 -g -fno-strict-aliasing -fPIC -I . -I ../core -I autogen/include -I ../modules/analysis/snowstem/source/include -I ../modules/unicode/ucd -I ../modules/unicode/utf8proc -c ../modules/analysis/snowstem/source/libstemmer/libstemmer_utf8.c -o ../modules/analysis/snowstem/source/libstemmer/libstemmer_utf8.o ../modules/analysis/snowstem/source/libstemmer/libstemmer_utf8.c:4:35: fatal error: ../include/libstemmer.h: No such file or directory #include "../include/libstemmer.h" ^ compilation terminated. make: *** [../modules/analysis/snowstem/source/libstemmer/libstemmer_utf8.o] Error 1

问题似乎是模块中的代码文件包含具有相对路径的包含文件,例如#include "../include/libstemmer.h". 即使生成的目录包含在包含文件目录中,即 -I ../modules/analysis/snowstem/source/include但它不起作用

我开始修改源文件以删除相对路径,但更多的开始出现。我认为必须有更好的方法。关于如何解决这个问题的任何帮助都会非常有帮助。

0 投票
1 回答
47 浏览

perl - 使用 Lucy 进行索引和搜索

我正在尝试用文本文件索引文件夹,并使用 lucy::simple 模块搜索包含单词的文件。到目前为止,这是我的代码:

但我得到了错误:

有人知道我为什么会得到这个吗?

0 投票
0 回答
157 浏览

perl - 使用 Lucy::Search::IndexSearcher 和 Lucy::Search::PolySearcher 从多个索引文件夹加速搜索

我正在一个父文件夹下的多个子文件夹上创建索引。

索引是在多个文件夹上创建的,因为文件是并行创建的,我想避免多个索引器之间的段锁定。

我的一个应用程序在不同的子文件夹中创建了包含大量日志文件的目录结构。

我在创建这些文件时并行索引所有这些文件。

目录结构如下所示:

这很好用,当我的应用程序运行时,所有日志文件也会被索引。

搜索是一个不同的应用程序,它执行以下操作:

  1. 扫描所有目录,直到.lucyindexer/1创建所有此类文件夹的列表。我习惯File::Find这样做。
  2. 使用 in 循环创建搜索器Lucy::Search::IndexSearcher并将所有搜索器添加到Lucy::Search::PolySearcher.

我的代码如下所示:

这将运行并返回预期结果。但是,当目录结构嵌套很深时,性能确实很差。

我进行了分析Devel::NYTProf,发现两个地方花费了最长时间:

  1. 扫描目录时。(我将尝试通过在应用程序生成索引时生成目录列表来解决这个问题)。
  2. 使用创建搜索器时Lucy::Search::IndexSearcher。在循环运行所有索引目录时,这需要最长时间。

为了解决项目#2,我尝试Lucy::Search::IndexSearcher使用为不同的索引文件夹生成一个对象,Parallel::ForkManager但出现以下错误:

可存储模块无法将孩子的数据结构存储到临时文件“/tmp/Parallel-ForkManager-27339-27366.txt”:未在 /usr/software/lib/ 处为 Lucy::Search::IndexSearcher 实现可存储序列化perl5/site_perl/5.14.0/x86_64-linux-thread-multi/Clownfish.pm 第 93 行

使用以下代码:

对于大型日志目录,整个过程最多需要 60-120 秒。在整个过程结束时,我从所有搜索结果中创建了一个嵌套 JSON 对象,以使用 JQuery 显示。

我正在寻找改进其性能的想法。知道如何使用Parallel::ForkManager或任何其他方法创建多个搜索器吗?或其他提高搜索性能的方法。

另外,有什么方法可以将所有索引合并到一个地方吗?