我需要微調我的搜索相關性和權重爲返回的結果是:Solr的搜索相關性增強和BF加權不與內容合作^ 1
不搜索
標題搜索相關不返回匹配列表,以請求處理程序的頂部
Solr的配置片斷:
個<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="defType">edismax</str>
<str name="echoParams">explicit</str>
<int name="rows">10</int>
<str name="df">text</str>
<str name="q.alt">*:*</str>
<str name="q.op">AND</str>
<str name="qf">title^15.0 description^9.0 categoryNames^3.0 authorName^1.0 content^1.0</str>
<str name="boost">scoreA</str>
</lst>
<lst name="appends">
<str name="fq">private:false</str>
<str name="fq">deleted:false</str>
<str name="fq">draft:false</str>
</lst>
Solr的模式片段:
<field name="content" type="text_en_splitting" indexed="true" stored="true" multiValued="true"/>
<field name="id" type="string" indexed="true" stored="true" required="true" multiValued="false"/>
<field name="type" type="string" indexed="true" stored="true"/>
<field name="title" type="text_en_splitting" indexed="true" stored="true"/>
<field name="description" type="text_en_splitting" indexed="true" stored="true"/>
<field name="url" type="string" indexed="false" stored="true"/>
<field name="authorId" type="long" indexed="true" stored="true"/>
<field name="authorName" type="text_en" indexed="true" stored="true"/>
<copyField source="title" dest="text"/>
<copyField source="description" dest="text"/>
<copyField source="content" dest="text"/>
<fieldType name="text_en_splitting" class="solr.TextField" positionIncrementGap="100" autoGeneratePhraseQueries="true">
<analyzer type="index">
<charFilter class="solr.HTMLStripCharFilterFactory"/>
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_en.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0" splitOnCaseChange="1"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
twigkit搜索查詢:
<search:query var="query" type="all" parameters="*" resultsPerPage="18" sorts="-scoreA" fields="id,url,price,title,description,recommended,modifiedDate,downloadCount:field(downloadCount),ratingAverage:field(ratingAverage),ratingCount:field(ratingCount),scoreA:field(scoreA),scoreB:field(scoreB),viewCount:field(viewCount),authorName,authorId,content,categoryNames">
</search:query>
<search:response var="response" platform="${platform}" query="${query}"></search:response>
我發現至今: 如果我刪除從Solr的 QF PARAMS內容^ 1點的權重,然後按相關搜索和標題搜索完美的作品。獲得預期的結果。
但是,如果我保留內容^ 1加權在Solr qf然後它都出錯了。
問題可能與此有關,但不能確定:
在Solr模式,我有內容類型:
type="text_en_splitting"
此字段類型有此過濾器適用於:
<filter class="solr.PorterStemFilterFactory"/>
在帶有索引和查詢值的solr控制檯中運行分析儀時: 第一次世界大戰完成單元
我可以看到當它到達上述過濾器時,該值爲:
first world war complet unit
在「E」被從「完整的」字刪去。
下面是Solr的響應的片段時, '內容^ 1' 是QF:
"responseHeader": {
"status": 0,
"QTime": 187,
"params": {
"lowercaseOperators": "true",
"spellcheck": "true",
"facet": "true",
"sort": "scoreA desc",
"indent": "true",
"qf": "title^15.0 description^9.0 categoryNames^3.0 authorName^1.0 content^1",
"spellcheck.collate": "true",
"wt": [
"json",
"javabin"
],
"hl": "true",
"version": "2",
"defType": "edismax",
"rows": "18",
"fl": "id,url,price,title,description,recommended,modifiedDate,downloadCount:field(downloadCount),ratingAverage:field(ratingAverage),ratingCount:field(ratingCount),scoreA:field(scoreA),scoreB:field(scoreB),viewCount:field(viewCount),authorName,authorId,content,categoryNames,score",
"start": "0",
"q": "world wars",
"q.op": "AND",
"_": "1429801074587",
"facet.field": [
"categories",
"categoryRoot",
"resourceTypes",
"fileTypes",
"recommended",
"licence"
],
"stopwords": "true"
}
進一步的調查結果:
當查詢 '世界大戰' 搜索, 「戰爭」這個詞的重量正在加重,因爲它在前幾個列表附件中發現了很多次。如果單詞「戰爭」單獨發現或作爲另一個詞的一部分發現,似乎分數會得到提升。例如,'戰爭'和'小心'。
我只是需要內容分數來提高當'戰爭'被發現作爲一個整體單詞,並沒有做任何事情,如果發現換句話說。希望這是有道理的。
你爲什麼需要這個權重? – Mysterion
如果沒有其他匹配(標題,說明等),但從我的搜索查詢中查找附件「內容」中的某些內容,則應在搜索中返回高位。 – user3554072
當你談論刪除'content^1'加權時,你的意思是你完全從'qf'中取出'content'字段,還是隻是取下'^ 1'?你可能還想添加更多的細節,當你說它的時候你的意思是**「完美地工作」**而沒有加權,但是**「它全部出錯」**。出了什麼問題?您是否收到錯誤消息,或者您的相關訂單無法正常工作? – frances