lucene根据数据库记录id删除索引无效

lucene根据数据库记录id删除索引无效,第1张

看一下是不是建索引的问题(Field选取的不对,一般id字段用FieldIndexNOT_ANALYZED),

我用lucene 362, IKAnalyzer2012_u6jar测试的

import javaioFile;

import orgapacheluceneanalysisAnalyzer;

import orgapachelucenedocumentDocument;

import orgapachelucenedocumentField;

import orgapacheluceneindexIndexReader;

import orgapacheluceneindexIndexWriter;

import orgapacheluceneindexIndexWriterConfig;

import orgapachelucenequeryParserMultiFieldQueryParser;

import orgapachelucenesearchIndexSearcher;

import orgapachelucenesearchQuery;

import orgapachelucenestoreDirectory;

import orgapachelucenestoreFSDirectory;

import orgapacheluceneutilVersion;

import orgwlteaanalyzerluceneIKAnalyzer;

public class LucenDemo {

public static void main(String[] args) {

String id = "456";

createIndex();

printTotalHits(id);

deleteById(id);

printTotalHits(id);

}

static String indexPath = "E:\\lucene-demo-index\\";

public static void printTotalHits(String id) {

try {

Analyzer anal = new IKAnalyzer(true);

       MultiFieldQueryParser parser = new MultiFieldQueryParser(VersionLUCENE_36, new String[] {"id"}, anal);

       Query query = parserparse(id);

       

       Directory dir = FSDirectoryopen(new File(indexPath));

       IndexReader indexReader = IndexReaderopen(dir);

       

       IndexSearcher searcher = new IndexSearcher(indexReader);

       

       Systemoutprintln(searchersearch(query, 10)totalHits);

       

       indexReaderclose();

       

} catch(Exception e) {

eprintStackTrace();

}

}

public static void deleteById(String id) {

try {

Analyzer anal = new IKAnalyzer(true);

       MultiFieldQueryParser parser = new MultiFieldQueryParser(VersionLUCENE_36, new String[] {"id"}, anal);

       Query query = parserparse(id);

       

       Directory dir = FSDirectoryopen(new File(indexPath));

       IndexWriterConfig config = new IndexWriterConfig(VersionLUCENE_36,anal);

       IndexWriter indexWriter = new IndexWriter(dir, config);

       indexWriterdeleteDocuments(query);  

       indexWritercommit();

       indexWriterclose();

} catch(Exception e) {

eprintStackTrace();

}

}

public static void createIndex() {

try {

Analyzer analyzer = new IKAnalyzer(true);

       

       Directory dir = FSDirectoryopen(new File(indexPath));

       IndexWriterConfig config = new IndexWriterConfig(VersionLUCENE_36, analyzer);

       IndexWriter indexWriter = new IndexWriter(dir, config);

       

       Document doc1 = new Document();

       doc1add(new Field("id", false, "123", FieldStoreYES, FieldIndexNOT_ANALYZED, FieldTermVectorNO));

       indexWriteraddDocument(doc1);

       

       Document doc2 = new Document();

       doc2add(new Field("id", false, "456", FieldStoreYES, FieldIndexNOT_ANALYZED, FieldTermVectorNO));

       indexWriteraddDocument(doc2);

       

       Document doc3 = new Document();

       doc3add(new Field("id", false, "789", FieldStoreYES, FieldIndexNOT_ANALYZED, FieldTermVectorNO));

       indexWriteraddDocument(doc3);

       

       indexWritercommit();

       indexWriterclose();

} catch(Exception e) {

eprintStackTrace();

}

}

}

是创建同一个索引,还是不同的索引呢?感觉就是变查询,边网索引里添加,最后生成吧。不知道还有什么好的方法没有

或者是像分页一样,分段查询,分段生成,最后合成,不过感觉数据量不是太大的话,没什么必要吧

Java中的搜索插件称为搜索引擎(Search Engine),它是一种可以在网络上搜索内容的软件,可以帮助用户快速找到所需要的信息。搜索引擎使用爬虫来抓取网页中的内容,然后将网页内容组织成一个数据库,最后用户可以根据自己的需要使用搜索引擎检索相关信息。

Java中的搜索引擎有很多,其中最流行的搜索引擎包括Google、Bing、Yahoo、Baidu等,它们都是大型的搜索引擎,可以搜索到全球各地的信息。此外,还有一些小型的搜索引擎,如DuckDuckGo、Yandex等,它们可以搜索到更加准确的信息,但是覆盖的范围较小。

Java中的搜索引擎可以帮助用户更加快捷的搜索到所需要的信息,而且它们还可以根据用户的搜索关键词自动推荐更加准确的信息。另外,它们还可以搜索到网络上的视频、音乐等多媒体内容,以及新闻、等网络资源。

我也再找这个方法

不过我知道compass里面已经实现了JDBCDirectory,可以把索引存到数据库中

可以研究下它的源码

我的qq号码是287836538

我们可以交流下

以上就是关于lucene根据数据库记录id删除索引无效全部的内容,包括:lucene根据数据库记录id删除索引无效、使用Lucene3对数据库的多表多个字段创建索引,如何设计才能最好、java中搜索插件叫什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9545191.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存