[lucene] Lucene的疑难杂症?

mniz 2010-01-07
至于你说的重用field 应该是有用的,你测试的有没有考虑并发的情况下?
imjl 2010-01-08
mniz 写道
至于你说的重用field 应该是有用的,你测试的有没有考虑并发的情况下?


你怎么测试并发的呢?

你们目前的并发情况是怎么样的呢,增量索引间隔时间是多久一次呢?增量大概多少数据呢?

要做多大规模的搜索,用多少台怎么样配置的服务器呢,什么操作系统?

如何处理索引同步,更新,异常,预热,互备,测试这些问题呢?

查询结果如何排序?比如用lucene默认的score

你们目前搜索结果是怎么个呈现,比如搜索出结果就行,,比如类似taobao的搜索有分类统计




shadowlin 2010-01-08
mniz 写道
至于你说的重用field 应该是有用的,你测试的有没有考虑并发的情况下?


并发索引么?我的数据量不大,所以就没用并发索引。不过我觉得在field重用上也不会有太大的区别吧。。
不知道你测试过没有,重用field和不重用。内存和时间开销上有啥区别不?最好能给下数据。
另外发个我重用field写的一个工具类。大家帮看下是不是那个东西写的有问题。。
public class MappedSingeltonFiled {
	Map<String,Field> filedMap=new HashMap<String,Field>();
	Map<String,NumericField> numericFieldMap=new HashMap<String,NumericField>();
	

	public Field field(String fieldName,String value,Store store,Index index){
		if(filedMap.containsKey(fieldName)){
			Field field=filedMap.get(fieldName);
			field.setValue(value);
			return field;
		}else{
			Field field=new Field(fieldName,value,store, index);
			filedMap.put(fieldName, field);
			return field;
		}
		
	}
	

	public NumericField numericField(String numericFieldName,int value,Store store,boolean index){
		if(numericFieldMap.containsKey(numericFieldName)){
			NumericField numericFieldield=numericFieldMap.get(numericFieldName);
			return numericFieldield.setIntValue(value);
		}else{
			NumericField numericField=new NumericField(numericFieldName, store, index).setIntValue(value);
			numericFieldMap.put(numericFieldName, numericField);
			return numericField;
		}
	}
	

}




用的时候就这样
private MappedSingeltonFiled mappedSingeltonFiled=new MappedSingeltonFiled();
public void xxxFunction(){
...
	document.add(mappedSingeltonFiled.field(VideoInfoDBSearchFieldName.VIDEOTYPE,videoType,Field.Store.YES, Field.Index.ANALYZED));
...
}



我测了2万条数据重用不重用都没区别。。郁闷。
mniz 2010-01-08
引用

你怎么测试并发的呢?

你们目前的并发情况是怎么样的呢,增量索引间隔时间是多久一次呢?增量大概多少数据呢?

要做多大规模的搜索,用多少台怎么样配置的服务器呢,什么操作系统?

如何处理索引同步,更新,异常,预热,互备,测试这些问题呢?

查询结果如何排序?比如用lucene默认的score

你们目前搜索结果是怎么个呈现,比如搜索出结果就行,,比如类似taobao的搜索有分类统计


我也不是并发索引,索引那个问题到不是很大

本来是打算用socket 多线程来解决的并发的情况的

我打算在晚上2-3点建立索引,我们的数据增幅每天不会太大,5000左右,索引规模目前可能只有几百万左右,还有个需要合并进来,那个有几千万,用户数大概几万吧,不过不知道并发是多少,到时候具体的在看看

操作系统Linux

排序我打算用lucene 的score 我们的排序比较简单,安一个字段,到时候在看看

至于结果什么的,我不需要去管,呈现部分由PHP去布局

其它的暂时还没想到




另外想问下,你们如何去做 纠错功能 比如说,
引用

我输入: 独自痛怎么办 
下面就会提示:您是否想要搜索:肚子痛怎么办
imjl 2010-01-08
我说得纠错功能,,是索引坏了的补救

你说的纠错,,可以从关键词,拼音,搜索热门来考虑,,,

不过觉得我还不如做相关推荐来得好,打错的毕竟少阿,有的故意打错

mniz 2010-01-08
用拼音我是觉着不可能 热门到可以考虑 因为用因为的那就没法子了


对了,类似百度的那个,怎么去实现,思路能说的详细点么?


就是上面输入框里面输入一个词,然后在页面的下面出现很多类似的关键词

当然跟热门肯定也有关系,就是那个具体点

你看我的思路是这样的,把输入的词,差分,然后在根据索引里面去匹配, 根据最热门的词语展示出来

但是问题是怎么个匹配法
Global site tag (gtag.js) - Google Analytics