小编Ani*_*nti的帖子

使用NGrams使用Solr自动完成搜索

我正在使用EdgeNGrams 与Solr进行自动完成搜索.如果用户正在搜索员工的姓名,则应该应用自动完成.也就是说,我希望结果就像Google搜索一样.它适用于某些搜索.

档案schema.xml:

<fieldType name="edgytext" class="solr.TextField" positionIncrementGap="100" omitNorms="true">
    <analyzer type="index">
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
    </analyzer>
    <analyzer type="query">
        <tokenizer class="solr.KeywordTokenizerFactory" />
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="15" side="front" />
    </analyzer>
Run Code Online (Sandbox Code Playgroud)

<field name="title" type="edgytext" indexed="true" stored="true" omitNorms="true" omitTermFreqAndPositions="true"/>
<field name="empname" type="edgytext" indexed="true" stored="true" omitNorms="true" omitTermFreqAndPositions="true" />

<field name="autocomplete_text" type="edgytext" indexed="true" stored="false"  multiValued="true" omitNorms="true" omitTermFreqAndPositions="false" />
<copyField source="empname" dest="autocomplete_text"/>

<copyField source="title" dest="autocomplete_text"/>
Run Code Online (Sandbox Code Playgroud)
 http://local:8080/test/suggest/?q=michael
Run Code Online (Sandbox Code Playgroud)

结果:

<?xml version="1.0" encoding="UTF-8" ?>
<response>
    <lst name="responseHeader">
        <int name="status">0</int>
        <int …
Run Code Online (Sandbox Code Playgroud)

solr autocomplete n-gram

4
推荐指数
1
解决办法
6798
查看次数

特殊字符( - &+等)在SOLR查询中不起作用

我正在使用"text_general"fieldType在SOLR中进行搜索.在搜索特殊字符时,我没有得到正确的结果并且出错.我想使用这样的特殊字符:

  1. -
  2. &
  3. +

询问

  1. solr?q=Healing - Live

  2. solr?q=Healing & Live

错误信息

客户端发送的请求在语法上是不正确的(org.apache.lucene.queryParser.ParseException:无法解析'("Healing \':第1行第8列的Lexical错误.遇到:after:"\"Healing \").

schema.xml中

<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>               
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.ASCIIFoldingFilterFactory" />
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" enablePositionIncrements="true" />
    <filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.ASCIIFoldingFilterFactory" />
    <filter class="solr.LowerCaseFilterFactory"/>
  </analyzer>
</fieldType>


<field name="title" type="text_general" indexed="true" stored="true" />

<field name="text" type="text_general" indexed="true" stored="false" multiValued="true"/>

<defaultSearchField>text</defaultSearchField>

<copyField source="title" dest="text"/>
Run Code Online (Sandbox Code Playgroud)

solr

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

solr ×2

autocomplete ×1

n-gram ×1