看一下是不是建索引的问题(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中搜索插件叫什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)