我正在使用lucene进行索引并使用solr进行搜索并具有以下要求
示例:“测试五”
请找到我的架构
<field name="name" type="text_general" indexed="true" stored="true"/>
<field name="acSearch" type="searchFieldType" required="false" indexed="true" stored="false" multiValued="true" />
<copyField source="name" dest="acSearch" />
<fieldType name="searchFieldType" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[,]+" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="1" maxGramSize="25" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[,]+" />
<filter class="solr.LowerCaseFilterFactory" />
</analyzer></fieldType>
solrconfig.xml中
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="wt">json</str>
<str name="indent">true</str>
<str name="fl">name</str>
<str name="rows">200</str>
<str name="df">dySearch</str>
<str name="sort">score desc</str>
</lst>
<arr name="components">
<str>query</str>
</arr>
如果我搜索
,我没有得到正确的解决方案1.Test Five作为回应测试五是第一个接下来不是从左到右任何顺序数据即将到来
请帮助你......
答案 0 :(得分:1)
在构建查询字符串时,您可以对每个术语进行不同的提升:
q=Test^10 Five^3 last^1
有了这个,你不需要弄乱ngram等,只使用一些标准的分析器