2011-11-26 12 views
6

Mam problem podczas wyszukiwania z Solr frazą, która zawiera stopwords. Solr wysyła wyniki z hasłem stop, a to nie jest moje oczekiwane wyjście.Jak zatrzymać wynik w solr, gdy fraza zawiera stopword?

Dodałem słowo "test" w pliku stopwords.txt. W schema.xml plik, mam pole jak

<field name="searchword" type="text" indexed="true" stored="true" /> 

I indeksowany niektóre dane, a następnie starał się szukać w oknie przeglądarki solr następująco: poszukiwane słowo „test” i nie dostać wynik. Potem ponownie podałem wyrażenie takie jak searchword: "dane testowe" i otrzymałem wynik. Jak uniknąć takiego scenariusza? Jeśli zawiera słowo stop, Solr nie powinno dawać rezultatów. Jak zatrzymać wynik w solr, gdy fraza zawiera stopword?

Poniżej znajduje się FieldType Używam:

<fieldType name="text" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="index"> 
     <tokenizer class="solr.StandardTokenizerFactory"/> 
     <filter class="solr.CommonGramsFilterFactory" words="stopwords.txt" ignoreCase="true"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/> 
    </analyzer> 
    <analyzer type="query">   
     <tokenizer class="solr.WhitespaceTokenizerFactory" /> 
     <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/> 
     <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" type="phrase"/> 
    </analyzer> 
</fieldType> 

muszę rozwiązanie dla Solr nie dostarczył żadnego rezultatu podczas gdy daję frazę zawierającą stopword (test)

+1

Czy możesz umieścić swój plik schema.xml? – javanna

Odpowiedz

1

„stop "słowo to słowo, które nie jest brane pod uwagę podczas wyszukiwania; nie jest słowem, które "zatrzymuje się" lub unieważnia wyniki. Tak więc zachowanie, które wyjaśniasz, jest poprawne: tak właśnie powinny się zatrzymywać słowa.

W SOLR nie ma żadnego sposobu, aby "zatrzymać" otrzymywanie wyników za każdym razem, gdy używasz konkretnego słowa (może ktoś ma pomysł?).

Jedyne co mogę myśleć to: - Nie wysłać zapytanie do SOLR kiedy można zaobserwować te hasłami :) - Usunąć terminy z dokumentów przed indeksowania nich (na przykład za pomocą UpdateRequestProcessor) i użyj zapytań ORAZ, w ten sposób, gdy w zapytaniu pojawi się termin niezindeksowany, otrzymasz zero wyników