當我發出一個查詢Solr的 - 使用兩個或多個單詞的搜索只用第一個字的得分
q=fulltext:marina zadar
的Solr只使用單詞「碼頭」來計算文檔得分。如果我禁用了索引詞的頻率和位置,那麼對於包含僅包含單詞「marina」的文檔和文檔的文檔,分數都是相同的。
這是當我使用下面
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">100</int>
<str name="df">title</str>
</lst>
</requestHandler>
請求處理。當我定義另一個請求處理程序,
<requestHandler name="/full" class="solr.SearchHandler">
<lst name="defaults">
<str name="echoParams">explicit</str>
<int name="rows">100</int>
<str name="df">fulltext</str>
</lst>
</requestHandler>
併發出查詢到處理程序
q=marina zadar
所有正常工作 - 包含兩個搜索詞的文檔得分高於預期。
爲什麼查詢q=fulltext:marina zadar
使用/select
處理程序評分文檔與其他示例不同?
這裏是我的schma.xml
<schema name="example" version="1.5">
<fields>
<field name="_version_" type="long" indexed="true" stored="true"/>
<field name="id" type="long" indexed="true" stored="true" required="true" />
<field name="name" type="string" indexed="true" stored="true" />
<field name="subName" type="string" indexed="false" stored="true" />
<field name="nearName" type="string" indexed="false" stored="true" />
<field name="countryName" type="string" indexed="false" stored="true" />
<field name="title" type="text_general_edge_ngram" indexed="true" stored="false" multiValued="true" />
<field name="fulltext" type="text_general" indexed="true" stored="true" />
</fields>
<uniqueKey>id</uniqueKey>
<copyField source="name" dest="title" />
<copyField source="subName" dest="title" />
<!--<similarity class="com.pocketsail.solr.DescriptionSimilarity" />-->
<types>
<fieldType name="string" class="solr.StrField" sortMissingLast="true" />
<fieldType name="long" class="solr.TrieLongField" precisionStep="0" positionIncrementGap="0"/>
<fieldType name="text_general_edge_ngram" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="15" side="front"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.LowerCaseTokenizerFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_general" class="solr.TextField" positionIncrementGap="100" omitNorms="true" omitTermFreqAndPositions="true">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory"/>
</analyzer>
</fieldType>
</types>
</schema>
如果您想搜索AND https://programinghacksandtricks.blogspot.in/2018/01/multiple-word-search-in-solr.html –