0、启动solr,打开
0.1
配置techproducts 实例。
首先进入目录中
cd solr-6.3.0
bin/start -e techproducts
实际中我自己的电脑没有成功,但是小组的作业中通过使用8080端口
-p8080
可以实现。进入后的界面就是如下
yyq@iZwz99gkz6jxne43hwkdu0Z:/usr/local/solr-6.5.1$ bin/solr start -e techproducts - p 8080
Solr home directory /usr/local/solr-6.5.1/example/techproducts/solr already exists.
这里是启动
Starting up Solr on port 8080 using command:
bin/solr start -p 8080 -s "example/techproducts/solr"
Waiting up to 180 seconds to see Solr running on port 8080 [\]
Started Solr server on port 8080 (pid=8731). Happy searching!
Copying configuration to new core instance directory:
/usr/local/solr-6.5.1/example/techproducts/solr/techproducts
这里是新建一个directory目录
Creating new core 'techproducts' using command:
http://localhost:8080/solr/admin/cores? action=CREATE&name=techproducts&instanceDir=techproducts
{
"responseHeader":{
"status":0,
"QTime":4322},
"core":"techproducts"}
核心的名字就是techproducts
下面是构建如下的一个索引
Indexing tech product example docs from /usr/local/solr-6.5.1/example/exampledocs
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8080/solr/techproducts/update using content-type application/xml...
POSTing file vidcard.xml to [base]
POSTing file solr.xml to [base]
POSTing file monitor.xml to [base]
POSTing file mp500.xml to [base]
POSTing file mem.xml to [base]
POSTing file ipod_other.xml to [base]
POSTing file ipod_video.xml to [base]
POSTing file manufacturers.xml to [base]
POSTing file utf8-example.xml to [base]
POSTing file monitor2.xml to [base]
POSTing file gb18030-example.xml to [base]
POSTing file money.xml to [base]
POSTing file sd500.xml to [base]
POSTing file hd.xml to [base]
14 files indexed.
COMMITting Solr index changes to http://localhost:8080/solr/techproducts/update...
Time spent: 0:00:01.255
Solr techproducts example launched successfully. Direct your Web browser to http://localhost:8080/solr to visit the Solr Admin UI
以上将example/exampledocs中的xml文件post变为索引
已上就是启动之后ssh中的反馈结果。
1、理解索引
1.1 定位 techproducts 内核所在的文件目录,分析 内核所在的文件目录,分析 techproducts内核的目录结构 。
首先要进入文件夹的位置
cd usr/local/solr-6.5.1
然后使用tree命令可得当前的文件夹的结构
├── solr.xml
├── techproducts
│ ├── conf
│ │ ├── admin-extra.html
│ │ ├── admin-extra.menu-bottom.html
│ │ ├── admin-extra.menu-top.html
│ │ ├── clustering
│ │ ├── currency.xml
│ │ ├── elevate.xml
│ │ ├── lang
│ │ ├── managed-schema
│ │ ├── mapping-FoldToASCII.txt
│ │ ├── mapping-ISOLatin1Accent.txt
│ │ ├── params.json
│ │ ├── protwords.txt
│ │ ├── _rest_managed.json
│ │ ├── _schema_analysis_stopwords_english.json
│ │ ├── _schema_analysis_synonyms_english.json
│ │ ├── solrconfig.xml
│ │ ├── spellings.txt
│ │ ├── stopwords.txt
│ │ ├── synonyms.txt
│ │ ├── update-script.js
│ │ ├── velocity
│ │ └── xslt
│ ├── core.properties
│ └── data
│ ├── index
│ ├── snapshot_metadata
│ └── tlog
└── zoo.cfg
分析可得
有两大文件夹conf与data构成
conf中主要是一些xml文件以及schema文件
data中包含了索引文件
1.2 定位 techproducts索引数据的文件位置
打开index后发现里面有很多格式各异的文件
dvm 。特定。发短信。地等等等等。这些文件构成了index
1.3 下载索引数据到本地熟悉 Solr/ Lucene 索引 相关 的多文件结构
下载了相关的索引文件到本地
├── _0.dii
├── _0.dim
├── _0.fdt
├── _0.fdx
├── _0.fnm
├── _0_Lucene50_0.doc
├── _0_Lucene50_0.pay
├── _0_Lucene50_0.pos
├── _0_Lucene50_0.tim
├── _0_Lucene50_0.tip
├── _0_Lucene54_0.dvd
├── _0_Lucene54_0.dvm
├── _0.nvd
├── _0.nvm
├── _0.si
├── _0.tvd
├── _0.tvx
├── segments_2
└── write.lock
使用luke查看数据
luke可以做到以下内容
1、简单的查看,一共有32个的document,25个field。992个terms
overview是用来进行索引的一般性查看和操作的,比如索引目名,索引文件版本等为lucence5.3。
2、search,可以通过搜索已有的内容。来找到自己要的内容。例如
name = book
name=ipod
等等
第一条的得分为0.323分是三个里面最高的一个。说明相关度最高
1.5了解schema的作用###
schema.xml文件现在已经变成了manage—schema文件
这个文件现在在solr里面来说他不希望认为的修改。这是一个配置文件,在里面可以定义加入索引的数据类型等等信息。现在我们仍可以手动添加。
1.5.1定位
manage-schema文件位于conf中
1.5.2分析构成
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="pre" type="preanalyzed" indexed="true" stored="true"/>
<field name="sku" type="text_en_splitting_tight" indexed="true" stored="true" omitNorms="true"/>
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="manu" type="text_general" indexed="true" stored="true" omitNorms="true"/>
<field name="cat" type="string" indexed="true" stored="true" multiValued="true"/>
<field name="features" type="text_general" indexed="true" stored="true" multiValued="true"/>
<field name="includes" type="text_general" indexed="true" stored="true" termVectors="true" termPositions="true" termOffsets="true" />
<field name="weight" type="pfloat" indexed="true" stored="true"/>
<field name="price" type="pfloat" indexed="true" stored="true"/>
<field name="popularity" type="pint" indexed="true" stored="true" />
<field name="inStock" type="boolean" indexed="true" stored="true" />
<field name="store" type="location" indexed="true" stored="true"/>
里面类似这类文件定义了索引名字以及是否为索引
2、掌握query查询构造####
在这部分里面我直接运用图片的形式来展示,通过直接在admin中query左边区域中构建查询表达。结果在右边显示。当然,如果乐意的话(不嫌麻烦)也可以在url中进行查询。
1、进行构建:成功
2、进行构建:success
3、在admin中进行构建:success
4、这里要用到高亮的语句
进行构建:勾选高亮选项。
5、分类查找
http://120.76.144.46:8080/solr/techproducts/select?q=cat:(price:[0 TO 300] & price:[300 TO 600]& price:[600 TO 900])&fl=id,name,price
但有点小问题。有时间再回来吧
6、找出电子产品多少有货无货
找出电子产品
直接在admin中构建
在这里我们可以看到nomfound=8 说明有八个有货
在这里我们可以看到nomfound=4 说明有4个无货
3、movie###
首先先要找到film在哪儿呢
在example中有,为了避免在小组中与其他人的创建重复
我选择在自己的云服务器上进行创建
首先呢我们先查看films里面的xml以及json文件
这里就不赘述了
正式开始
cd solr-6.3.0
然后
bin/solr create -c movie -force
居然出错了,然后想起来范老师把我的solr 关闭了
打开solr
bin/solr start -force
再来就成功了
bin/post -c movie example/films/films.json
然后就有了。
建立索引成功,可以找到索引文件
3.6.1查找super hero
然后就找到咯
3.6.3自己编一个查询
查一查喜欢剧片
4、创建自己的内核,基于乐博的##
过程我就不再赘述了
然后建立索引
这个是说明我们可以查询了
4.5构建自定义查询####
我们搜索了
名字中含有 唐 这个字的模糊检索,文物等级是二级的文物。