solr5.5(7)——solr常用词了解

来源:互联网 发布:淘宝店铺装修设计说明 编辑:程序博客网 时间:2024/05/18 13:27

2.  Solr的检索运算符

1. “:” 指定字段查指定值,如返回所有值*:*

2. “?” 表示单个任意字符的通配

3. “*” 表示多个任意字符的通配(不能在检索的项开始使用*或者?符号)

4. “~” 表示模糊检索,如检索拼写类似于”roam”的项这样写:roam~将找到形如foam和roams的单词;roam~0.8,检索返回相似度在0.8以上的记录。

5. 邻近检索,如检索相隔10个单词的”apache”和”jakarta”,”jakarta apache”~10

6. “^” 控制相关度检索,如检索jakarta apache,同时希望去让”jakarta”的相关度更加好,那么在其后加上”^”符号和增量值,即jakarta^4 apache

7. 布尔操作符AND、||

8. 布尔操作符OR、&&

9. 布尔操作符NOT、!、- (排除操作符不能单独与项使用构成查询)

10.“+” 存在操作符,要求符号”+”后的项必须在文档相应的域中存在

11. ( ) 用于构成子查询

12. [] 包含范围检索,如检索某时间段记录,包含头尾,date:[200707 TO 200710]

13. {} 不包含范围检索,如检索某时间段记录,不包含头尾

date:{200707 TO 200710}

  注:范围检索字段只适用于:String,int,dobule,date不能用于long型的字段

14. \ 转义操作符,特殊字符包括+ - && || ! ( ) { } [ ] ^ ” ~ * ? :\

15. dismax中的 mm(例如mm=80%那么,查询的过程中,相似度超过80%的数据才会查出来)

当mm不设置的时候:如果设置boolean 查询逻辑为 AND,则mm = 100% 搜索串被切分后的词语必须都出现,如果查询逻辑为OR,则mm=1  出现搜索串切分后的其中一个词语就可以。

mm:值可以使正正数,负整数,正的百分数,负的百分数。正数表示分析器分词后必须出现的个数,负数表示可以不出现词语的个数。

如mm : -2 表示可以有任意2个词语不出现!



Solr提供了哪些TokenizerFactories?

 

1. solr.LetterTokenizerFactory

  创建org.apache.lucene.analysis.LetterTokenizer.

  分词举例:

  "I can't" ==> "I", "can", "t",字母切词。

 

2. solr.WhitespaceTokenizerFactory

  创建org.apache.lucene.analysis.WhitespaceTokenizer,主要是切除所有空白字符。

 

3. solr.LowerCaseTokenizerFactory

  创建org.apache.lucene.analysis.LowerCaseTokenizer

  分词举例:

 "I can't" ==> "i", "can", "t",主要是大写转小写。

 

4. solr.StandardTokenizerFactory

  创建org.apache.lucene.analysis.standard.StandardTokenizer

  分词举例:  "I.B.M. cat's can't" ==>

ACRONYM: "I.B.M.",APOSTROPHE:"cat's", APOSTROPHE:"can't"

  说明:该分词器,会自动地给每个分词添加type,以便接下来的对type敏感的过滤器进行处理,目前仅仅只有StandardFilter对Token 的类型是敏感的。

 

5. solr.HTMLStripWhitespaceTokenizerFactory

从结果中除去HTML标签,将结果交给WhitespaceTokenizer处理。

例子:

my <ahref="www.foo.bar">link</a>

my link

<?xml?><br>hello<!--comment-->

hello

hello<script><--f('<--internal--></script>'); --></script>

hello

if a<b then print a;

if a<b then print a;

hello <td height=22 nowrapalign="left">

hello

a&lt;b &#65 Alpha&Omega&Omega;

a<b A Alpha&Omega Ω

 

6. solr.HTMLStripStandardTokenizerFactory

从结果中出去HTML标签,将结果交给StandardTokenizer处理。

 

7. solr.PatternTokenizerFactory

说明:按照规则表达式样式对分本进行分词。

例子:处理对象为,mice; kittens; dogs,他们由分号加上一个或多个的空格分隔。

<fieldTypename="semicolonDelimited" class="solr.TextField">

 <analyzer>

    <tokenizer class="solr.PatternTokenizerFactory"pattern="; *" />

 </analyzer>

</fieldType>

 

 

Solr有哪些TokenFilterFactories?

 

1. solr.StandardFilterFactory

创建:org.apache.lucene.analysis.standard.StandardFilter.

移除首字母简写中的点和Token后面的’s。仅仅作用于有类的Token,他们是由StandardTokenizer产生的。

例:StandardTokenizer+ StandardFilter

"I.B.M. cat's can't" ==>"IBM", "cat", "can't"

2. solr.LowerCaseFilterFactory

创建:org.apache.lucene.analysis.LowerCaseFilter.

3. solr.TrimFilterFactory【solr1.2】

创建:org.apache.solr.analysis.TrimFilter

去掉Token两端的空白符

例:

" Kittens!   ", "Duck" ==>"Kittens!", "Duck".

4. solr.StopFilterFactory

创建:org.apache.lucene.analysis.StopFilter

去掉如下的通用词,多为虚词。

  "a", "an", "and", "are","as", "at", "be", "but","by",

   "for", "if", "in", "into","is", "it",

   "no", "not", "of", "on","or", "s", "such",

   "t", "that", "the", "their","then", "there", "these",

   "they", "this", "to", "was","will", "with"

自定义的通用词表的使用可以通过schema.xml文件中的"words"属性来指定,如下。

<fieldtype name="teststop"class="solr.TextField">

  <analyzer>

    <tokenizer class="solr.LowerCaseTokenizerFactory"/>

    <filter class="solr.StopFilterFactory"words="stopwords.txt" ignoreCase="true"/>

  </analyzer>

</fieldtype>

 

5.  solr.KeepWordFilterFactory【solr1.3】

创建:org.apache.solr.analysis.KeepWordFilter

作用与solr.StopFilterFactory相反,保留词的列表也可以通过”word”属性进行指定。

<fieldtype name="testkeep"class="solr.TextField">

  <analyzer>

    <filter class="solr.KeepWordFilterFactory"words="keepwords.txt" ignoreCase="true"/>

  </analyzer>

</fieldtype>

 

6. solr.LengthFilterFactory

创建:solr.LengthFilter

过滤掉长度在某个范围之外的词。范围设定方式见下面。

<fieldtype name="lengthfilt"class="solr.TextField">

 <analyzer>

   <tokenizer class="solr.WhitespaceTokenizerFactory"/>

   <filter class="solr.LengthFilterFactory" min="2"max="5" />

 </analyzer>

</fieldtype>

 

7. solr.PorterStemFilterFactory

创建:org.apache.lucene.analysis.PorterStemFilter

采用Porter Stemming Algorithm算法去掉单词的后缀,例如将复数形式变成单数形式,第三人称动词变成第一人称,现在分词变成一般现在时的动词。

8. solr.EnglishPorterFilterFactory

创建:solr.EnglishPorterFilter

关于句子主干的处理,其中的"protected"指定不允许修改的词的文件。

9. solr.SnowballPorterFilterFactory

关于不同语言的词干处理

10.solr.WordDelimiterFilterFactory

关于分隔符的处理。

11.solr.SynonymFilterFactory

关于同义词的处理。

12.solr.RemoveDuplicatesTokenFilterFactory

避免重复处理。