知识点
相关文章
更多最近更新
更多reading notes for solr source code
2019-03-27 01:14|来源: 网路
solr source code
1 org.apache.solr.common 基本的类对象
2 org.apache.solr.common.params 存取参数的类,按照参数类型不同分为很多的类,
(1) AnalysisParams 下有map,ModifiableSolrParams(LinkedHashMap),RequiredSolrParams,SolrQuery
(2) CommonParams等
3 org.apache.solr.analysis
(1) tokenizerFactory(BaseTokenizerFactory)可以按照字数(NGramTokenizerFactory)、正则、标签、关键字、
字符、俄语、树结构(TrieTokenizerFactory)、空格
(2) BaseCharFilterFactory
(3) BaseTokenFilterFactory,按照语言种类、停词、元数据(payload)、语音(?DoubleMetaphoneFilterFactory)、
带连字符的(HyphenatedWordsFilterFactory)、通配符(wildcard)、同义(synonym)
4 org.apache.solr.core
(1)AbstractSolrEventListener含QuerySenderListener,newSearcher的warm在里面
(2)core初始化相关 CoreContainer[n个CoreDescriptor];
SolrCore 包含与搜索相关的
设置/获取:ResponseHeader、Plugins、booleanQueryMaxClauseCount、getSearcher
初始化/注册:DeletionPolicy、Listeners、searcher、IndexReader(witer)、Index、HighLighter
(3)DirectoryFactory,IndexReaderFactory
(4)索引commmit时间点的保留策略 IndexDeletionPolicyWrapper
(5)JmxMonitoredMap extends ConcurrentHashMap(高并发多锁的hashmap)
(6)RequestHandlers (can Read solrconfig.xml and register the appropriate handlers),
包含LazyRequestHandlerWrapper,让lazyload的requestHandler在第一次调用该requestHandler时才初始化
(7)SolrResourceLoader包含ClassLoader和getLines
1 org.apache.solr.common 基本的类对象
2 org.apache.solr.common.params 存取参数的类,按照参数类型不同分为很多的类,
(1) AnalysisParams 下有map,ModifiableSolrParams(LinkedHashMap),RequiredSolrParams,SolrQuery
(2) CommonParams等
3 org.apache.solr.analysis
(1) tokenizerFactory(BaseTokenizerFactory)可以按照字数(NGramTokenizerFactory)、正则、标签、关键字、
字符、俄语、树结构(TrieTokenizerFactory)、空格
(2) BaseCharFilterFactory
(3) BaseTokenFilterFactory,按照语言种类、停词、元数据(payload)、语音(?DoubleMetaphoneFilterFactory)、
带连字符的(HyphenatedWordsFilterFactory)、通配符(wildcard)、同义(synonym)
4 org.apache.solr.core
(1)AbstractSolrEventListener含QuerySenderListener,newSearcher的warm在里面
(2)core初始化相关 CoreContainer[n个CoreDescriptor];
SolrCore 包含与搜索相关的
设置/获取:ResponseHeader、Plugins、booleanQueryMaxClauseCount、getSearcher
初始化/注册:DeletionPolicy、Listeners、searcher、IndexReader(witer)、Index、HighLighter
(3)DirectoryFactory,IndexReaderFactory
(4)索引commmit时间点的保留策略 IndexDeletionPolicyWrapper
(5)JmxMonitoredMap extends ConcurrentHashMap(高并发多锁的hashmap)
(6)RequestHandlers (can Read solrconfig.xml and register the appropriate handlers),
包含LazyRequestHandlerWrapper,让lazyload的requestHandler在第一次调用该requestHandler时才初始化
(7)SolrResourceLoader包含ClassLoader和getLines
5 org.apache.solr.handler和org.apache.solr.handler.admin
(1)SnapShooter
(2)ContentStreamLoader包含xml和csv两种update、delete、read数据的方式,and also can update handler which uses the JavaBin format
(3)RequestHandlerBase
SearchHandler(@dismax、相关度排序相关;
@以组件形式添加各项功能参数及对参数的处理,eg.高亮、facet、mlt、query、stats、debug;
@shard just the string like 'localhost:8080/complex/';
@ShardResponse)
AnalysisRequestHandlerBase(对request的xml进行处理,返回NamedList
@analyzeTokenStream Analyzes the given TokenStream, collecting the Tokens it produces;
@convertTokensToNamedLists;
@AnalysisContext class)
AnalysisRequestHandler(@processContent for Tokenizing doc;
@readDoc)
(4)CoreAdminHandler handleRequestBody为入口,针对各个core的状态进行加载core、重命名core、删除core等
(5)MoreLikeThisHandler (@getMoreLikeThis mlt.like(lucene function)根据req获取相似度较高的文档集合添加到response中,传入一个doc,首先获取每一个字段的TermFreqVector(即tf),然后将其添加到TermFrequencies中;
遍历TermFrequencies中所有的term,并取出其tf以及在所有指定字段中最大的df,根据df和当前索引文档数计算idf,然后计算每个term的score=tf*idf,并压入PriorityQueue,
按照score从大到小取出一定数量的term(maxQueryTerm)进行组建构建一个BooleanQuery,用创建的query进行一次检索,取出得分最高的N篇文档即可。)
(6)PluginInfoHandler 取出并呈现每个core下加载的QUERY HANDLERS、UPDATE HANDLERS、CACHE、HIGHLIGHTING 等信息
(7)ReplicationHandler 提供api供slaves从master复制,设置复制的校验、复制前的的变量准备(eg.是否commit、optimize等),以及复制后的相关动作
(@Adler32 包含校验的拷贝
@getReplicationDetails showing statistics and progress information
@FileStream class 带校验和的类)
(8)ShowFileRequestHandler web方式读取conf文件(设置文件hidden可以控制文件不被访问)
(9)SpellCheckerRequestHandler 根据空格分割字符串并按照SolrQueryRequest的extendedResults, cmd rebuild,accuracy, suggestionCount, restrictToField, and onlyMorePopular参数来
选择性增加分割后word的相关信息,eg.词频、suggestion word等
(10)SystemInfoHandler 包含core,jvm,lucene的systemInfo
(11)ThreadDumpHandler 线程信息统计current,peak=,daemon
(12)AdminHandlers 注册所有管理handlers(LukeRequestHandler、SystemInfoHandler、PluginInfoHandler、ThreadDumpHandler、ThreadDumpHandler、ShowFileRequestHandler)
6 org.apache.solr.handler.component
(1)SearchComponent 基类,子类基本都包含多shards document的整合,即按照单机和分布式搜索分别使用process、distributeProcess
(2)DebugComponent (dds debugging information to a request)
(3)FacetComponent (@countFacets ;class DistribFieldFacet used for through each facet.field, adding results from this shard ;包含操作refine
@facet_fields or facet_queries)
(4)HighlightComponent (@usePhraseHighlighter 完全匹配才高亮 @highlightMultiTerm模糊匹配高亮 used with usePhraseHightlighter=false)
(5)QueryComponent 查询类,涉及url参数的处理,获取查询结果集等
(6)QueryElevationComponent 优先级提交类,elevate.xml中设置置前显示的以及排除的id doc
(7)SpellCheckComponent 拼写检查、匹配 inform在tomcat启动时运行,加载spellcheck dic以及 convert都有默认的 (用途:你是不是要找那个关键词)
(8)StatsComponent 根据字段类型获取facet stats
(9)TermsComponent 实现自动提示功能,Return TermEnum information,rb.req.getSearcher().getReader().terms获取符合的term enum,涉及到term的词频等
(10)TermVectorComponent Return term vectors for the documents ,包含tv、tf、offsets、position、df、tf-idf等,TVMapper
(1)SearchComponent 基类,子类基本都包含多shards document的整合,即按照单机和分布式搜索分别使用process、distributeProcess
(2)DebugComponent (dds debugging information to a request)
(3)FacetComponent (@countFacets ;class DistribFieldFacet used for through each facet.field, adding results from this shard ;包含操作refine
@facet_fields or facet_queries)
(4)HighlightComponent (@usePhraseHighlighter 完全匹配才高亮 @highlightMultiTerm模糊匹配高亮 used with usePhraseHightlighter=false)
(5)QueryComponent 查询类,涉及url参数的处理,获取查询结果集等
(6)QueryElevationComponent 优先级提交类,elevate.xml中设置置前显示的以及排除的id doc
(7)SpellCheckComponent 拼写检查、匹配 inform在tomcat启动时运行,加载spellcheck dic以及 convert都有默认的 (用途:你是不是要找那个关键词)
(8)StatsComponent 根据字段类型获取facet stats
(9)TermsComponent 实现自动提示功能,Return TermEnum information,rb.req.getSearcher().getReader().terms获取符合的term enum,涉及到term的词频等
(10)TermVectorComponent Return term vectors for the documents ,包含tv、tf、offsets、position、df、tf-idf等,TVMapper
7 org.apache.solr.highlight
DefaultSolrHighlighter getPhraseHighlighter getSpanQueryScorer getFormatter getFragmenter
简单的顺序
TermQuery query = new TermQuery(new Term(“field”, “textFragment”));
Scorer scorer = new QueryScorer(query); //QueryScorer 是内置的计分器
Highlighter highlighter = new Highlighter(scorer);
TokenStream tokenStream =new SimpleAnalyzer().tokenStream(“field”,new StringReader(text));//是由分析器生成, 文本中高亮部分的起始和结束位置。
System.out.println(highlighter.getBestFragment(tokenStream,text)); //利用Fragmenter将原始文本分割成多个片段
转自:http://www.cnblogs.com/ai464068163/archive/2012/03/06/2382209
相关问答
更多-
要配置建议器的字段应为store=true 。 它不需要索引。 建议器配置将根据suggestComponet的提供配置构建字典。 name字段已存储为true ,其中suggest_ngram不存在。 您需要更新架构配置,如下所示:
您还需要提供参数suggest.dictionary ,这是您用于建议的字典。 对你而言,它是defa ... -
Solr排序问题(Solr sorting issue)[2022-09-04]
多少天,我终于在长时间的斗争中找到了问题。 谢谢大家 首先,我不知道version number in schema file中设置version number in schema file 。 根据文档的默认值,对于多值,从版本1.1开始是false 1.0: multiValued attribute did not exist, all fields are multiValued by nature 1.1: multiValued attribute introduced, false ... -
Metaphone和Wildcards不兼容。 首先,Lucene不会使用通配符,模糊匹配,正则表达式等来分析术语。因此,您尝试针对metaphone代码搜索纯文本。 所以你有了: 在索引:APTL 在查询中:abdul~0.5 我认为这更明显地说明为什么你没有得到任何比赛。 那是levenshtein距离3,这是相当可观的。 将metaphone与通配符混合起来并不是很有意义。 有效的互联网电话匹配应该是完全匹配。 变音符算法将术语缩减为代表前四个声音的代码(稍微简化)。 这是搜索相关宽松结果的两种不同且 ...
-
我能够成功地构建代码。 common.compile-core:[javac]将133个源文件编译为\ lucene-solr-multi-request-handler \ lucene \ build \ test-framework \ classes \ java [javac] error:error reading \ lucene-solr-multi-请求处理程序\ lucene的\测试框架\ lib中\蚂蚁1.8.2.jar; 打开zip文件时出错[javac] 1错误 这个错误是由于an ...
-
在Eclipse中调试Solr代码(Debug Solr code in Eclipse)[2021-12-26]
不知道你是如何导入它的:听起来就像你在寻找Source附件 。 如果直接使用Solr源代码可能会更好。 检查版本中包含的README文件,有一个用于初始化eclipse的ant任务: 设置您的ide运行“蚂蚁eclipse”。 然后,所有依赖项都使用ivy加载,您可以从IDE中运行它。 Without knowing how you imported it exactly: sounds like you are looking for Source attachment. It might be bett ... -
尝试bin / solr start -e techproducts 。 然后使用techproducts而不是开始。 再也没有开始收集, 技术产品是最近的一个。 你所做的就是启动一个服务器,但根本没有收藏。 所以你也可以在那里创建一个集合,但是你需要正确的配置来引导它。 所以,现在第一种方法可能会更容易一些。 Try bin/solr start -e techproducts. And then use techproducts instead of gettingstarted. There is n ...
-
David2342 要在solr 4.6中配置uuid字段,您可能需要以下配置
id Solr MultiCore搜索(Solr MultiCore Search)[2023-02-19]
Solr核心本质上是在应用程序服务器的相同上下文中运行的多个索引。 你可以认为它为每个用户安装了1个war文件 。 每个核心都以名称分隔,因此您必须自己跟踪哪个网址对哪个用户有效。 例如, http://host.com/solr/usercore1/select?q=test http://host.com/solr/usercore2/select?q=test 它基于config solr.xml :Solr dataSource错误(Solr dataSource error)[2022-10-03]
不,正如它在错误日志中明确指出的那样,com.microsoft.sqlserver.jdbc.SQLServerDriver缺少JDBC驱动程序jar文件。这是由供应商提供的,在本例中是microsfot sqlserver。 您需要使其可用于运行solr实例的容器。 如果您正在使用tomcat将其复制到tomcat_home \ lib目录中。 您将在sql server安装中找到jar文件或询问您的sql server admin。 No, as it clearly says in the erro ...无法启动SOLR服务(Not able to start SOLR service)[2023-02-11]
首先,您是否使用提供的过程来安装Solr服务页面461 其次,您是否在solr.in.sh脚本中为环境默认值设置了适当的覆盖(参考手册第462页)。 您还需要确保solr.in.sh文件中的LOG4J_PROPS指向您的log4j.properties文件。 还要确保SOLR_LOGS_DIR指向正确的位置。 如果一切正确,请检查log4j.properties文件中的值是否设置正确(参考手册中的第468页)。 您可以在此处获取参考手册: https : //www.apache.org/dyn/close ...