solr学习笔记

一、命令:

1、启动solr。

>>cd bin
>>./solr start –e techproducts

2、停止solr。

>>./solr stop

3、启动后的管理界面。

http://192.168.1.100:8983/solr

4、对实例techproducts重新进行索引。首先需要去到post.jar所在的目录,然后执行提交操作

>> cd example/exampledocs
>> java –Dc=techproducts -jar post.jar *.xml

5、查看SimplePostTool的使用方法

java –jar example/solr/post.jar -help


二、查询:

1、查找cat字段中包含hard drive字符串的文档。注意:一个字段的多个值用+号连接。wt表示返回的数据格式,indent=true表示对返回的字符串进行格式化展示。

http://192.168.1.100:8983/solr/techproducts/select?q=cat:“hard+drive”&wt=json&indent=true

2、查找字段inStock的值为true,并且字段popularity的值大于等于6的文档。注意:多个字段的并查询,需要用AND进行标识,用+号连接,范围过滤用[ ]号。

http://192.168.1.100:8983/solr/techproducts/select?q=+inStock:true+AND+popularity:[6+TO+*]&wt=json&indent=true

3、查询包含ipod字符串的文档,qf表示查询的字段范围,即这三个字段的任何一个字段值包含ipod的文档都会被查询出来。fl表示返回的字段:*表示返回所有字段,score为分数信息。name后面的^3表示:如果name字段值匹配到ipod字符串,则提高对应文档的相关性。

http://192.168.1.100:8983/solr/techproducts/select?q=ipod&defType=edismax&qf=name^3+manu+cat&fl=*,score&wt=json&indent=true


三、schema.xml文档结构:

1、字段定义用到的属性。

name:必须。字段名称

type:必须。字段类型

indexed:表示该字段是否能够被solr索引到

stored:表示该字段值是否能够存储到solr

multiValued:表示该字段是否可以存储多个值

default:字段默认值

required:如果为true,则值不能为空,否则solr将无法索引到

2、动态字段定义:

标签名为dynamicField。

name:name属性的值通常用通配符定义,例如:<dynamicField name="*_dt" type="date" indexed="true" stored="true"/>

sortMissingFirst:表示是否将没有该字段的文档排列在搜索结果的前面。

sortMissingLast:表示是否将没有该字段的文档排列在搜索结果的后面。(如果sortMissingFirst和sortMissingLast都是false,则以什么作为默认排序?)

omitNorms:如果不想让该字段值的长度影响到文档的分数,或者这个字段不会用来作为分数的影响因素的,或者不考虑加快索引时间,那么把值设为true。

omitPositions:设置为true表示忽略位置信息,可以节省一点空间,但该字段将不可以被用来查询。

omitTermFreqAndPositions:设置为true表示忽略频率和位置信息,可以节省一点空间,但该字段将不可以被用来作为分数因子和查询。

termVectors:对于有大量文本信息的字段,此值设置为true可以提高搜索性能,节省搜索时间。这个属性还有两个附带属性:termPositions、termOffsets。

positionIncrementGap:对于multiValued为true的字段,用来限制与之匹配的字符串字数,不符合该字数的字符串将直接忽略掉。

3、用于标识文档唯一性的标签:

<uniqueKey>id</uniqueKey>

4、设置默认的搜索字段和搜索解析器:

<defaultSearchField>text</defaultSearchField>
<solrQueryParser defaultOperator="AND"/>

5、拷贝字段:<copyField source="r_name" dest="r_name_sort" maxChars="20" />

source是一个字段名称,dest也是一个字段名称。表示将一个字段的内容拷贝到另一个字段的值当中。

??什么情况下才使用拷贝字段:

有些场景需要单独的索引值,比如排序,为什么?;

用来将多个字段值拷贝到一个公共的字段里面去,搜索内容时只需在这个公共的字段里面查找从而提高搜索性能,但是分数会有所丢失。

6、定义字段类型:<fieldType name="boolean" class="solr.BoolField" sortMissingLast="true" />

7、字段类型的定义:

TrieIntField:精确度为0,通常展示为int,大部分整形都是采用这种类型。

TrieIntField:精确度大于0,通常展示为tint,在涉及到数字范围查询时,设置为这种类型可以提高查询的性能。

IntField:通常展示为pint,是一个遗留的类型,后续会被移除。用来将数字编码成一个字符串。

SortableIntField:通常展示为sint,后续会被移除。

CurrencyField:货币字段。格式:<fieldType name="currency" class="solr.CurrencyField" precisionStep="8" defaultCurrency="USD" currencyConfig="currency.xml" />

currency.xml为对应的配置文件:包含货币之间的汇率对应关系。

ExternalFileField:用来存储经常变化的字段,它是从纯文本里面去读数据的,而不是从索引里面去读,所以字段值变化时不需要重新进行索引。

EnumField:枚举类型的字段。包含两个属性:enumsConfig,用来配置枚举值;enumName,字段类型的名称。

四、slorconfig.xml文档配置。

multipartUploadLimitInKB:限制上传的最大数据量。

enableRemoteStreaming:是否允许上传远程流数据。

五、数据的提交

1、指定文件路径,进行数据文档的提交:

>>curl http://192.168.1.100:8983/solr/techproducts/update -F stream.file=/home/zhengxiangwen/mydata/ipod_other.xml

2、也可以知道URL地址,进行数据提交:

>>curl http://192.168.1.100:8983/solr/techproducts/update -F stream.url=具体的地址

3、如果文档内容很少,也可以直接指定内容,假如内容是<commit />,注意<commit />前面需要留一个空格:

>>curl http://192.168.1.100:8983/solr/mbartists/update -F stream.body=' <commit />'

4、指定文件的名称,进行数据提交,需在文件所在的目录下执行:

>> curl http://192.168.1.100:8983/solr/mbartists/update -H 'Content-type:text/xml; charset=utf-8' --data-binary @artists.xml

怎么查看提交的数据文档?

数据提交后要重新进行索引吗?

六、数据的删除

1、第一种文档格式,将把下面这些id对应的文档删除

<delete><id>Artist:11604</id><id>Artist:11603</id></delete>

2、第二种文档格式,将把满足条件的文档删除,即timestamp的值在这个范围内的文档。

<delete><query>timestamp:[* TO NOW-12HOUR]</query></delete>

你可能感兴趣的:(solr学习笔记)