solr按名字和姓氏搜索

时间:2012-12-04 09:56:45

标签: search solr

我有文本字段,其中包含有关用户商店的信息,包括名字和姓氏。例如:约翰贝尔。当我搜索“John”或“Bell”或“John Bell”时,它可以正常工作 但是当我搜索“贝尔约翰”时 - 搜索结果为0.是否有可能解决这个问题?架构配置:

<field name="content" type="content_ws" indexed="true" stored="true" />

<fieldType name="content_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="query">
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
      </analyzer>
      <analyzer type="index">
    <charFilter class="solr.HTMLStripCharFilterFactory"/>
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
      </analyzer>
    </fieldType>

2 个答案:

答案 0 :(得分:0)

使用DisMax查询解析器并将qs参数设置为大于2的值将帮助您以相反的顺序查找查询。

查询应该是这样的:

http://localhost:8993/solr/select?defType=dismax&q="Bell John"&qs=2

答案 1 :(得分:0)

使用标准查询处理程序,您可以使用proximity参数创建查询。

e.g。 q=content:"Bell John"~2其中2是slop或者令牌的数量。

当你搜索John bell时,单词就位,因此Zero的接近斜率就可以了。创建与搜索相同的单词的位置没有变化。

但是,当查询为Bell John时,创建单词的跃点数为2

e.g。

Bell John - Query data  
Bell - One hop would bring Bell and John at the same position  
John  
John Bell - Second hop would recreate the indexed term. 

因此,对于尊敬的查询,在这种情况下,slop应该至少为2。