`
kobe学java
  • 浏览: 262258 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Solr 分词器(analyzer)是怎么传到Luence的

 
阅读更多

 

Solr 分词器(analyzer)是怎么传到Luence的

 (2011-11-02 17:41:48)
标签: 

solr

 

分词器

 

luence

 

it

分类: 架构与开发
Solr的分词器我们都知道,是配置在schema.xml配置文件中,不同的fieldType我们都可以给他配置分词器。Solr有两个地方分别是创建索引(INDEX)和查询(query),通过Solr的源码如下:
          
          if (queryAnalyzer==null) queryAnalyzer=analyzer;
          if (analyzer==null) analyzer=queryAnalyzer;
          if (analyzer!=null) {
            ft.setAnalyzer(analyzer);
            ft.setQueryAnalyzer(queryAnalyzer);
          }
   queryAnalyzer 为查询时用到的分词器,    analyzer为建索引时用到的分词器。从上面可以看出,如果我们没有配查询的分词  器,则用创建的分词器,同理,如果创建时的分词器为空,则用查询的分词器。如果两个都为空,就是没有分词器了。
注意,这里的analyzer和queryAnalyzer 都是TokenizerChain,里面包含了一个分词器的链。

主要问题是,Solr是在什么时候用到这些分词器的呢,通过调试,发现,Solr是在DirectUpdateHandler2的addDoc(AddUpdateCommand cmd)方法里面的两行代码如下:
 synchronized (this) {
        // adding document -- prep writer
        openWriter();
        tracker.addedDocument( cmd.commitWithin );
} // end
addDoc方法是我们新建索引时调用的。openWriter是打开indexWriter,这里会判断indexWriter是否为空,如果为空则会创建一个createMainIndexWriter实例,代码如下:
if (writer==null) {
      writer = createMainIndexWriter("DirectUpdateHandler2", false);  //这里就是new一个SolrIndexWriter实例
 }
createMainIndexWriter方法就是new一个SolrIndexWriter实例,会传一个schema给SolrIndexWriter通过构造函数。
SolrIndexWriter继承luence的IndexWriter,创建indexWriter时会把schema的analyzer传给IndexWriterConfig。
这样luence的indexWriter就分词器就保存在IndexWriterConfig上。

 

分享到:
评论

相关推荐

    IK-Analyzer 分词器所需要的配置文件、扩展词典及停用词词典 完整包下载

    IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。 采用了特有的“正向迭代最细粒度切分算法”,具有60万字/秒的高速处理能力。 采用了多子处理器分析模式,支持:英文字母(IP地址、Email、...

    lucene-5.5.3对应的源码文件

    3. 文档分析器(Analyzer):结合分词器和过滤器,根据特定语言规则对文档进行分析。 4. 倒排索引(Inverted Index):Lucene的核心数据结构,将每个单词映射到包含该单词的文档列表,便于快速查找。 二、Lucene的...

    lucene分析

    5. Searcher:搜索器是执行查询的核心,它可以是IndexSearcher(针对单个索引)或MultiSearcher(针对多个索引)。 三、Lucene的查询处理 Lucene支持多种查询语法,如布尔查询、短语查询、范围查询等。查询过程...

    lucene与sqlserver数据库实现索引的简单实例

    Lucene支持多种分词器,如StandardAnalyzer、IKAnalyzer等,选择合适的分词器对提高搜索精度至关重要。 3. **创建索引**:使用Lucene的`IndexWriter`类,将预处理后的数据转换为Lucene的文档(Document)对象,并...

    lucene索引与搜索(含jar包)

    在实际的搜索引擎开发中,Lucene 可以作为基础框架,结合其他技术如 Nutch(用于网络爬虫)和 Solr(提供更高级的搜索服务,如多字段搜索、分页、高亮显示等)来构建一个完整的搜索引擎系统。`Indexer` 和 `Searcher...

    全文检索Lucene

    索引过程包括分析(Analyzer)文本、分词(Tokenization)、建立倒排索引(Inverted Index)等步骤。 - **文档(Document)**: Lucene中的文档相当于存储信息的基本单元,可以包含多个字段(Field),每个字段有...

Global site tag (gtag.js) - Google Analytics