Tôi đã định cấu hình solr 4.10 (cũng 5.3) với highlighting functionality. Nó hoạt động tốt với hầu hết các từ, tuy nhiên tôi tìm thấy một số từ "không" cho phép đánh dấu, nghĩa là, solr trả về các tài liệu bắt buộc, nhưng không làm nổi bật một số từ.Solr không làm nổi bật một số từ
Điều gì có thể gây ra hiệu ứng như vậy?
solrconfig.xml
<requestHandler name="/select" class="solr.SearchHandler">
<lst name="defaults">
<str name="wt">json</str>
<str name="indent">true</str>
<str name="defType">edismax</str>
<str name="bf">product(concount)</str>
<str name="df">text bio text_syn text_syn_other</str>
<str name="qf">
text^25 bio^16 text_syn^8 text_syn_other^3
</str>
<str name="hl">on</str>
<str name="hl.fl">text bio text_syn text_syn_other</str>
<str name="hl.preserveMulti">true</str>
<str name="hl.encoder">html</str>
<str name="f.text.hl.fragsize">100</str>
<str name="hl.snippets">20</str>
<arr name="components">
<str>highlight</str>
</arr>
</lst>
schema.xml
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\n,/\\]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_abbr.txt" ignoreCase="true" expand="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\n,/\\]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_en_syn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\n,/\\]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\n,/\\]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<fieldType name="text_en_syn_other" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\n,/\\]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_other.txt" ignoreCase="true" expand="false"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.PatternTokenizerFactory" pattern="[\s\n,/\\]" />
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
<field name="text" type="text_en" indexed="true" stored="true" multiValued="false" />
<field name="text_syn" type="text_en_syn" indexed="true" stored="false" multiValued="true" />
<field name="text_syn_other" type="text_en_syn_other" indexed="true" stored="false" multiValued="true" />
<field name="text_exact" type="string" indexed="true" stored="false" multiValued="false" />
<field name="bio" type="text_en" indexed="true" stored="true" multiValued="false" />
<field name="bio_exact" type="string" indexed="true" stored="false" multiValued="false" />
<field name="concount" type="long" indexed="true" stored="true" multiValued="false" />
<field name="concount_exact" type="long" indexed="true" stored="false" multiValued="false" />
<copyField source="text" dest="text_syn"/>
<copyField source="bio" dest="text_syn"/>
<copyField source="text" dest="text_syn_other"/>
<copyField source="bio" dest="text_syn_other"/>
Đối với truy vấn http://localhost:8983/solr/select?q=senior
tôi có tài liệu có chứa từ senior
, nhưng trong phần phản ứng Solr làm nổi bật từ đó là không được đánh dấu.
UPDATE 1: tôi tìm ra rằng tôi có từ senior
trong tập tin synonyms_abbr.txt
của tôi, dòng senior,lead
. Khi tôi nhận xét rằng dòng hoặc thay thế các từ, lead,senior
, đáng ngạc nhiên là từ senior
bắt đầu làm nổi bật. Bất kỳ ý tưởng?
UPDATE 2: Words từ synonyms.txt
và synonyms_other.txt
đang nhận được nhấn mạnh bình thường, nhưng từ từ synonyms_abbr.txt
cư xử lạ lùng như sau. Ví dụ, tôi có dòng lead,head,senior
trong synonyms_abbr.txt
sau đó
- các truy vấn
http://localhost:8983/solr/select?q=senior
vàhttp://localhost:8983/solr/select?q=head
không đánh dấu bất kỳ văn bản, - truy vấn
http://localhost:8983/solr/select?q=lead
nổi bật không chỉ từlead
, mà cònhead
vàsenior
.
Vui lòng sử dụng chức năng phụ trợ của Solr để phân tích việc chuyển đổi từ. Tôi không chắc chắn về cách mà từ đó được biến đổi. Nó có thể là một vấn đề xuất phát. Nếu không, hãy sử dụng một trường khác, tắt các biến đổi chỉ để lại trình mã thông báo, sau đó thử làm nổi bật từ trường đó. – 0xCAFEBABE
@Mher Những từ nào không được đánh dấu từ dừng? Hoặc chỉ ngẫu nhiên? –
Tôi không có bất kỳ cấu hình từ dừng nào. Toàn bộ tệp 'stopwords.txt' được nhận xét. – Mher