2013-08-12 9 views
7

jak każdy zdaje sobie sprawę ze swojej przeszukiwania modelu można zdefiniować indeks Type: text, jak: ciąg znaków, na przykład:Sunspot Szyny różnica pomiędzy: tekst an: pola typu string

class Post < ActiveRecord::Base 
    searchable do 
    string :title 
    text :title, :body  
end 

Próbowałem wyszukiwanie dla podstawowych różnic między typem pola tekstowego a typem pola tekstowego i był w stanie uzyskać podstawowe informacje, takie jak:

  1. Rodzaje pól tekstowych są tokenizowane, co powoduje, że wyszukiwanie w nich pełnego tekstu jest bardzo szybkie.
  2. Nie można użyć polecenia order_by, tj. Sortowania w polu tekstowym, a jeśli potrzebujesz sortowania w tym polu, musisz zdefiniować je jako: string.

Więc co szukam tutaj jest wszystko KONCEPTUALNY jak również ZASTOSOWANIE różnice pomiędzy typem pola tekstowego i pola typu ciąg tak, że mogę ważyć swoje opinie podczas definiowania pól jako ciąg lub tekst lub oba.

Uwaga: Ja nie mówiąc, że podasz wszystkie różnice w jednej odpowiedzi, jedna różnica za odpowiedź i zrobi ale upewnij się, że różnica dajesz nie jest już podana.

+0

można śledzić link https://makandracards.com/makandra/10987-scoping-a-sunspot-solr-search-by-text-using-a- string-field –

+0

przeczytaj ten link przed zadaniem pytania, a moje pytanie zawiera więcej informacji niż ten artykuł :) –

+0

czy możesz wykonać wyszukiwanie "hex decimal" lub "ASCII" w dowolnym z tych pól? –

Odpowiedz

14

Tekst Pola

Kiedy pola tekstowe są indeksowane, są one podzielone na ich słów składowych, a następnie przetwarzane przy użyciu definiowalny zestaw filtrów (z domyślnej instalacji Solr plam jest, są one po prostu niższy obudowane) . Ten proces nazywany jest tokenizacją i umożliwia wyszukiwanie pól tekstowych za pomocą dopasowywania pełnego tekstu. Możesz przeczytać więcej o tokenizacji i dostępnych opcjach filtrowania na wiki Solr http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters.

Pola String

pola String przechowują dane sznurkiem. Czym różni się to od pól tekstowych? Pole tekstowe jest tokenizowane, co oznacza, że ​​jest podzielone na jego słowa składowe; tak działa wyszukiwanie pełnotekstowe. Z drugiej strony pola łańcuchowe są po prostu indeksowane tak jak są: indeksowane dane są dokładnie tym ciągiem, od początku do końca.

Docs

https://github.com/sunspot/sunspot/wiki/Setting-up-classes-for-search-and-indexing

+0

dodałeś nowe rzeczy do mojej istniejącej wiedzy, głosowałem na ciebie, ale poczekam na jakiś czas, aby zaakceptować odpowiedź. –

+1

dzięki, wszystko jasne – Alexis