Tag: lucene

Apache Lucene – 优化搜索

我正在开发一个使用SQL Server数据库的Java(使用Spring)的Web应用程序。 我使用Apache Lucene为我的Web应用程序实现搜索function。 使用Apache Lucene,在执行搜索之前,我创建了一个标题索引。 我这样做是首先从数据库中获取所有标题的列表。 然后我遍历标题列表并将其中的每一个添加到索引中。 每次用户搜索某些内容时都会发生这种情况。 我想知道是否有更好,更有效的方法来创建索引? 我知道我的方式非常低效,并且当标题列表很长时需要很长时间才能完成。 任何建议都将受到高度赞赏。 谢谢

WordnetSynonymParser在Lucene

我是Lucene的新手,我正在尝试使用WordnetSynonymParser来使用wordnet同义词prolog扩展查询。 这就是我现在所拥有的: public class CustomAnalyzer extends Analyzer { @Override protected TokenStreamComponents createComponents(String fieldName, Reader reader){ // TODO Auto-generated method stub Tokenizer source = new ClassicTokenizer(Version.LUCENE_47, reader); TokenStream filter = new StandardFilter(Version.LUCENE_47, source); filter = new LowerCaseFilter(Version.LUCENE_47,filter); SynonymMap mySynonymMap = null; try { mySynonymMap = buildSynonym(); } catch (IOException e) { // TODO Auto-generated catch block […]

Lucene:首先不显示完全匹配

我正在使用演示IndexFiles和SearchFiles类来索引和搜索org.apache.lucene.demo数据包中的内容。 我的问题是当我使用包含多个单词的查询时,我没有得到具有完全匹配的结果。 例如: Enter query: “natural language” Searching for: “natural language” 298 total matching documents 1. download\researchers.uq.edu.au\fields-of-research\natural-language-processing .txt 2. download\researchers.uq.edu.au\research-project\16267.txt 3. download\researchers.uq.edu.au\research-project\16279.txt 4. download\researchers.uq.edu.au\research-project\18361.txt 5. download\www.uq.edu.au\news\%3Farticle%3D2187.txt 6. download\researchers.uq.edu.au\researcher\2115.txt 7. download\ceit.uq.edu.au\content\2013-2014-summer-research-scholarship-project s-dr-alan-cody%3Fpage%3D1.txt 8. download\ceit.uq.edu.au\content\2013-2014-summer-research-scholarship-project s-dr-alan-cody%3Fpage%3D2.txt 9. download\ceit.uq.edu.au\content\2013-2014-summer-research-scholarship-project s-dr-alan-cody.txt 10. download\www.ceit.uq.edu.au\content\2013-2014-summer-research-scholarship-pr ojects-dr-alan-cody.txt Press (n)ext page, (q)uit or enter number to jump to a page. 没有相同的结果: Enter query: […]

java AbstractMethodError

如何在lucene中处理此错误: java.lang.AbstractMethodError: org.apache.lucene.store.Directory.listAll()[Ljava/lang/String; at org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:568) at org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:69) at org.apache.lucene.index.IndexReader.open(IndexReader.java:316) at org.apache.lucene.index.IndexReader.open(IndexReader.java:188) 我正在进行lucene函数调用,但遗憾的是它本身调用了某个类的抽象方法,从上面的错误可以看出这一点。 为此做了什么工作? 谢谢,Akhil

工作线程导致Lucene LockObtainFailedException

因此,我一直在尝试将Lucene用于App-Engine,作为GAE Search Api的优秀替代品。 我的内容是用户生成的; 这意味着我将在生产时动态地向索引添加内容。 因此,我将文档添加到索引的实现使用了一个任务队列,这样我的系统可以毫无问题地扩展。 但我遇到一个问题,多个工作线程试图访问索引导致LockObtainFailedException。 我有什么想法可以解决这个问题? 上面链接的LuceneFoAppEngine项目确实包含引号 对于高性能应用程序,请使用Google App引擎任务队列 那么在避免LockObtainFailedException的同时我该如何做呢? 我唯一希望创建多个索引,然后在搜索时,搜索所有索引? (每个工作线程的一个专用索引?)

创建IndexSearcher抛出IOException读取过EOF

当我尝试创建一个new IndexSearcher(fsDir)类的对象时,它抛出IOException read past EOF 。 搜索索引不是基于RAM的,它是基于NFS的(使用FSDirectory lucene类)。 我用Google搜索并得到了这个 没有许可问题,也没有锁定,我用lockhunter检查过 所以必须有写权限,没有人使用该目录。 这是在过去的2-3个月里工作的。 昨天突然停止工作,文件夹中的所有索引文件。 还有什么可能导致这个例外? 有没有像索引是2-3个月(某个时期),然后它过期并给出这个例外?

lucene删除记录,已弃用?

在研究删除lucene中的文档时,我已经certificate我使用了IndexReaders的delete()方法,传入了文档id。 现在我确实需要这样做,看起来lucene目前不支持这种方法,而且我很难找到目前这样做的方法。 有任何想法吗?

增量索引lucene

我正在使用Lucene 3.6在Java中创建应用程序,并希望提高增量率。 我已经创建了索引,我读到你要做的就是打开现有的索引,并检查每个文档的索引和文档修改日期,看它们是否不同删除索引文件并重新添加。 我的问题是我不知道如何在Java Lucene中这样做。 谢谢 我的代码是: public static void main(String[] args) throws CorruptIndexException, LockObtainFailedException, IOException { File docDir = new File(“D:\\PRUEBASLUCENE”); File indexDir = new File(“C:\\PRUEBA”); Directory fsDir = FSDirectory.open(indexDir); Analyzer an = new StandardAnalyzer(Version.LUCENE_36); IndexWriter indexWriter = new IndexWriter(fsDir,an,MaxFieldLength.UNLIMITED); long numChars = 0L; for (File f : docDir.listFiles()) { String fileName = f.getName(); […]

需要Lucene 4.1.0源码jars或javadoc jar(用于在Eclipse中使用Lucene 4.1.0进行开发)

我如何/在哪里获得Lucene 4.1.0的源jar(或javadoc jar)? 我刚刚从http://www.apache.org/dyn/closer.cgi/lucene/java/4.1.0中列出的一个镜像下载并解压缩了最新版本的Lucene,这两个镜像都是lucene-4.1.0-src.tgz和lucene-4.1.0.tgz 。 我可以轻松地将后者中找到的42个jar子添加到我的Eclipse项目中。 添加javadoc或源代码更令人烦恼。 在过去,我以某种方式获得了源jar(每个都可以通过Project.right.click/Properties/Java_Build_Path/Libraries在Eclipse中附加到相应的字节编译jar)。 由于源代码已经包含javadoc,所以我需要在将鼠标hover在类型和方法调用上时从Eclipse获取提示并且生活很好。 (另外,我可以在需要时随时进入源头)。 现在,我把我的鼻子插入lucene-4.1.0-src,只是为了看。 当然,没有jar子(src或其他)。 但是试图编译需要我首先设置“常春藤”(对不起?)因为我在使用Fedora,在执行了规定的ant ivy-bootstrap我遵循了一些额外的指令来使常春藤有点工作(基本上归结为echo rpm_mode=false >> ~/.ant/ant.conf )。 但是,顶层的ant jar-src失败了(“/ src / java不存在”)。 ant clean compile好一点,但是ant jar失败(无效的清单)。 或者, lucene-4.1.0.tgz附带lucene-4.1.0.tgz的文档; 如何将Eclipse中的42个Lucene jar与这些总共95MB的5458个文件连接起来?

如何在ElasticSearch中添加分析器设置?

我正在使用ElasticSearch 1.5.2,我希望有以下设置: “settings”: { “analysis”: { “filter”: { “filter_shingle”: { “type”: “shingle”, “max_shingle_size”: 2, “min_shingle_size”: 2, “output_unigrams”: false }, “filter_stemmer”: { “type”: “porter_stem”, “language”: “English” } }, “tokenizer”: { “my_ngram_tokenizer”: { “type”: “nGram”, “min_gram”: 1, “max_gram”: 1 } }, “analyzer”: { “ShingleAnalyzer”: { “tokenizer”: “my_ngram_tokenizer”, “filter”: [ “standard”, “lowercase”, “filter_stemmer”, “filter_shingle” ] } } } […]