我有文本字段,其中包含有关用户商店的信息,包括名字和姓氏。例如:约翰贝尔。当我搜索“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>
答案 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。