solr学习ITeye - 威尼斯人

solr学习ITeye

2019-01-11 12:06:14 | 作者: 智伟 | 标签: 分词,准确,可是 | 浏览: 2990

记载两个问题:
(1)在装备分词的场景中,怎么让准确查询的排在前面,含糊查询的排在后边,这个需求算是比较常见的,但假如你是在数据库中,那么就十分简单了,where xxx=xxx 出来便是准确匹配的,可是在Lucene或许Solr中,反到有点怪异了,其实也不算问题,假如了解的Lucene的评分机制,了解起来则会很简单,在Lucene中90%的情况下,都是准确匹配的排在上面,可是还有10%的几率会导致,准确匹配的不会排在第一位,可是肯定是在top10里边的,尽管差错很小,但让用户和测验人员就很不了解,在这里就不解说了,准确匹配没排在top1的确有点说不过去,关于详细的原因,请检查散仙的前一篇文章,
http://qindongliang.iteye.com/blog/2218352

下面谈谈,怎么处理:
其实仍是采用了,最遍及的用法,索引两个字段,一个分词,一个不分词,可是他们都索引了,在查询时,一起查询这两个字段,分词的字段:含糊查,不分词的字段:准确查,这样以来既能确保,召全率,也能确保查准率,能够说是一种不错的计划。

当然假如咱们能从分词器下手,直接在分词的时分,就保存一份原始的数据,作为索引,这样以来的确也能够,可是中文的分词器,都是根据词典切分的,都是以最小的单元的作为token的,而不是一整个token,所以,只能强制的把过来的token,作为一整个term存储一次,这样做其实跟加一个字段,没啥差异,所以详细场景,详细对待。

(2)关于Solr的String类型的Field一个问题,String字段,是一个不会分词的字段,可是能够索引和被查找,可是实际情况有点惊讶,假如一个词组里边包括()()这样的小括号,查找时分,准确匹配就会出现问题,由于索引里边这个小括号,无论是中文的括号,仍是英文的,都会被转义成其他的编码,现在为止只发现这一个符号,会被改动,其他的大括号,中括号,现在还没发现,被改动,所以,在索引时分,最好把特别字符,给过滤掉,怎么在Solr里装备:
 

版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表威尼斯人立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章