并行索引.多目录

xiaoxiao2022-06-12  15

1、多字段搜索就是同时要一个以上的字段中的内容进行比较搜索,类似概念在SQL中就是select * from Table where a like '%query%' or b like '%query%'。  Lucene.net中的单个字段查询大家都比较熟悉,这里对字段content进行搜索

Query query = QueryParser.Parse(querystr,"content",new ChineseAnalyzer()); Hits hits = searcher.Search(query);

 

对多个字段查询用到一个MultiFieldQueryParser对象,该对象继承自Query,我们要对字段title,content进行搜索。

string[] fields = {"content","title"}; Query multiquery = MultiFieldQueryParser.Parse(querystr,fields,new ChineseAnalyzer()); Hits hits = searcher.Search(multiquery);

 

2、多索引目录就是要在多个索引目录的中进行比较搜索,类似概念在SQL中就是select * from TableA union select * from TableB。

IndexSearcher[] searchers = new IndexSearcher[2]; searchers[0] = new IndexSearcher(IndexPath0); searchers[1] = new IndexSearcher(IndexPath1); MultiSearcher multisearcher = new MultiSearcher(searchers); TopDocs multitopdocs = multisearcher.Search(query, null, 1000);

 

  这个搜索的结果可能有相同的信息,比如你有一条相同的信息在多个目录中索引,搜索的结果就会出现多次相同的信息。  还有一种搜索方式是用到ParallelMultiSearcher这个对象,它是从MulitSearcher继承而来。

ParallelMultiSearcher parallelmultisearcher = new ParallelMultiSearcher(searchers); TopDocs paralleltopdocs = parallelmultisearcher.Search(query, null, 1000);

 

这个搜索是对搜索后的结果进行合并,剔除重复的信息。 <script src="tag.php?action=relatetag&rtid=66" type="text/javascript"></script>

转载请注明原文地址: https://www.6miu.com/read-4933368.html

最新回复(0)