2012-06-15 30 views
7

Tôi hiện đang tích hợp Apache Solr tìm kiếm vào nền tảng của mình và sử dụng chức năng Đề xuất để tự động hoàn thành. Tuy nhiên, các mô-đun Suggester không trả lại gợi ý chính tả là tốt, ví dụ như vậy nếu tôi tìm kiếm:Cách nhận đề xuất Solr để trả lại các đề xuất chính tả cũng như

lợi nhuận mô-đun
shi 

Các suggester số những người khác như sau:

shirt 
shirts 

Tuy nhiên, nếu tôi tìm kiếm :

shrt 

Không có đề xuất nào được trả về. Điều tôi muốn biết là:

a) Cấu hình không chính xác của mô-đun Đề xuất đã dẫn đến kết quả này? b) Mô-đun Đề xuất có được xây dựng theo cách không trả lại các đề xuất chính tả không? c) Làm cách nào để tôi có được mô-đun Đề xuất cũng trả lại các đề xuất chính tả mà không phải đưa ra yêu cầu thứ hai về đề xuất sửa lỗi chính tả?

Tôi đã đọc tài liệu Solr nhưng dường như không thể thực hiện được tiến trình với điều này.

Trả lời

7

Bạn cần phải cấu hình thành phần kiểm tra chính tả để tạo tùy chọn đánh vần xen kẽ như đã mô tả ở http://wiki.apache.org/solr/SpellCheckComponent

Nhiệm vụ bao gồm các bước sau đây; - Cập nhật schema.xml để có đề xuất chính tả, như bạn có thể muốn sao chép các trường vào trường mới nói 'chính tả' cho ví dụ:

<copyField source="id" dest="spelling" /> 
<copyField source="name" dest="spelling" /> 
<copyField source="description" dest="spelling" /> 
<copyField source="longdescription" dest="spelling" /> 
<copyField source="category" dest="spelling" /> 
<copyField source="source" dest="spelling" /> 
<copyField source="merchant" dest="spelling" /> 
<copyField source="contact" dest="spelling" /> 
  • Cập nhật solrconfig.xml

<requestHandler name="/select" class="solr.SearchHandler"> <lst name="defaults"> <str name="echoParams">explicit</str> <int name="rows">10</int> <str name="df">defaultSearchField</str> <!-- spell check component configuration --> <str name="spellcheck">true</str> <str name="spellcheck.count">5</str> <str name="spellcheck.collate">true</str> <str name="spellcheck.maxCollationTries">5</str> </lst> <!-- add spell check processing after the default search component as configured above completed it's task --> <arr name="last-components"> <str>spellcheck</str> </arr> </requestHandler>

<searchComponent name="spellcheck" class="solr.SpellCheckComponent"> <lst name="spellchecker"> <!-- decide between dictionary based vs index based spelling suggestion, in most cases it makes sense to use index based spell checker as it only generates terms which are actually present in your search corpus --> <str name="classname">solr.IndexBasedSpellChecker</str> <!-- field to use --> <str name="field">spelling</str> <!-- buildOnCommit|buildOnOptimize --> <str name="buildOnCommit">true</str> <!-- $solr.solr.home/data/spellchecker--> <str name="spellcheckIndexDir">./spellchecker</str> <str name="accuracy">0.7</str> <float name="thresholdTokenFrequency">.0001</float> </lst> </searchComponent>

  • index Re những corpus

  • Đề xuất kiểm tra ví dụ:

    http: //:/Solr/select/q = coachin

    response { "responseHeader":{ "status":0, "QTime":12, "params":{ "indent":"true", "q":"coachin"}}, "response":{"numFound":0,"start":0,"docs":[] }, "spellcheck":{ "suggestions":[ "coachin",{ "numFound":1, "startOffset":0, "endOffset":7, "suggestion":["cochin"]}]}}

Hy vọng rằng sẽ giúp.

+0

Cảm ơn phản hồi của bạn. Trước đây tôi đã sử dụng thành phần kiểm tra chính tả, tuy nhiên nếu kết quả được tìm thấy cho truy vấn tìm kiếm, thành phần kiểm tra chính tả không trả về bất kỳ đề xuất nào, do đó tôi quyết định sử dụng thành phần Đề xuất. Ví dụ: nếu tôi có kết quả cho cụm từ tìm kiếm "trang tính", tôi vẫn muốn thấy đề xuất "trang tính" nếu trường chính tả của tôi chứa khả năng đó. – newbie

+0

Hi Dude .. @Nitin Tripathi cho tôi đến đây làm việc tốt nhưng câu hỏi của tôi là ... xin hãy xem http://stackoverflow.com/questions/22196793/how-get-suggestions-from-solr này -server-in-a-php-biến – Naresh

+0

không hoạt động cho tôi –

Các vấn đề liên quan