首页 » 网站推广 » phpsolr中文技巧_Solr搜索引擎查询敕令和两种中文分词运用

phpsolr中文技巧_Solr搜索引擎查询敕令和两种中文分词运用

访客 2024-11-25 0

扫一扫用手机浏览

文章目录 [+]

已经和mysql建立好了关联,可以查询和更新mysql的数据量,接下来便是进阶的利用办法了

附上:

phpsolr中文技巧_Solr搜索引擎查询敕令和两种中文分词运用

喵了个咪的博客:http://w-blog.cn

phpsolr中文技巧_Solr搜索引擎查询敕令和两种中文分词运用
(图片来自网络侵删)

Solr官网:http://lucene.apache.org/solr/

PS:8.0.0版本已经发布,本文利用此时较为稳定的7.7.1版本

一,查询命令的基本利用

基本查询办法

  q 查询的关键字,此参数最为主要,例如,q=id:1,默认为q=:,  fl 指定返回哪些字段,用逗号或空格分隔,把稳:字段区分大小写,例如,fl= id,title,sort  start 返回结果的第几条记录开始,一样平常分页用,默认0开始  rows 指定返回结果最多有多少条记录,默认值为 10,合营start实现分页  sort 排序办法,例如id desc 表示按照 “id” 降序  wt (writer type)指定输出格式,有 xml, json, php等  fq (filter query)过虑查询,供应一个可选的筛选器查询。
返回在q查询符合结果中同时符合的fq条件的查询结果,例如:q=id:1&fq=sort:[1 TO 5],找关键字id为1 的,并且sort是1到5之间的。
  df 默认的查询字段,一样平常默认指定。
  qt (query type)指定那个类型来处理查询要求,一样平常不用指定,默认是standard。
  indent 返回的结果是否缩进,默认关闭,用 indent=true|on 开启,一样平常调试json,php,phps,ruby输出才有必要用这个参数。
  version 查询语法的版本,建议不该用它,由做事器指定默认值。

检索运算符

  “:” 指定字段查指定值,如返回所有值:  “?” 表示单个任意字符的通配  “” 表示多个任意字符的通配(不能在检索的项开始利用或者?符号)  “~” 表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。
  AND、|| 布尔操作符  OR、&& 布尔操作符  NOT、!、-(打消操作符不能单独与项利用构成查询)  “+” 存在操作符,哀求符号”+”后的项必须在文档相应的域中存在²  ( ) 用于构成子查询  [] 包含范围检索,如检索某韶光段记录,包含头尾,date:[201507 TO 201510]  {} 不包含范围检索,如检索某韶光段记录,不包含头尾date:{201507 TO 201510}

二、IK中文分词

下载版本匹配的IK分词jar包

> cd server/solr-webapp/webapp/WEB-INF/lib> wget https://search.maven.org/remotecontent?filepath=com/github/magese/ik-analyzer/7.7.1/ik-analyzer-7.7.1.jar -O ./ik-analyzer-7.7.1.jar > wget https://search.maven.org/remotecontent?filepath=com/github/magese/ik-analyzer-solr7/7.x/ik-analyzer-solr7-7.x.jar -O ./ik-analyzer-solr7-7.x.jar

定义fieldType对应IK分词

> vim server/solr/new_core/conf/managed-schema<!-- 257行ik分词器 --><fieldType name="text_ik" class="solr.TextField"> <analyzer type="index"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/> <filter class="solr.LowerCaseFilterFactory"/> </analyzer></fieldType>

修正app_name 的 field类型

<field name="appName" type="text_ik" indexed="true" stored="true" />

然后重启solr

> solr restart -force

分词效果

这个时候去查询数据还是无法实现分词查询,须要重新初始化数据

查询时候就有分词的效果了

三、Solr自带中文分词

自带中文分词

> cp contrib/analysis-extras/lucene-libs/lucene-analyzers-smartcn-7.7.1.jar server/solr-webapp/webapp/WEB-INF/lib

配置自带分词fieldType

> vim server/solr/new_core/conf/managed-schema<!-- 自带分词器 --><fieldType name="text_hmm_chinese" class="solr.TextField" positionIncrementGap="100"> <analyzer type="index"> <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> </analyzer> <analyzer type="query"> <tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/> </analyzer></fieldType>

自带分词效果(比拟IK的词汇量是比自带的多的还支持扩展词汇)

相关文章

php常量率低技巧_PHP 常量详解教程

PHP 常量常量是单个值的标识符(名称)。在脚本中无法改变该值。有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号)。注释...

网站推广 2024-12-19 阅读1 评论0