标签:
|
属性名称
|
描述
|
|
Indexed
|
Indexed Field 可以进行搜索和排序。你还可以在 indexed Field 上运行 Solr 分析过程,此过程可修改内容以改进或更改结果。
|
|
Stored
|
stored Field 内容保存在索引中。这对于检索和醒目显示内容很有用,但对于实际搜索则不是必需的。例如,很多应用程序存储指向内容位置的指针而不是存储实际的文件内容。
|
5.1 配置文件solr.xml
|
<?xml version="1.0" encoding="UTF-8" ?>
<solr persistent="false">
<cores adminPath="/admin/cores" host="${host:}"
hostPort="${jetty.port:8983}" hostContext="${hostContext:solr}">
<core name="core0" instanceDir="core0" />
<core name="core1" instanceDir="core1" />
</cores>
</solr>
|
|
public static final String DEFAULT_DEFAULT_CORE_NAME = "collection1";
public static final String DEF_SOLR_XML = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n"
+ "<solr persistent=\"false\">\n"
+ " <cores adminPath=\"/admin/cores\" defaultCoreName=\""
+ DEFAULT_DEFAULT_CORE_NAME
+ "\""
+ " host=\"${host:}\" hostPort=\"${hostPort:}\" hostContext=\"${hostContext:}\" zkClientTimeout=\"${zkClientTimeout:15000}\""
+ ">\n"
+ " <core name=\""
+ DEFAULT_DEFAULT_CORE_NAME
+ "\" shard=\"${shard:}\" collection=\"${collection:collection1}\" instanceDir=\"collection1\" />\n"
+ " </cores>\n" + "</solr>";
|
5.2 模式配置Schema.xml
5.2.1. types 部分
|
<fieldType name="string" class="solr.StrField" sortMissingLast="true"/>
<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true"/>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0" positionIncrementGap="0"/>
|
|
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
|
|
属性
|
描述
|
|
name
|
标识而已
|
|
class
|
和其他属性决定了这个fieldType的实际行为。
|
|
sortMissingLast
|
设置成true没有该field的数据排在有该field的数据之后,而不管请求时的排序规则, 默认是设置成false。
|
|
sortMissingFirst
|
跟上面倒过来,默认是设置成false
|
|
analyzer
|
字段类型指定的分词器
|
|
type
|
当前分词用用于的操作.index代表生成索引时使用的分词器query代码在查询时使用的分词器
|
|
tokenizer
|
分词器类
|
|
filter
|
分词后应用的过滤器 过滤器调用顺序和配置相同.
|
5.2.2. fileds
|
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="path" type="text_smartcn" indexed="false" stored="true" multiValued="false" termVector="true" />
<field name="content" type="text_smartcn" indexed="false" stored="true" multiValued="false" termVector="true"/>
<field name ="text" type ="text_ik" indexed ="true" stored ="false" multiValued ="true"/>
<field name ="pinyin" type ="text_pinyin" indexed ="true" stored ="false" multiValued ="false"/>
<field name="_version_" type="long" indexed="true" stored="true"/>
|
|
<dynamicField name="*_i" type="int" indexed="true" stored="true"/>
<dynamicField name="*_l" type="long" indexed="true" stored="true"/>
<dynamicField name="*_s" type="string" indexed="true" stored="true" />
|
|
<copyField source="content" dest="pinyin"/>
<copyField source="content" dest="text"/>
<copyField source="pinyin" dest="text"/>
|
|
属性
|
描述
|
|
name
|
字段类型名
|
|
class
|
java类名
|
|
indexed
|
缺省true。 说明这个数据应被搜索和排序,如果数据没有indexed,则stored应是true。
|
|
stored
|
缺省true。说明这个字段被包含在搜索结果中是合适的。如果数据没有stored,则indexed应是true。
|
|
omitNorms
|
字段的长度不影响得分和在索引时不做boost时,设置它为true。
一般文本字段不设置为true。
|
|
termVectors
|
如果字段被用来做more like this 和highlight的特性时应设置为true。
|
|
compressed
|
字段是压缩的。这可能导致索引和搜索变慢,但会减少存储空间,只有StrField和TextField是可以压缩,这通常适合字段的长度超过200个字符。
|
|
multiValued
|
字段多于一个值的时候,可设置为true。
|
|
positionIncrementGap
|
和multiValued一起使用,设置多个值之间的虚拟空白的数量
|
5.2.3. 其他配置
5.3. solr配置solrconfig.xml
5.3.1 索引indexConfig
|
属性
|
描述
|
|
useCompoundFile
|
通过将很多 Lucene 内部文件整合到一个文件来减少使用中的文件的数量。这可有助于减少 Solr 使用的文件句柄数目,代价是降低了性能。除非是应用程序用完了文件句柄,否则 false 的默认值应该就已经足够。
|
|
ramBufferSizeMB
|
在添加或删除文档时,为了减少频繁的更些索引,Solr会选缓存在内存中,当内存中的文件大于设置的值,才会更新到索引库(也就是<maxBufferedDocs>制定缓存的文档数目达到多少时会自动建立硬盘索引文件)。较大的值可使索引时间变快但会牺牲较多的内存。如两个值同时设置,满足一个就会进行刷新索引
|
|
maxBufferedDocs
|
|
|
mergeFactor
|
决定低水平的 Lucene 段被合并的频率。较小的值(最小为 2)使用的内存较少但导致的索引时间也更慢。较大的值可使索引时间变快但会牺牲较多的内存。例如:<meigeFactor>10</mergeFactor>表示,最低级的索引文件数量达到10时会合并为1个索引文件,当这样合成索引文件数目达到10个时,又会合并为更高级的索引文件
|
|
maxIndexingThreads
|
indexWriter生成索引时使用的最大线程数
|
|
unlockOnStartup
|
unlockOnStartup 告知 Solr 忽略在多线程环境中用来保护索引的锁定机制。在某些情况下,索引可能会由于不正确的关机或其他错误而一直处于锁定,这就妨碍了添加和更新。将其设置为 true 可以禁用启动锁定,进而允许进行添加和更新。
|
|
lockType
|
single: 在只读索引或是没有其它进程修改索引时使用.
native: 使用操作系统本地文件锁,不能使用多个Solr在同一个JVM中共享一个索引.
simple :使用一个文本文件锁定索引.
|
5.3.2 查询配置query
|
属性
|
描述
|
|
maxBooleanClauses
|
最大的BooleanQuery数量. 当值超出时,抛出 TooManyClausesException.注意这个是全局的,如果是多个SolrCore都会使用一个值,每个Core里设置不一样的化,会使用最后一个的.
|
|
filterCache
|
filterCache存储了无序的lucene document id集合,存储了filter queries(“fq”参数)得到的document id集合结果,还可用于facet,如果配置了useFilterForSortedQuery,那么如果查询有filter,则使用filterCache
|
|
queryResultCache
|
缓存搜索结果,一个文档ID列表
|
|
documentCache
|
缓存Lucene的Document对象,不会自热
|
|
fieldValueCache
|
字段缓存使用文档ID进行快速访问。默认情况下创建fieldValueCache即使这里没有配置。
|
|
enableLazyFieldLoading
|
若应用程序预期只会检索 Document 上少数几个 Field,那么可以将属性设置为 true。延迟加载的一个常见场景大都发生在应用程序返回和显示一系列搜索结果的时候,用户常常会单击其中的一个来查看存储在此索引中的原始文档。初始的显示常常只需要显示很短的一段信息。若考虑到检索大型 Document 的代价,除非必需,否则就应该避免加载整个文档。
|
|
queryResultWindowSize
|
一次查询中存储最多的doc的id数目.
|
|
queryResultMaxDocsCached
|
查询结果doc的最大缓存数量, 例如要求每页显示10条,这里设置是20条,也就是说缓存里总会给你多出10条的数据.让你点示下一页时很快拿到数据.
|
|
listener
|
选项定义 newSearcher 和 firstSearcher 事件,您可以使用这些事件来指定实例化新搜索程序或第一个搜索程序时应该执行哪些查询。如果应用程序期望请求某些特定的查询,那么在创建新搜索程序或第一个搜索程序时就应该反注释这些部分并执行适当的查询。
|
|
useColdSearcher
|
是否使用冷搜索, 为false时使用“预热”后的searcher
|
|
maxWarmingSearchers
|
最大“预热”searcher数量
|
5.3.3 <dataDir>
5.3.4 更新处理器的配置<updateHandler>
|
<updateHandler class="solr.DirectUpdateHandler2">
<autoCommit>
<maxDocs>10000</maxDocs>
<maxTime>1000</maxTime>
</autoCommit>
<listener event="postCommit" class="solr.RunExecutableListener">
<str name="exe">snapshooter</str>
<str name="dir">solr/bin</str>
<bool name="wait">true</bool>
<arr name="args"> <str>arg1</str> <str>arg2</str> </arr>
<arr name="env"> <str>MYVAR=val1</str> </arr>
</listener>
</updateHandler>
|
|
属性
|
描述
|
|
class
|
使用哪个类进行索引更新操作
|
|
autoCommit
|
在何时对索引数据进行提交(就是将内存中的索引写到硬盘)。上面的配置参数指明在内存中缓存的文档数目达到10000或时间达到1000时进行提交。
|
|
listener
|
配置一个“监听器”,这个“监听器”在特定的事件发生时将被触发
|
5.3.5 <requestDispatcher>
5.3.6 <requestHandler>
5.3.7 <queryResponseWriter>
5.4Solr加入中文分词器
|
<lib dir="../../../contrib/analysis-extras/lib" regex=".*\.jar" />
|
5.4.1. smartcn 分词器的安装
|
<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="0">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.SmartChineseSentenceTokenizerFactory"/>
<filter class="org.apache.lucene.analysis.cn.smart.SmartChineseWordTokenFilterFactory"/>
</analyzer>
</fieldType>
|
|
<field name ="text" type ="text_smartcn" indexed ="true" stored ="false" multiValued ="true"/>
|
5.4.2. IK 分词器的安装
|
<fieldType name="text_ik" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
|
|
<field name ="text" type ="text_ik" indexed ="true" stored ="false" multiValued ="true"/>
|
标签:
原文地址:http://www.cnblogs.com/CRXY/p/4531155.html