1

我有关于用户存储信息的文本字段,包括名字和姓氏。例如:约翰·贝尔。当我搜索“John”或“Bell”或“John Bell”时,它可以正常工作。
但是当我通过“Bell John”搜索时 - 搜索结果为 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>
4

2 回答 2

0

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

查询应该是这样的:

http://localhost:8993/solr/select?defType=dismax&q="Bell John"&qs=2
于 2012-12-04T13:19:33.947 回答
0

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

例如q=content:"Bell John"~2,其中 2 是斜率或分开的令牌数。

当您搜索 John bell 时,单词就在位置上,因此零的接近斜率起作用。创建与搜索相同的单词的位置没有变化。

但是,当查询是Bell John创建单词的跳数是2

例如

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. 

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

于 2012-12-04T18:19:43.357 回答