在调用IndexReader.open(final Directory directory)时候,在lucene3.0以上的版本中新增加属性中的readOnly默认为true(readOnly true if no changes (deletions, norms) will be made with this IndexReader),导致在删除索引的时候抛出UnsupportedOperationException。
解决方法为:
1、IndexReader源码中添加方法:
public static IndexReader open(final String path, Boolean readOnly) throws
CorruptIndexException, IOException {
return open(FSDirectory.open(new File(path)), null, null,
readOnly, DEFAULT_TERMS_INDEX_DIVISOR);
}
2、应用代码中传递一参数:
IndexReader indexReader = IndexReader.open(indexDir,false);
源码解释如下:
/** Expert: returns an IndexReader reading the index in
* the given Directory, using a specific commit and with
* a custom {@link IndexDeletionPolicy}. You should pass
* readOnly=true, since it gives much better concurrent
* performance, unless you intend to do write operations
* (delete documents or change norms) with the reader.
* @param commit the specific {@link IndexCommit} to open;
* see {@link IndexReader#listCommits} to list all commits
* in a directory
* @param deletionPolicy a custom deletion policy (only used
* if you use this reader to perform deletes or to set
* norms); see {@link IndexWriter} for details.
* @param readOnly true if no changes (deletions, norms) will be made with this IndexReader
* @param termInfosIndexDivisor Subsamples which indexed
* terms are loaded into RAM. This has the same effect as {@link
* IndexWriter#setTermIndexInterval} except that setting
* must be done at indexing time while this setting can be
* set per reader. When set to N, then one in every
* N*termIndexInterval terms in the index is loaded into
* memory. By setting this to a value > 1 you can reduce
* memory usage, at the expense of higher latency when
* loading a TermInfo. The default value is 1. Set this
* to -1 to skip loading the terms index entirely. This is only useful in
* advanced situations when you will only .next() through all terms;
* attempts to seek will hit an exception.
*
* @throws CorruptIndexException if the index is corrupt
* @throws IOException if there is a low-level IO error
*/
public static IndexReader open(final IndexCommit commit, IndexDeletionPolicy deletionPolicy, boolean readOnly, int termInfosIndexDivisor) throws CorruptIndexException, IOException {
return open(commit.getDirectory(), deletionPolicy, commit, readOnly, termInfosIndexDivisor);
}
分享到:
相关推荐
当TextBox设置了ReadOnly=”true” 后,要是在前台为控件添加了值,后台是取不到的,值为“空” 原理没想通,说不清楚微软是出于什么考虑的,不过有时是要我们能通过前台脚本来填充值,并不希望用户修改其控件内容,...
This was due to a problem where it would be freed automatically if there was a problem with the ArchiveStream when trying to open it as a zip file (possibly corrupt). Best practice is that ...
很奇怪,以前都没有过这样的怪问题,在别人机器上都能正常,想到可能和ASP.NET的版本... 解决的方法: <asp id=”Username” runat=”server” ReadOnly=”True”></asp> 去掉ReadOnly=”True”,改成 <asp:textbox
thisform.txt邮政编码.readonly=.f. thisform.txt性别.readonly=.f. thisform.txt手机.readonly=.f. thisform.txt小灵通.readonly=.f. thisform.txt住宅电话.readonly=.f. thisform.txtqq.readonly=.f. thisform....
Added TFlexFileFormat.StreamSupport property (default True), which difines, is it necessary to open file stream or give the file name only. - FIX: If the TCustomProp.Assign method calls when the ...
thisform.txt邮政编码.readonly=.f. thisform.txt性别.readonly=.f. thisform.txt手机.readonly=.f. thisform.txt小灵通.readonly=.f. thisform.txt住宅电话.readonly=.f. thisform.txtqq.readonly=.f. thisform....
input type=text maxlength="10" onfocus="jQuery(this).calendar()" readonly="true"/><br/> 显示日期时间: <input type=text maxlength="16" onfocus="jQuery(this).calendar()" readonly="true"/>...
集合了 所有的 Unix命令大全 ...telnet 192.168.0.23 自己帐号 sd08077-you0 ftp工具 192.168.0.202 tools-toolss ... 各个 shell 可互相切换 ksh:$ sh:$ csh:guangzhou% bash:bash-3.00$ ... 命令和参数之间必需用空格隔...
// Allow the user to edit the starting balance cell DataGridView1.Rows[0].ReadOnly = true; DataGridView1.Rows[0].Cells["Balance"].ReadOnly = false; // Autosize the columns. DataGridView1....
在网页中我们有时候需要控制文本输入框的...但是在JS中我们则不能食用txt_name.readonly=”readonly”来设置该属性,由于JS是区分大小写的,所以,在调用该属性的时候,我们必须使用txt_name.readOnly=true来设置。 当
凭证管理系统 ... ReadOnly = True TabOrder = 1 TitleFont.Charset = DEFAULT_CHARSET TitleFont.Color = clBlue TitleFont.Height = -11 TitleFont.Name = 'MS Sans Serif' TitleFont.Style = []
B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ...
B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ...
在JS中ReadOnly属性比较奇怪,直接创建一个对象,给该对象赋值readonly属性不能够向HTML中一样使用下面的方式: 代码如下:var x=document.createElement(“input”);...x.readOnly=true;这个平时写JS时候
B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ...
B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ...
B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ...
B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ...
B218389 - Focus does not move to the previous/next row when it passes the first/last tile within the current row if a tile control's OptionsBehavior.FocusItemOnCycle property is set to True ...