参考:Solr 05 - Solr Web管理界面的基本使用
1. CoreAdmin - Solr核心
Solr Core的管理界面. 在这里可以添加Solr Core实例(有Bug, 不推荐使用Solr管理界面添加Solr Core).
上面添加core的时候重启就是因为这个
2. Java Properties - Java参数
其中关于jetty,默认自带的一个服务,在java properties
中都可以看到。
同时在指定的jetty.home中,可以看到很多和jetty相关的文件
–
3. Core selector - (重点)——Schema Browser
其中包括 Schema Browser
- 约束信息浏览
在这里可以查看到当前Collection中的所有Field的信息:
是否主键、是否索引、是否分词、是否存储、是否优化等信息, 还能看到具体某个Field的文档直方图, 也就是在倒排索引中出现的次数等信息.
一开始去collection1/conf/schema.xml.bak
这个文件中找了一下,有没有和载入的faq数据集相关的字段的配置,没有找到。
想起当时faq数据加载脚本中还有一个代码
SCHEMA_FILE=`pwd`/faq/schema_format
FAQ_JSON=`pwd`/faq/faq_json
python ${SCRIPT_PATH}/make_json.py $FAQ_FILE $SCHEMA_FILE $FAQ_JSON
随即去build/faq
中,查看schema_format
文件,其中包含以下内容
[
{
"indexed": true,
"stored": true,
"type": "text_multi_lang",
"name": "question"
},
{
"indexed": false,
"stored": true,
"type": "string",
"name": "answer"
}
]
可以看到,对于answer
答案是没有添加索引的,只对question
添加了索引。这是因为只需要快速检索问题(找出和query最匹配的问题),答案就有了,就可以返回了。所以检索question比较重要。
由于没有对answer进行索引,所以在这里schema browser中看不见它的情况
4. Core selector - (重点)——Documents
mask_core中faq数据集的样子(json格式):
{
"answer": "您需要拥有一个百度账号,用来登录百度云,可以点击此处注册百度账户。如您以前拥有百度推广账户,同样可以登录百度云。",
"question": "需要使用什么账号登录?",
"id": "1"
}
-
这里可以直接对Solr中存储的索引文档进行增删改操作.
-
请求处理器中,
/update
表示更新索引: Solr默认根据id(唯一约束)域来更新Document的内容:- 如果根据id值搜索不到id域, 则执行添加操作;
- 如果根据id值搜索到了id域, 则执行更新操作.
-
json格式是用来添加或者更新文档的(直接就是文档的样子),可以看看给的默认示例
-
这里按照默认的faq格式,随便加一个(原先的是16条faq)
{ "answer": "带上口罩吧,狗命要紧", "question": "别人都带口罩,我需要带吗?", "id": "17"}
然后可以查询看看效果,直接试试通过post请求,http://XXXX:8886/anyq?question=需要戴口罩吗?
然后发现,确实这样一条一条的添加,索引确实可以直接更新生效,在结果中体现了这一点。 -
如果需要删除,则需要使用
xml
格式,例如(指定要删除的文档的索引):<delete> <id>17</id> </delete> <commit/>
-
然后去看这个overview,里面就只剩16条了,刚刚加的那个就被删除了
5. Core selector - (重点)——Query
参考:Solr 08 - 在Solr Web管理页面中查询索引数据 (Solr中各类查询参数的使用方法)
例如:
- q: 是query的简写, 指定查询表达式.
: ——表示查询所有, 比如: question:账号, 表示"question"字段中包含"账号".
- fq: 是filter query的简写, 是一个数组, 可以指定多个. 在q的查询结果中, 执行过滤. 前提是: 必须先指定q查询.