uc

阅读 / 问答 / 标签

lucene能同时用两个分词器吗

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Runtime.InteropServices; using Lucene.Net.Analysis; namespace Lucene.Net.Analysis.DChinese { [StructLayout(LayoutKind.Explicit)] public struct result_t { [FieldOffset(0)] public int start; [FieldOffset(4)] public int length; [FieldOffset(8)] public int sPos1; [FieldOffset(12)] public int sPos2; [FieldOffset(16)] public int sPos3; [FieldOffset(20)] public int sPos4; [FieldOffset(24)] public int sPos5; [FieldOffset(28)] public int sPos

关于用lucene搜索返回文档内容的一个问题~~急求答案~~~

这个问题我也不是很清楚,其他的组合查询或者是重新查询试一下吧

Lucene4每次查询总是有重复数据,而且重复的还递增的样子,怎么解决

查一下你的代码 是否每次执行查询之后 有写索引的过程。可以执行一次把索引的全部数量打印出来看一下 同时打印出来 query.

lucene5.2 支持jdk1.7吗?

官方的答案:Release 4.8.0 [2014-04-28]System Requirements (1)LUCENE-4747, LUCENE-5514: Move to Java 7 as minimum Java version. (Robert Muir, Uwe Schindler)

lucene-3.6.0.tgz和lucene-3.6.0-src.tgz是啥啊,怎么有两个类似的文件包呢;

src是指源文件,tgz格式是linux文件格式

lucene 可以无条件把所有数据都搜索出来吗?

可以啊,searcher不加query就是全部。

org.apache.lucene.queryparser在哪个包里

位于该包中,lucene-queryparser-7.4.0.jar。不是 lucene-core-7.4.0.jar 。Reference: lucene.apache.org/core/7_4_0/core/index.html

分布式搜索方案 lucene+hadoop 还是 solr+hadoop好点

solr+hadoop(elasticsearch和solr类似,有hadoop模块,你也可以试试)在不能满足需求的时候可以改底层的lucene

lucene查询老是查不出东西

把创建索引时,把new Field("content", new FileReader(file))改成new BufferedReader(new InputStreamReader(new FileInputStream(file), "UTF-8"))

lucene 中文搜索不到

加入中文分词器

lucene完全匹配的问题

是用prefixQuery完全匹配的,但是被匹配的那一列,你在索引的时候不能分词存储,例如field=new Field("path",path,Field.Store.YES,Field.Index.NOT_ANALYZED);之后匹配的时候用个term就行了。例如:Term term1 = new Term("path",queryString); PrefixQuery query = new PrefixQuery(term1);不知道是否对你有帮助。

用lucene建立索引时,当第二次创建时,还在同一个目录下,那么之前的索引会被删除吗?

你用Lucene建立索引的时候IndexWriter writer = new IndexWriter(indexdir,new StandardAnalyzer(), true);第三个参数当为TRUE时是会删除同一个目录下的索引的,这是在初次创建索引时使用以后每次增量索引直接设置为FALSE即可,这样直接将后面新建立的索引添加到索引文件中,不会覆盖原来建立的索引。当删除索引时我们可以找到对应的索引ID,然后删除索引,将删除掉索引文件中的该条记录,同时在同目录下生成一个删除索引的记录问价,为-DEL文件,便于后面恢复删除的索引。以上解答希望你能理解,建个简单的索引试试就可以知道的

使用lucene在索引不分词的情况下能不能用模糊查询,也就是想达到like的效果

可以的,模糊查询和分词没有直接关系的。如果不分词,那么一句话就是一个域,可以使用FuzzyQuery或QueryParser查询。在使用QueryParser的时候,如果第一个字符就想使用通配符,那么需要使用setAllowLeadingWildcard(true)来开启。最后,模糊查询效率较低,结合自己的需求使用吧。

lucene最大能支持多大数据量的查询,且速度很好

luncene?给你个测试结果,自己考虑测试一:250万记录,300M左右文本,生成索引380M左右,800线程下平均处理时间300ms。测试二:37000记录,索引数据库中的两个varchar字段,索引文件2.6M,800线程下平均处理时间1.5ms。

Lucene 内置的一元分词为什么不被使用,而是要使用中文分词

因为一元分词不适合进行中文检索。一元分词是按字拆分的,比如一句话“梦想很丰满”,使用一元分词拆分的结果是:“梦”,“想”,“很”,“丰”,“满”。如果查找“梦想”这个词,是找不到查询结果的。这并不符合我们的检索习惯,所以极少使用。

lucene中如何检索两个字段值相等的数据

好像没有直接的方法,不过可以通过try catch的方法来判断,如: Boolean flag=false; try{ String contents=searcher.doc(docNum).get("content"); flag=true; } catch(Exception e){ flag=false; } 如果flag=ture说明content这个字段是存在的

lucene高版本怎么查低版本的数据?比如用lucene6.5代去查原先lucene3.6代创建的索引信息。

首先,应该知道lucene检索的是索引文件,而索引文件则是依据于数据库创建而成的。那么问题来了,你想怎么去创建索引呢?一般来说,这个得看需求了,最主要是考虑对数据的实时性要求高不高、数据量大不大?额,就假设数据量比较大吧,毕竟数据量太小也没必要使用lucene。1、数据实时性要求不高。可定时增量更新索引,以天或几个小时为单位。2.数据实时性要求较高。可在数据入库时,立即进行索引更新操作。那么问题又来了数据量比较大的时候,更新一次索引是比较慢的。所以,还得继续考虑缓存策略问题,将新增数据保存在缓存中,选择合适的时间进行提交。

Lucene搜索的字典dic文件如何指定路径

IndexReader indexReader=IndexReader.open(FSDirectory.open(file))

如何使用lucene改造oracle数据库

Lucene一个常见的用例是在一个或者多个数据库表进行全文检索。 虽然MySql有全文检索的功能,但是如果字段和数据量增加,MySql的性能会减低很快。映射数据到Lucene用伪代码表示:String sql = “select id, firstname, lastname, phone, email fro...

Lucene doc 文件格式详解

本文及后面关于Lucene的文章所采用的lucene 版本为8.1.0. doc 文件主要用于保存term的倒排表信息,包括docId倒排链及term在docId的term freq信息等。倒排链是Lucene 进行全文检索的核心数据结构,请特别关注这个数据结构 请参考 Lucene tim文件格式详解 第三部分 文件头部分主要内容为标识此文件类型为 Lucene50PostingsWriterDoc , 源码部分在 Lucene50PostingsWriter 的123行,主要内容如下 开始本部分阅读时,请注意一个在第3部分得到的结果及含义, 现在开始分析该部分内容 下面为term的doc信息。 主要逻辑是: 对于term的doc freq = 1的term来说,doc文件不保存这个term的doc信息,而是在 tim 文件中保存,doc 文件只保存doc freq > 1的term。在范例中,只有nice的doc freq > 1, 故只保存nice的doc倒排链 关于其它term(term freq = 1)的编码方式,请参考 tim 文件相应的格式内容 footer区主要有以下内容

lucene构建索引是保存在本地 还是内存中

反正我项目是保存在本地,好像也可以保存在内存的

lucene搜索问题

虽然这个问题过去很久了,但是给后来的人解释下----第三个 用表达式("content:Y*")来搜索是不是应该搜索出"Yello你好"而不是"hello你好"----那是因为 你给content设置了两个值啊,一个field1一个field2,分词名称都是content

Lucene可以对MYSQL进行全文检索吗

Lucene是可以的,它常见的用例就是在一个或者多个数据库表进行全文检索。虽然MySql有全文检索的功能,但是如果字段和数据量增加,MySql的性能会减低很快。

如何搞定 lucene3.0 自定义排序

Lucene的默认排序是按照Document的得分进行排序的。当检索结果集中的两个Document的具有相同的得分时,默认按照Document的ID对结果进行排序。 下面研究几种设置/改变检索结果排序的方法。 1、改变Document的boost(激励因子) 改变boost的大小,会导致Document的得分的改变,从而按照Lucene默认的对检索结果集的排序方式,改变检索结果中Document的排序的提前或者靠后。在计算得分的时候,使用到了boost的值,默认boost的值为1.0,也就说默认情况下Document的得分与boost的无关的。一旦改变了默认的boost的值,也就从Document的得分与boost无关,变为相关了:boost值越大,Document的得分越高。 2、改变Field的boost(激励因子) 改变Field的boost值,和改变Document的boost值是一样的。因为Document的boost是通过添加到Docuemnt中Field体现的,所以改变Field的boost值,可以改变Document的boost值。 3、使用Sort排序工具实现排序 Lucene在查询的时候,可以通过以一个Sort作为参数构造一个检索器IndexSearcher,在构造Sort的时候,指定排序规则。 调用sort进行排序的方法是IndexSearcher.search,例如: IndexSearcher.search(query,sort); 关于Sort类,在其内部定义了6种构造方法: public Sort() // public Sort(SortField field) //通过构造某个域(field)的SortField对象根据一个域进行排序 public Sort(SortField[] fields) //通过构造一组域(field)的SortField对象组实现根据多个域排序 public Sort(String field) //根据某个域(field)的名称构造Sort进行排序 public Sort(String field, boolean reverse) //根据某个域(field)的名称构造SortField进行排序,reverse为true为升序 public Sort(String[] fields) //根据一组域(field)的名称构造一组Sort进行排序 4、直接使用SortField实现排序 关于SortField类,在其内部定义了7种构造方法: public SortField (String field, boolean reverse)//根据某个域(field)的名称构造SortField, reverse为false为升序 public SortField (String field, int type) public SortField (String field, int type, boolean reverse) public SortField (String field, Locale locale) public SortField (String field, Locale locale, boolean reverse) public SortField (String field, SortComparatorSource comparator) public SortField (String field, SortComparatorSource comparator, boolean reverse) type对应的值分别为: SortField. SCORE 按积分排序 SortField. DOC 按文档排序 SortField. AUTO 域的值为int、long、float都有效 SortField.STRING 域按STRING排序 SortField..FLOAT SortField.LONG SortField.DOUBLE SortField.SHORT SortField.CUSTOM 通过比较器排序 SortField.BYTE 5、自定义排序 Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧

lucene搜索时同义词怎么处理

这个要看你的搜索关键词是什么,采用的分词器是什么,比如你搜索的关键词是“搜索引擎”,如果采用的分词器的分词结果就包含“搜索引擎‘这个词,那么采用TermQuery就可以了;如果采用的分词器的分词结果不是“搜索引擎‘这个词,而是”搜索“和”引擎“这两个词,那么要采用PhraseQuery,setSlop(0),这样就可以搜索出同时包含”搜索“和”引擎“这两个词并且这两个词紧挨着的所有文章了。

lucene 得分一样怎么排序

Lucene的默认排序是按照Document的得分进行排序的。当检索结果集中的两个Document的具有相同的得分时,默认按照Document的ID对结果进行排序。下面研究几种设置/改变检索结果排序的方法。1、改变Document的boost(激励因子)改变boost的大小,会导致Document的得分的改变,从而按照Lucene默认的对检索结果集的排序方式,改变检索结果中Document的排序的提前或者靠后。在计算得分的时候,使用到了boost的值,默认boost的值为1.0,也就说默认情况下Document的得分与boost的无关的。一旦改变了默认的boost的值,也就从Document的得分与boost无关,变为相关了:boost值越大,Document的得分越高。2、改变Field的boost(激励因子)改变Field的boost值,和改变Document的boost值是一样的。因为Document的boost是通过添加到Docuemnt中Field体现的,所以改变Field的boost值,可以改变Document的boost值。3、使用Sort排序工具实现排序Lucene在查询的时候,可以通过以一个Sort作为参数构造一个检索器IndexSearcher,在构造Sort的时候,指定排序规则。调用sort进行排序的方法是IndexSearcher.search,例如:IndexSearcher.search(query,sort);关于Sort类,在其内部定义了6种构造方法:publicSort()//publicSort(SortFieldfield)//通过构造某个域(field)的SortField对象根据一个域进行排序publicSort(SortField[]fields)//通过构造一组域(field)的SortField对象组实现根据多个域排序publicSort(Stringfield)//根据某个域(field)的名称构造Sort进行排序publicSort(Stringfield,booleanreverse)//根据某个域(field)的名称构造SortField进行排序,reverse为true为升序publicSort(String[]fields)//根据一组域(field)的名称构造一组Sort进行排序4、直接使用SortField实现排序关于SortField类,在其内部定义了7种构造方法:publicSortField(Stringfield,booleanreverse)//根据某个域(field)的名称构造SortField,reverse为false为升序publicSortField(Stringfield,inttype)publicSortField(Stringfield,inttype,booleanreverse)publicSortField(Stringfield,Localelocale)publicSortField(Stringfield,Localelocale,booleanreverse)publicSortField(Stringfield,SortComparatorSourcecomparator)publicSortField(Stringfield,SortComparatorSourcecomparator,booleanreverse)type对应的值分别为:SortField.SCORE按积分排序SortField.DOC按文档排序SortField.AUTO域的值为int、long、float都有效SortField.STRING域按STRING排序SortField..FLOATSortField.LONGSortField.DOUBLESortField.SHORTSortField.CUSTOM通过比较器排序SortField.BYTE5、自定义排序Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口.在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧

lucene这个单词怎么读

lu Sen

lucene最大能支持多大数据量的查询,且速度很好

用solr或者es吧 升级版

Lucene需要索引的文本文件太大,怎么解决

就报错来看,还没有用到Lucene就出错了,意思是只到第一行就虚拟机内存溢出了,可以考虑把源文件进行切割,如把10M的文本切成5个1M的,建议你试一下给一个可以切分文件的程序,可把它作为预处理的一部分public static void splitToSmallFiles(File file, String outputpath) throws IOException {int filePointer = 0;int MAX_SIZE = 10240000;BufferedWriter writer = null;BufferedReader reader = new BufferedReader(new FileReader(file));StringBuffer buffer = new StringBuffer();String line = reader.readLine();while (line != null) {buffer.append(line).append("\r");if (buffer.toString().getBytes().length >= MAX_SIZE){writer = new BufferedWriter(new FileWriter(outputpath + "output" + filePointer + ".txt"));writer.write(buffer.toString());writer.close();filePointer++;buffer = new StringBuffer();}line = reader.readLine();}writer = new BufferedWriter(new FileWriter(outputpath + "output" + filePointer + ".txt"));writer.write(buffer.toString());writer.close();}

lucene4.2 这样写怎么检索不出来内容

你如果用的是不可索引的Field,那么肯定查不出来,如果用StringField,你需要分词查,那也查不出来(StringField("a", "中华人民共和国", Field.Store.YES)你查询共和国是查不出来的)org.apache.lucene.document.StringField这个是可索引的,不分词的org.apache.lucene.document.TextField这个是可索引的,分词的

使用lucene建立索引时,出现write.lock,求高手修改,代码如下

我感觉应该是fileReader这个函数出错了,如果fileDir目录下有子目录,或者这个目录下有比较大的文件,获取内容就会失败,这样就不会执行ndexWriter.close();这句。程序中应该加一些异常判断和保护就可以了。

lucene 怎么设置查询的关键字查询匹配度100%

这个要看你的搜索关键词是什么,采用的分词器是什么,比如你搜索的关键词是“搜索引擎”,如果采用的分词器的分词结果就包含“搜索引擎‘这个词,那么采用TermQuery就可以了;如果采用的分词器的分词结果不是“搜索引擎‘这个词,而是”搜索“和”引擎“这两个词,那么要采用PhraseQuery,setSlop(0),这样就可以搜索出同时包含”搜索“和”引擎“这两个词并且这两个词紧挨着的所有文章了。

在Lucene中删除索引,使用writer.optimize();//优化操作使删除生效,可是这一句老是有错,求大神指教。

IndexReader提供了两种方法:reader.DeleteDocument(int docNum)reader.DeleteDocuments(Term term)前者是根据文档的编号来删除该文档,docNum是该文档进入索引时Lucene的编号,是按照顺序编的;后者是删除满足某一个条件的多个文档。在执行了DeleteDocument或者DeleteDocuments方法后,系统会生成一个*.del的文件,该文件中记录了删除的文档,但并未从物理上删除这些文档。此时,这些文档是受保护的,当使用Document doc = reader.Document(i)来访问这些受保护的文档时,Lucene会报“Attempt to access a deleted document”异常。如果一次需要删除多个文档时,可以用两种方法来解决:1. 删除一个文档后,用IndexWriter的Optimize方法来优化索引,这样我们就可以继续删除另一个文档。2. 先扫描整个索引文件,记录下需要删除的文档在索引中的编号。

lucene 不分词为什么搜不到东西

您去看看lucene的实现原理吧 没有分词无法建立索引库 自然搜不到

Lucene:怎样判断一个文件是否已经被创建了索引

你用Lucene建立索引的时候IndexWriter writer = new IndexWriter(indexdir,new StandardAnalyzer(), true);第三个参数当为TRUE时是会删除同一个目录下的索引的,这是在初次创建索引时使用以后每次增量索引直接设置为FALSE即可,这样直接将后面新建立的索引添加到索引文件中,不会覆盖原来建立的索引。当删除索引时我们可以找到对应的索引ID,然后删除索引,将删除掉索引文件中的该条记录,同时在同目录下生成一个删除索引的记录问价,为-DEL文件,便于后面恢复删除的索引。以上解答希望你能理解,建个简单的索引试试就可以知道的

lucene 查出来的content为空,title 不为空,该怎么显示啊

1、您的document里面有该字段;2、您在addField内容这个字段的时候,需要把设置Field.Store.YES。

关于Lucene怎么使用SpanQuery进行模糊搜索

SpanQuery是按照词在文章中的距离或者查询几个相邻词的查询。打个比方:如“中华人民共和国” 用“中国“做为关键字, 跨度为某个值,如5。跨度代表 中 和国之间的长度。。lucene的:SpanQuery包括以下几种: SpanTermQuery:词距查询的基础,结果和TermQuery相似,只不过是增加了查询结果中单词的距离信息。 SpanFirstQuery:在指定距离可以找到第一个单词的查询。 SpanNearQuery:查询的几个语句之间保持者一定的距离。 SpanOrQuery:同时查询几个词句查询。 SpanNotQuery:从一个词距查询结果中,去除一个词距查询。所以这种Query不能进行模糊搜索,要进行模糊查询,可以选择FuzzyQuery或者WildcardQuery。

lucene索引附件,怎么获取附件的内容。

个人认为,第一种方法相对靠谱一点。毕竟你的目的是可以检索到附件。优化建议:提取摘要。索引全部附件不太可取,这对硬件的压力也很大。可以选择新增一个域,用来保存附件的摘要。从那行代码来看,附件应该都是文档类吧。lucene的Highlighter貌似有这个功能,也可以考虑用其它方式实现。摘要+附件名,附件检索的目的完全可以达到了。增加相关域,根据对附件的检索需求,可以使用tika读取更多的相关信息,比如:附件名、附件大小、作者、时间、附件摘要,等相关信息。加上这些内容,一般的需求都能满足了。

lucene通过文件内容查询文件路径出现重复记录,怎么解决

建索引代码: private Document[] fileContentConvertDoc() { File f = new File(fileLuceneConfig.getDocFilePath()); List<File> allowFiles = new LinkedList<File>(); allowFiles = getAllowFiles(f, allowFiles); Document[] documents = new Document[allowFiles.size()]; int i = 0; for (File tmp : allowFiles) { this.baseExtractor = AbstractExtractorFactory.getBaseExtractor(tmp .getName()); documents[i] = new Document(); // 文件名,不分词的索引,但存储 documents[i].add(new Field("fileName", tmp.getName(), Field.Store.YES, Field.Index.NOT_ANALYZED)); // 文件绝对路径,不索引,但存储 documents[i].add(new Field("filePath", tmp.getAbsolutePath(), Field.Store.YES, Field.Index.NO)); // 文件内容,分词索引,但不存储,根据路径来加载 try { documents[i].add(new Field("fileContent", baseExtractor .getContent(new FileInputStream(tmp)), Field.Store.NO, Field.Index.ANALYZED)); } catch (FileNotFoundException e) { log.debug(new StringBuffer("文件名为:").append(tmp.getName()).append("的文件没有找到,无法对该文件内容建立索引!")); } i++; } return documents; } public void indexDocs() { FSDirectory fsDirectory = null; try { fsDirectory = FSDirectory.open(new File(luceneConfig.getIndexDirPath())); RAMDirectory ramDirectory = new RAMDirectory(); IndexWriter fsWriter = new IndexWriter(fsDirectory, AnalyzerFactory.getAnalyzer(luceneConfig), true, MaxFieldLength.UNLIMITED); IndexWriter ramWriter = new IndexWriter(ramDirectory, AnalyzerFactory.getAnalyzer(luceneConfig), true, MaxFieldLength.UNLIMITED); Document[] documents = this.luceneConfig.getAbstractDocument().getDocuments();这里实际就是调用上面那个方法将每个目标目录下每个文件构建成单独的Document int i = 0; for (Document d : documents) { ramWriter.addDocument(d); if (i % 10 == 0) { fsWriter.addIndexesNoOptimize(new Directory[]{ramDirectory}); ramWriter.close(); ramWriter = new IndexWriter(ramDirectory, AnalyzerFactory.getAnalyzer(luceneConfig), MaxFieldLength.UNLIMITED); } fsWriter.optimize(); fsWriter.commit(); } fsWriter.close(); ramWriter.close(); } catch (IOException e) { e.printStackTrace(); } 搜索代码:通过fileContent内容找出对应的filePath public String[] searchDoc(SearchModel searchModel, String returnField) { try { Analyzer analyzer = AnalyzerFactory.getAnalyzer(luceneConfig); QueryParser parser = new QueryParser(Version.LUCENE_30,searchModel.getSearchField(),analyzer); Query query = parser.parse(searchModel.getSearchContent()); IndexSearcher seacrcher = new IndexSearcher(FSDirectory.open(new File(luceneConfig.getIndexDirPath())),true); TopDocs ts = seacrcher.search(query,null,100); int totalHits = ts.totalHits; ScoreDoc[] scoreDocs = ts.scoreDocs; String[] values = new String[scoreDocs.length]; for (int i = 0; i < scoreDocs.length; i++) { //根据命中的文档的内部编号获取该文档 Document hitDoc = seacrcher.doc(scoreDocs[i].doc); //获取该文档指定域的值 values[i] = hitDoc.getField(returnField).stringValue(); System.out.println(values[i]); } return values; }catch (FileNotFoundException e) { if (-1 < e.getMessage().indexOf("no segments* file found")) { log.error(new StringBuffer(luceneConfig.getIndexDirPath()).append("目录没有索引文件!")); } } catch (ParseException e) { e.printStackTrace(); } catch (CorruptIndexException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { FileLuceneConfig fileLuceneConfig = new FileLuceneConfig("E:\Lucene\test\target"); fileLuceneConfig.setIndexDirPath("E:\Lucene\test\index\file");//这是索引存放目录 fileLuceneConfig.setAnalyzerType("SC"); SearchModel searchModel = new SearchModel("人民","fileContent"); LuceneSearcher luceneSearcher = new LuceneSearcher(fileLuceneConfig); luceneSearcher.searchDoc(searchModel,"filePath"); } 查询结果,有重复记录: E:Lucene est argetc.txt E:Lucene est arget.txt E:Lucene est arget.txt 这里,我们先不管分词器如何分词,我希望出来的结果应该是: E:Lucene est argetc.txt E:Lucene est arget.txt 不会出现两条E:Lucene est arget.txt记录,请高手指定,为什么这里会有重复,如何做才能得到不重复的记录呢?

Lucene 3.4 中文分词,

3.4 修改了Tokenizer 的接口,见incrementToken() 方法,原来是没有的。不兼容之前的,所以需要修改一下。

lucene 查询部分字段总是返回 null

应该可以帮到你:Document doc = new Document(); Field FieldPath = new Field("path",file.getCanonicalPath(), Field.Store.YES, Field.Index.NO);Field FieldBody = new Field("contents", txtReader, Field.Store.YES, Field.Index.ANALYZED,Field.TermVector.WITH_POSITIONS_OFFSETS); doc.add(FieldPath); doc.add(FieldBody); writer.addDocument(doc);注:IndexWriter writer = new IndexWriter(FSDirectory.open(INDEX_DIR),analyzer, true, IndexWriter.MaxFieldLength.LIMITED);

如何获取Lucene索引文件中的所有关键词

获取Lucene中的主要的索引文件关键字方法:1.索引块文件这个文件包含了索引中的索引块信息,这个文件包含了每个索引块的名字以及大小等信息。2.域信息文件我们知道,索引中的文档由一个或者多个域组成,这个文件包含了每个索引块中的域的信息。3.索引项信息文件这是索引文件里面最核心的一个文件,它存储了所有的索引项的值以及相关信息,并且以索引项来排序。4.频率文件5.位置文件这个文件包含了索引项在每个文档中出现的位置信息,可以利用这些信息来参与对索引结果的排序。

lucene创建了索引,是不是已经等于缓存了所有数据了?

看来楼主是刚接触lucene。lucene在磁盘上建立的索引,就是数据内容的本身,索引一旦建立,就和数据库没有任何关系了。按楼主的说法就是:已经包含了全部的内容。lucene的数据是不是缓存到本地,这个问题要看自己的设置。在建立索引的时候,有两种方式,一个是在内存中建立索引,一个是在本地磁盘建立索引。第一种方式,当电脑重启之后就会消失。第二种方式是在本地磁盘建立了文件,可以被长期保留。

lucene复合模糊查询如何实现?

String queryString = "site:1 AND channel:1 AND title:*lucene*";QueryParsernew parser = new QueryParser(参数自己写,默认字段传null);parser.setAllowleading...(true);具体怎么写自己查API吧Query query = parser(参数自己写).parse(queryString);searcher.search(query,100);根据自己的印象写的,手头没有api,剩下的你自己写吧。

lucene 创建索引 document。add 报错

报什么异常,能贴出来么?

lucene检索,必须完全包含我筛选的关键字,只包含其中一个字的要过滤掉,怎么设置 ?

这个要看你的搜索关键词是什么,采用的分词器是什么,比如你搜索的关键词是“搜索引擎”,如果采用的分词器的分词结果就包含“搜索引擎‘这个词,那么采用TermQuery就可以了;如果采用的分词器的分词结果不是“搜索引擎‘这个词,而是”搜索“和”引擎“这两个词,那么要采用PhraseQuery,setSlop(0),这样就可以搜索出同时包含”搜索“和”引擎“这两个词并且这两个词紧挨着的所有文章了。

lucene 怎么和 动态参数排序

Lucene的默认排序是按照Document的得分进行排序的。当检索结果集中的两个Document的具有相同的得分时,默认按照Document的ID对结果进行排序。 下面研究几种设置/改变检索结果排序的方法。 1、改变Document的boost(激励因子) 改变boost的大小,会导致Document的得分的改变,从而按照Lucene默认的对检索结果集的排序方式,改变检索结果中Document的排序的提前或者靠后。在计算得分的时候,使用到了boost的值,默认boost的值为1.0,也就说默认情况下Document的得分与boost的无关的。一旦改变了默认的boost的值,也就从Document的得分与boost无关,变为相关了:boost值越大,Document的得分越高。 2、改变Field的boost(激励因子) 改变Field的boost值,和改变Document的boost值是一样的。因为Document的boost是通过添加到Docuemnt中Field体现的,所以改变Field的boost值,可以改变Document的boost值。 3、使用Sort排序工具实现排序 Lucene在查询的时候,可以通过以一个Sort作为参数构造一个检索器IndexSearcher,在构造Sort的时候,指定排序规则。 调用sort进行排序的方法是IndexSearcher.search,例如: IndexSearcher.search(query,sort); 关于Sort类,在其内部定义了6种构造方法: public Sort() // public Sort(SortField field) //通过构造某个域(field)的SortField对象根据一个域进行排序 public Sort(SortField[] fields) //通过构造一组域(field)的SortField对象组实现根据多个域排序 public Sort(String field) //根据某个域(field)的名称构造Sort进行排序 public Sort(String field, boolean reverse) //根据某个域(field)的名称构造SortField进行排序,reverse为true为升序 public Sort(String[] fields) //根据一组域(field)的名称构造一组Sort进行排序 4、直接使用SortField实现排序 关于SortField类,在其内部定义了7种构造方法: public SortField (String field, boolean reverse)//根据某个域(field)的名称构造SortField, reverse为false为升序 public SortField (String field, int type) public SortField (String field, int type, boolean reverse) public SortField (String field, Locale locale) public SortField (String field, Locale locale, boolean reverse) public SortField (String field, SortComparatorSource comparator) public SortField (String field, SortComparatorSource comparator, boolean reverse) type对应的值分别为: SortField. SCORE 按积分排序 SortField. DOC 按文档排序 SortField. AUTO 域的值为int、long、float都有效 SortField.STRING 域按STRING排序 SortField..FLOAT SortField.LONG SortField.DOUBLE SortField.SHORT SortField.CUSTOM 通过比较器排序 SortField.BYTE 5、自定义排序 Lucene中的自定义排序功能和Java集合中的自定义排序的实现方法差不多,都要实现一下比较接口. 在Java中只要实现Comparable接口就可以了.但是在Lucene中要实现SortComparatorSource接口和ScoreDocComparator接口.在了解具体实现方法之前先来看看这两个接口的定义吧

小型系统有必要用到lucene吗

没必要。如果数据在千万级以下,完全可以通过索引、建分区表等方式提升性能。使用lucene对性能提升不大,反而会使系统更加臃肿。当然,如果这个小型系统存储的全是文本文档,那就另当别论了。

lucene按匹配度排序是怎么做到的

cene的搜索结果默认按相关度排序,这个相关度排序是基于内部的Score和DocID,Score又基于关键词的内部评分和做索引时的boost。默认Score高的排前面,如果Score一样,再按索引顺序,先索引的排前面。那么有人问了,如果我要先索引的排后面怎么办呢?隐士研究了源码后发现这是相当简单的事情。以下代码基于Lucene 2.0。看Sort的默认构造函数,相关度就是SortField.FIELD_SCORE和SortField.FIELD_DOC的组合。java 代码/**

怎么用java的lucene对数据库进行检索

lucene是一个公用的全文索引组件,它的目标是把各种各样格式的数据转化成lucene特有的索引文件格式,这样才能通过lucene的高速检索机制进行全文检索。你的数据来源可以是关系数据库,可以是word、execl、txt文档,可以是html网页,对于这些数据源,你必须将它们内部的数据读取出来,并封装成lucene的document实例,之后让lucene帮你构建索引。举个例子:你的有一个用户数据库,里面存储了几十万的用户信息,你现在要对这个数据库进行全文索引,那么你要做的事情是:1.写一段传统的JDBC程序,讲每条的用户信息从数据库读取出来2.针对每条用户记录,建立一个lucene documentDocument doc = new Document();并根据你的需要,将用户信息的各个字段对应luncene document中的field 进行添加,如:doc.add(new Field("NAME","USERNAME", Field.Store.YES,Field.Index.UN_TOKENIZED));然后将该条doc加入到索引中, 如: luceneWriter.addDocument(doc);这样就建立了lucene的索引库3.编写对索引库的搜索程序(看lucene文档),通过对lucene的索引库的查找,你可以快速找到对应记录的ID4.通过ID到数据库中查找相关记录上面阐述了lucene的大体用法,不知道是不是说的很清楚。

lucene中分词和索引的区别

ucene中分词和索引的区别如下:1、分词器,对文本资源进行切分,将字符文本串按照一定的规则切分为一个个可以进行索引的最小单位(关键词),以便检索时使用。2、索引文件结构索引库是一组索引文件的集合。索引文件的检索:索引表规模相对较小,文档集合规模较大。进行检索时,先从检索索引表开始,然后找到相对应的文档。如果查询中仅包含一个关键词,则在索引表中找到该关键词,并取出它所对应的文档就可以了。如果查询中包含多个关键词,则需要将各个关键字检索出的文档记录进行合并。索引文件的维护:维护索引常使用三个操作:插入、删除和更新文档。但是更新操作需要较高的代价,因为文档修改后(即使是很小的修改),也可以造成文档中的很多的关键词的位置发生了变化,这时需要频繁的读取和修改记录,这种代价是相当高的。因此,一般不进行更新操作,而是使用“先删除,后创建”的方式代替更新操作。代码如下:

请问一下Lucene对文档内容建立索引后是否将文档存储?

Lucene搜索时都是搜索的索引库,并不搜索原文档。在索引时,Lucene首先将文档内容进行分词,然后做成倒排索引,搜索是搜索该倒排索引。建立索引时,可以针对每个字段(域)进行不同的索引设置,可设置是否分词?是否存储?以及使用到的分词器。此处设置的是否存储是指该字段(域)是否作为一个整体保留(不分词)。例如:文档一:”巴西世界杯很好看!“在索引时,如果是分词索引,则:巴西/世界杯/很/好看如果搜索世界杯,则文档一就会被搜索出来,在索引中保存的是巴西/世界杯/很/好看这样的分词。如果索引时除了分词之外还存储该字段(域),则:巴西/世界杯/很/好看/巴西世界杯很好看可以看出,索引中将文档一的所有内容作为一个分词,搜索时必须输入整个字段内容才会搜索到就想到这么多了,希望你能明白。

海量数据环境下,Lucene 的索引性能如何优化?

很多人会抱怨 Lucene 在数据量增加到一定规模的时候,性能会出现明显下降,对于并发用户访问的支持能力也比较弱。其实在工程师所遇到的绝大多数环境下 Lucene 的性能问题,往往是因为系统没有经过良好的调优。而非简单的 Lucene 设计缺陷所造成。 当前使用 Lucene 的知名网站包括,Stack Exchange,旗下全球最大的事实性问答网站 StackOverFlow.com . 基于Lucene 文档 “How to make indexing faster”,我们可以看到如下经验可能可以应用于 Lucene 优化。 确定的确需要进行索引性能调优很多场景之下,性能问题其实表现为整体数据架构设计的问题,而不仅仅是通过索引所可以解决的。在决定进行索引性能调优之前,可能需要首先判断,是否数据架构上出现了情况。 确定在使用最新版本的LuceneLucene也是在不断发展之中。新版本的Lucene通常性能都会有些改善。 使用更快的硬件,例如,改善IO系统性能通常硬件性能的改善对于系统整体性能提升是立竿见影的。例如,通过SSD硬盘(Solid-State Disk,固态硬盘)取代通常的 SATA 或者 SAS 硬盘,将可以获得明显的系统性能提升。 在建立索引过程中,使用单例的 Writer基于内存执行 Flush 而不是基于 document count在Lucene 2.3 及其以上系统中,IndexWriter可以基于内存执行Flush操作。调用 writer.setRAMBufferSizeMB() 可以设置Buffer大小。 尽量多使用内存内存越多,Lucene应对海量数据的时候性能明显加强。 关闭复合文件格式(Compound file format)调用setUseCompoundFile(false),可以关闭。建立复合文件,将可能使得索引建立时间被拉长,有可能达到7%-33%。而关闭复合文件格式,将可能大大增加文件数量,而由于减少了文件合并操作,索引性能被明显增强。 重用文档与字段实例这是在 Lucene 2.3 之后才有的一个新技术。在之前如果要修改某个记录,需要删除掉索引中的文档,然后重新添加。而新的方法通过 setValue 实现。这将有助于更有效的减少GC开销而改善性能。 在存储字段数据以及执行 term vectors 的时候,使用同样的字段顺序添加文档这样将有助于保证合并操作的性能。 在打开 IndexWriter 的时候,设置 autoCommit = false同传统的数据库操作一样,批量提交事务性能总是比每个操作一个事务的性能能好很多。 同样,对于实时性要求不是很强的系统。通过标记,并定时进行索引和优化,也将比随时进行索引操作性能能改善很多。 不要使用太多的小字段,如果字段过多,尝试将字段合并到一个更大的字段中,以便于查询和索引适当增加 mergeFactor,但是不要增加的太多。关闭所有不需要的特性使用更快的 Analyzer特别是对于中文分词而言,分词器对于性能的影响更加明显。 加快文档的构造速度通常,从数据库,文件系统,或者网络爬行过程中,都可能因为上游程序处理的性能而影响 Lucene 文档建立的速度。 除非真的需要改善索引性能,通常不要特别进行优化对于一个实例的 IndexWriter 可以使用多线程或者并发技术使用Java Profiler分析 Lucene 和调用程序的性能,并由此改善性能Index into separate indices then merge.If you have a very large amount of content to index then you can break your content into N "silos", index each silo on a separate machine, then use the writer.addIndexesNoOptimize to merge them all into one final index.

lucene中对不同的域使用不同的分析器

  在lucene使用过程中 如果要对同一IndexWriter中不同Document 不同Field中使用不同的 *** yzer 我们该如何实现呢?   通过对《lucene in action》的阅读 发现是可以解决这一问题的 lucene可以正对整个IndexWriter对象或者每一个document对象或者特定Field使用不同的分析器   Analyzer *** yzer = new StandardAnalyzer();   IndexWriter writer = new IndexWriter(direcotry *** yzer true); //   Document doc = new Document();   doc add(new Field( title this is title Field Store PRESS Field Index TOKENIZED Field TermVector WITH_POSITIONS_OFFSETS));   doc add(new Field( content this is content Field Store PRESS Field Index TOKENIZED Field TermVector WITH_POSITIONS_OFFSETS));   writer addDocument(doc); //这是大部分情况下使用的一个方法   其实还有另外一个方法 原型如下   lucene自带文档写道   addDocument(Document doc Analyzer *** yzer) Adds a document to this index using the provided *** yzer instead of the value of getAnalyzer()   所以我们还可以写成这样   writer addDocument(doc *** yzer); // 这里的 *** yzer是指另外一个你指定的 *** yzer 不同于上面的StandardAnalyzer   那么如何针对特定Field使用不同分析器呢 lucene包里面有个PerFieldAnalyzerWrapper类 解决了这一问题 这是lucene的文档里面的一段话   lucene自带文档写道   Example usage:   PerFieldAnalyzerWrapper aWrapper = new PerFieldAnalyzerWrapper(new StandardAnalyzer());   aWrapper addAnalyzer( firstname new KeywordAnalyzer()); aWrapper addAnalyzer( lastname new KeywordAnalyzer());   In this example StandardAnalyzer will be used for all fields except firstname and lastname for which KeywordAnalyzer will be used   A PerFieldAnalyzerWrapper can be used like any other *** yzer for both indexing and query parsing PreFieldAnalyzerWrapper类的构造函数中需要一个默认的分析器作为参数 为了给不同的Field指定不同的 *** yzer 就需要调用该类的addAnalyzer()方法 上面的E文相信大家都能看懂的 就不需要我来翻译了 我的英语很差 着急啊 呵呵   也就是说大家以前初始化分析器的时候用这一句:   Analyzer *** yzer = new StandardAnalyzer();   现在可以改用   PerFieldAnalyzerWrapper *** yzer = new PerFieldAnalyzerWrapper(new StandardAnalyzer());   然后如果需要特定域的分析器就调用addAnalyzer方法    *** yzer addAnalyzer( fieldname new KeywordAnalyzer()); lishixinzhi/Article/program/Java/hx/201311/25894

Lucene可以对MYSQL进行全文检索吗

java的开源的免费全文检索工具Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。 Lucene的作者:Lucene的贡献者Doug Cutting是一位资深全文索...

lucene,solr有什么区别

Lucene是一个开放源代码的全文检索引擎工具包,即它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎.Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Solr Get操作提出查找请求,并得到XML格式的返回结果;Solr和Lucene的本质区别有以下三点:搜索服务器,企业级和管理。Lucene本质上是搜索库,不是独立的应用程序,而Solr是。Lucene专注于搜索底层的建设,而Solr专注于企业应用。Lucene不负责支撑搜索服务所必须的管理,而Solr负责。所以说,一句话概括Solr: Solr是Lucene面向企业搜索应用的扩展

请问Lucene开源工具具有何种用途?它是如何实现对相关文档实现排名打分的?

你的问题跟我要问的一字不差啊!

1,什么是Lucene,Lucene能干什么

1、什么是lucene Lucene是一个全文搜索框架,而不是应用产品。因此它并不像http://www.baidu.com/ 或者google Desktop那么拿来就能用,它只是提供了一种工具让你能实现这些产品。 2、lucene能做什么 要回答这个问题,先要了解lucene的本质。实际上lucene的功能很单一,说到底,就是你给它若干个字符串,然后它为你提供一个全文搜索服务,告诉你你要搜索的关键词出现在哪里。知道了这个本质,你就可以发挥想象做任何符合这个条件的事情了。你可以把站内新闻都索引了,做个资料库;你可以把一个数据库表的若干个字段索引起来,那就不用再担心因为“%like%”而锁表了;你也可以写个自己的搜索引擎……

Lucene 的存储结构概述

lucene的检索算法属于索引检索,即用空间来换取时间,对需要检索的文件、字符流进行全文索引,在检索的时候对索引进行快速的检索,得到检索位置,这个位置记录检索词出现的文件路径或者某个关键词。 lucene 在存储它的全文索引结构时,是有层次结构的,这涉及到5个层次:索引(Index);段(Segment);文档(Document);域(Field);词(Term),他们的关系如下图所示:(lucene 索引存储结构概念图) 下图是Lucene生成的索引的一个实例,右边是对这5个层次的描述: Lucene的索引结构是有层次结构的,主要分以下几个层次: Lucene的索引结构中,即保存了正向信息,也保存了反向信息。 所谓正向信息: 所谓反向信息: 段(Segment) 的控制策略 在建立索引的时候对性能影响最大的地方就是在将索引写入文件的时候, 所以在具体应用的时候就需要对此加以控制: Lucene默认情况是每加入10份文档(Document)就从内存往index文件写入并生成一个段(Segment) ,然后每10个段(Segment)就合并成一个段(Segment). 这些控制的变量如下: MaxMergeDocs用于控制一个segment文件中最多包含的Document数.比如限制为100的话,即使当前有10个segment也不会合并,因为合并后的segment将包含1000个文档,超过了限制。 MinMergeDocs用于确定一个当内存中文档达到多少的时候才写入文件,该项对segment的数量和大小不会有什么影响,它仅仅影响内存的使用,进一步影响写索引的效率。

Lucene该怎么读

卢僧

电视剧niptuck是什么意思?

  整容室,讲的就是整容的各个案例,和主角(两个整容医生)的故事  这是下载地址http://bt.ydy.com/index.php?language=cn&fid=5&title=%D5%FB%C8%DD%CA%D2&page_num_id=4&time_limit_id=1  第一季在ppstream上就可以在线看  [简 介]  故事由南佛罗里达有一家名为“麦克纳马拉-特洛伊”的外科整形手术中心开始,这家手术中心的拥有者就是麦克纳马拉医生和特洛伊医生。除了整容室的工作之外,两位即将步入中年的医生同样有着烦扰的个人生活需要操心。(在第二季开始,两人正好共同步入40岁。)  西恩-麦克纳马拉与妻子的感情出现了危机,他正努力设法让两人的关系恢复到重前。克里斯蒂安-特洛伊则是个充满魅力的“花花公子”,他没有固定的感情生活,表面潇洒风光的背后也是一颗寂寞之心。克里斯蒂安因为分心等其他工作创下的麻烦,都需要西恩来替他解决。  在第一季开头,两位外科医生因为毒枭头子埃斯科博-格拉多而走到了一起。埃斯科博强迫两人为他实施免费手术,而且必须随叫随到。西恩与妻子朱丽亚的婚姻恰恰因此出现危机。先是西恩和朱丽亚两人的一个孩子流产,接着西恩被告知一个叫吉娜的女人怀了他的孩子……  [剧集概况]  这部2003年开播的热门剧集,描述了两位处于中年危机、前途茫茫的整容医生特洛伊和麦克纳马拉,为形形色色的人物操刀隆胸、吸脂、变性……  该剧荣获2004年艾美奖“最佳道具化妆”,2004年美国电视剧协会“最引人注目奖”提名,2005年1月17日举行的美国电影电视“金球奖”最佳男演员、最佳女演员、最佳电视剧提名,并最终夺得“剧情类最佳系列剧”大奖。  该剧在首播时就创下了16.2%的收视率,之后节节攀升,现还在美国热播,收视率一直维持在22%左右,成为美国有线电视频道收视最高的节目。目前,《整容室》第一季每周二晚在明珠台热播,明珠台的负责人表示会根据观众反响的热度决定是否购入第二集;而在美国,制片方已经确定第三季与第四季戏分加码,由原先的每季13集增至15集,第三季将于今年夏末秋初首播。  第一季结束于2003年10月21日,共13集。第二季于2004年6月22日首播,结束于2004年10月5日,共计16集。目前制片方已经确定第三季与第四季分别播出15集。第三季的制作工作将于今年春季开始,夏末秋初首播。  [幕后]  这部2003年开播的热门剧集描述了两个处于中年危机、前途茫茫的整容医生特洛伊和麦克纳马拉的操刀过程,内容充斥暴力和血腥镜头。第一集就描写了病人因抽脂和注射肉毒杆菌手术失败,苦不堪言的情形。其中一集讲隆胸手术,有病人血淋淋的胸部赤裸展示。色情也因尺度大胆而成了其中一个卖点。  该剧由朱利安·迈克麦霍、乔莉·理查森等主演,首播时就创下了16.2%的收视率,之后节节攀升,现还在美国热播,收视率一直维持在22%左右,并获得了今年金球奖最佳男演员、最佳女演员、最佳电视剧提名,艾美奖最佳化妆奖等一系列重要奖项。乔莉·理查森还因此获得年度英国电视女演员奖。《Nip/Tuck》不仅成为美国有线电视频道收视最高的节目,甚至还受到美国主流媒体推崇,但也有不少家长抗议剧情太过暴力。  该剧编剧莱安·墨菲表示,对观众而言,《Nip/Tuck》如此受欢迎,主要是因为让人们通过观看,享受了犯罪带来的快感,他们跟着两个整形医生一起经历发生在手术室的一桩桩血腥病例,这个感觉实在很刺激。而与福克斯电视节目《天鹅》不同,《Nip/Tuck》有着扣人心弦的情节,所以第一季刚播完,就有不少追着看的影迷打电话询问第二季什么时候播。  从此意思上来讲,这不仅是一部成人肥皂剧集,更像一部真人秀,一部真实的医学表演,帮助人们了解自己所无法感知的幕后生活。  《整容室》把整容变成了一项极具刺激性的娱乐,血淋淋的整容过程和千奇百怪的整容故事,吸引了所有关注自己容貌的观众。可能有些本来对整容跃跃欲试的人,因为这部戏而打消了这个念头,因为那些整容描述太血腥可怕,躺到手术台上你就不再是一个人,而是一具即将被加工的皮囊,任医生宰割。而另一种可能的感受是,觉得整容也不过如此,没有什么大不了。《整容室》反映了整容在美国的普及程度,不只是爱美的女性要求整容,人们整容的动机五花八门,比如一对双胞胎姐妹因为太相像而要求改变,一个男人为了赢得爱情,要求改变眼球的颜色,男人也想通过整容变帅,以便泡妞。《整容室》里不只有隆胸、吸脂等常见手术,还有变性这样的大工程。  当然《整容室》除了暴力、血腥、色情,还反映了许多社会问题和家庭问题。

nip和pluck的区别?

"nip" 和 "pluck" 都有摘取或剪除的意思,但它们在使用上有一些区别。"nip" 通常用来描述小的或轻微的剪除。它可以用来描述在植物或动物身上剪去一点儿叶子或毛发,或者在除掉一些东西之前进行的预防性剪除。例如 "I need to nip these dead leaves off the plant." 我需要把这些枯叶剪掉"Pluck" 是一个动词,指的是用手或工具拔掉或摘下某物的动作。它通常用来描述摘取或拔去某些东西,如鸟羽,花朵,果实等。例如 "I plucked a rose from the garden." 我从花园里摘了一朵玫瑰。总之,"nip"更多用来描述轻微的剪除,而"pluck"更多用来描述摘取或拔去某些东西。

一般情况下buck电路效率为多少

BUCK型是降压型的DC-DC,而BOOST是升压式的DC-DC. BUCK型的基本原理: 电源通过一个电感给负载供电,同时电感储存一部分能量,然后将电源断开,只由电感给负载供电.如此周期性的工作,通过调节电源接通的相对时间,来实现输出电压的调节。 BOOST型的基本原理: 电源先给电感储能,然后,将储了能的电感,当作电源,与原来的电源串联,从而提高输出电压.如此周期性的重复. 根据调整管的工作状态,我们常把稳压电源分成两类:线性稳压电源和开关稳压电源。 线性稳压电源,是指调整管工作在线性状态下的稳压电源。而在开关电源中则不一样,开关管(在开关电源中,我们一般把调整管叫做开关管)是工作在开、关两种状态下的:开——电阻很小;关——电阻很大。 开关电源是一种比较新型的电源。它具有效率高,重量轻,可升、降压,输出功率大等优点。但是由于电路工作在开关状态,所以噪声比较大。 通过下图,我们来简单的说说降压型开关电源的工作原理。如图所示,电路由开关K(实际电路中为三极管或者场效应管),续流二极管D,储能电感L,滤波电容C等构成。当开关闭合时,电源通过开关K、电感L给负载供电,并将部分电能储存在电感L以及电容C中。由于电感L的自感,在开关接通后,电流增大得比较缓慢,即输出不能立刻达到电源电压值。一定时间后,开关断开,由于电感L的自感作用(可以比较形象的认为电感中的电流有惯性作用),将保持电路中的电流不变,即从左往右继续流。这电流流过负载,从地线返回,流到续流二极管D的正极,经过二极管D,返回电感L的左端,从而形成了一个回路。通过控制开关闭合跟断开的时间(即PWM——脉冲宽度调制),就可以控制输出电压。如果通过检测输出电压来控制开、关的时间,以保持输出电压不变,这就实现了稳压的目的。 在开关闭合期间,电感存储能量;在开关断开期间,电感释放能量,所以电感L叫做储能电感。二极管D在开关断开期间,负责给电感L提供电流通路,所以二极管D叫做续流二极管。 在实际的开关电源中,开关K由三极管或场效应管代替。当开关断开时,电流很小;当开关闭合时,电压很小,所以发热功率U×I就会很小。这就是开关电源效率高的原因。 看过完两个关于电源的FAQ后,大家可能对电源的效率计算还不了解。在后面的FAQ中,我们将专门给大家介绍。 常见的用于开关电源的芯片有:TL494,LM2575,LM2673,34063,51414等等典型的boost电路

初学做电源buck电路开关管搞不定,电路如下请多指教

即使你仿真,这个B也要给PWM信号吧?

关于服务级别协议(SLA)、运营级别协议(OLA)和支持合同(UC)的描述,不正确的是 ( )。

【答案】:A支持合同(Underpinning Contract, UC)是指组织与外部服务供座商之间签订的有关服务实施的正式合同,是SLA中的重要部分。如果IT服务不由内部部门提供,而由外部服务供应商提供,那么这一环节相当重要,因为SLA只是内部或对客户的协议,不具有法律效力,UC则是与外部服务供应商或组织签订的合同,是正规的、具备法律效力的协议。从内容上看,UC主要由依据SLA的内容加上法律条文中的责任、权利和义务构成。

多路交错并联Buck电路为什么能减小输出电压波纹

通俗的跟你讲下:每路buck的输出电压的纹波是围绕平均值上下波动的。假设第一路的纹波正好在波峰位置,而第二路的输出纹波正好在波谷位置,那么这两路叠加的话,结果等于0,也就是没有纹波了。当然这是理想情况,只是想说明交错控制可以减小纹波电压。当然如果你的驱动移相不对话。也可以可能增加纹波电压的。

多相buck电路引入原因

电流增大。多相buck电路)通过将MOSFET代替肖特基二极管引入后向转换器,原因为电流增大,可以降低整流电压,转换到核心类负载所需较低电压。

为什么BUCK电路要工作在准电流连续模式下,为什么不是连续模式,连续模式不是更好吗?

BUCK在哪个模式都可以。大电流应用都是连续模式

buck、boost.buck-boost电路中电感怎么计算

首先你要明确不管是BUCK抑或是BOOST其在开关管开通和关断期间电感上电流的上升和下降时一样的,根据电感上的电流变化率等于电感两端电压和电感值的商,若已知电感两端电压和电流变化率就可得到电感值,同样的方法可以得到输入和输出占空比。BUCK电路Lc=(Vo/2*Po*f)*(1-D),Vo=D*Vin;BOOST电路Lc=((Vo*Ts)/(2*Io))*D*(1-D)*(1-D),Vo=Vin/(1-D);

BUCK电路为什么采电感电流做闭环

BUCK电路中不可以没有电感:首先电感在BUCK电路中起到限流作用,特别是上主电瞬间,电容一开始是没有电压的,如果瞬间给的主电直接给输出电容充电,充电电流很大,会把电容炸掉。其次电感在BUCK电路中可以减少电流纹波,可以减少电容设计的容量值

什么是boost buck电路

boost电路即直流转换成直流的升压电路;buck电路即直流转换成直流的降压电路。基本元件是开关器件+电感+快恢复二极管电容等组成的两种电路拓扑方式。

BUCK电路为什么为什么能降压

就不能使用未必。因为Buck电路不能处理交流电,完全可以使用它来降压。如果220V电压是直流电,如果220V电压是交流

BUCK电路的介绍

现在有关于多相电路的直播可以看直播时间:2018.08.18 10:00 直播讲师:开关电源领域专家虞龙 直播专题:多相Buck电路的理论分析以及波形演示 此次直播报名提问后就获得1次抽奖机会!直播会议报名链接:http: 1//tj.dianyuan.com/6IY6A1去掉http后面的1

DC/DC转换器基本BUCK电路的工作过程是什么?

当开关管S导通时

buck电路如何区分连续模式与不连续模式,

Buck 电路都会有 Power MOS or Power Transistor (当开关用的), 如果 导通是很规律的, 就是连续模式, 如果导通不是很规律的 (断断续续), 就是不连续模式, 可以用示波器来观察 Power MOS 接到 Power Choke 那个点.通常 不连续模式 是用於 低输出电流时, Buck 工作於 不连续模式 可以提高 转换效率, 但是输出的 noise ripple 会比较大一些. ====================================================================可以量 电感L 接到三级管 那一点的电压波形, 用示波器观察, 如果高电位 和低电位 不是很规律 (会有一小段时间, 没有高电位), 就是不连续模式

手机中boostbuck是哪个芯片

buck型是降压型的dc-dc,而boost是升压式的dc-dc。buck型的基本原理: 电源通过一个电感给负载供电、同时电感储存一部分能量、然后将电源断开,只由电感给负载供电、如此周期性的工作,通过调节电源接通的相对时间,来实现输出电压的调节。boost型的基本原理: 电源先给电感储能,然后,将储了能的电感,当作电源,与原来的电源串联,从而提高输出电压.如此周期性的重复。降压-升压变换器(buck–boost converter)也称为buck–boost转换器,是一种直流-直流转换器。其输出电压大小可以大于输入电压,也可以小于输入电压。降压-升压变换器和返驰式变换器等效,但用单一的电感器来取代变压器。

开关电源buck电路为什么经过电感和储能滤波电容之后为什么电压就是稳定直流电压了?

Buck电路中的电感(L)和电容(C)直接构成低通滤波器,当L和C设定后,将得到一个相对直流的输出电压(因为输出电压上面会有纹波电压,只是这个电压比较小而已)。希望对你有帮助~~

buck电路和boost电路是靠什么维持直流输出的稳定的?

这两个电路都需要开关芯片,开关芯片都有电压反馈脚,电流反馈脚,通过这两个脚,截取电路的电压,电流参数,就可实现buck boost两个电路,降压,升压的动态稳定。

DC-DC电压变换器开关电源求分析。buck电路降压

你说详细哇?附图?

buckboost电路原理

Buck变换器也称降压式变换器,是一种输出电压小于输入电压的单管不隔离直流变换器。图中,Q为开关管,其驱动电压一般为PWM(Pulse、width、modulation脉宽调制)信号,信号周期为Ts,则信号频率为f=1/Ts,导通时间为Ton,关断时间为Toff,则周期Ts=Ton+Toff,占空比Dy=、Ton/Ts。Boost变换器也称升压式变换器,是一种输出电压高于输入电压的单管不隔离直流变换器。开关管Q也为PWM控制方式,但最大占空比Dy必须限制,不允许在Dy=1的状态下工作。电感Lf在输入侧,称为升压电感。Boost变换器也有CCM和DCM两种工作方式。
 首页 上一页  2 3 4 5 6 7 8 9 10 11 12  下一页  尾页