5

Mam lokalną wyszukiwarkę, która jest wspierana przez elasticsearch i cienki interfejs API nodejs dla wyszukiwania. Chcę móc wyszukiwać te dokumenty bezpośrednio w Google Chrome (kompilacje dostępne w Google, a nie w Chromium). W tym przypadku użyję Chrome TYLKO z tą wyszukiwarką, więc nie chcę używać interfejsu API wyszukiwania słów kluczowych OmniBox. Chcę takie samo zachowanie, jakie mam przy wyborze domyślnej wyszukiwarki w chrome. Który jestDodaj adres URL sugestii do niestandardowej wyszukiwarki w chrome

  1. Zacznij pisać na OmniBox i pokazuje listę sugestii.
  2. nacisnąć enter i trwa do strony z wynikami wyszukiwania

Dostałem pracę nr 2 poprzez dodanie nowego wyszukiwarkę pod ustawień i dostarczenie adresu URL wyszukiwania w API. Nie mogę wykonać pracy nr 1.

Oba adresy wystawione przez mojego serwera to:

  1. http://localhost:3000/complete?query=my (to zwraca listę sugestii wyszukiwania, które chcę pokazać podczas pisania w omniboksie).

  2. http://localhost:3000/results?query=my+sample+query (to zwraca rzeczywiste wyniki wyszukiwania ukazywały się na stronie internetowej, to działa)

Rzeczy, które próbowałem:

  1. Dodany Wyszukiwarka wykorzystujące window.externals. AddSearchProvider z linkiem OpenSearchDescription.xml. Kod XML zawiera także sugestie.

  2. Próbował pisać rozszerzenie tła z omniboksem ale nie pozwala mi szukać bez użycia słowa kluczowego

I przeszukał chromu i znaleźć ten plik JSON

https://code.google.com/p/chromium/codesearch#chromium/src/components/search_engines/prepopulated_engines.json&q=prepopulated&sq=package:chromium&l=1

Ale Nie wiem, jak mogę z niego korzystać (lub, jeśli to możliwe, nawet w oficjalnych wersjach Chrome).

Odpowiedz

0

Jest Setting Overrides mechanizm Chrome Extensions, która nie jest powszechnie znane, co można osiągnąć to, co chcesz, ale:

  • Przynajmniej według docs, to działa tylko na Windows .
  • Nie możesz opublikować rozszerzenia, chyba że możesz zweryfikować witrynę w Narzędziach dla webmasterów. W przeciwnym razie utkniesz z rozpakowanymi instalacjami.
+0

Dzięki! Nie wiem, dlaczego nie mogą go mieć na Macu. – suparngp

+0

Jeśli chcesz czystej spekulacji: została napisana w momencie, gdy miało miejsce atakowanie szkodliwego oprogramowania Windows (i wprowadzono Preferencje bezpieczne), więc było to obejście dla uzasadnionych przypadków użycia. – Xan

+0

Ahaa! To wydaje się prawdopodobne. Zobacz moją odpowiedź na jedno rozwiązanie. – suparngp

3

W końcu znalazłem rozwiązanie.

Odwołanie do dokumentu może być używane jako łącze w sekcji head strony HTML. Zawiera dwa schematy URL, jeden dla wyników wyszukiwania i inne dla sugestii.

Szczegóły można znaleźć tutaj: Opensearch Document Specs.

Gdy tylko zaktualizowałem mój index.html i otworzyłem stronę w Chrome, Chrome automatycznie dodała nową wyszukiwarkę. Nie pokazało to, że istnieje URL sugestii pod pozycjami Ustawienia> Zarządzaj wyszukiwarkami.

Następnie wybrałem mój silnik jako domyślną wyszukiwarkę, klikając na Ustaw jako domyślną i gotowe! Teraz widzę wszystkie sugestie wyszukiwania w omniboksie bez użycia słowa kluczowego.

+0

To jest naprawdę przydatne find – Xan

+0

Uruchomiłem Charlesa Proxy i zauważyłem, że za każdym razem, gdy coś piszę, jest wywołanie API, więc jest gdzieś ustawienie URL sugestii dla każdej wyszukiwarki. Znalazłem to szczególne rozwiązanie przypadkowo, gdy sprawdzałem, jak działa strona DuckDuckGo, gdy jest napisane. Kliknij tutaj, aby zainstalować DDG na chrome. Wywołują window.external.AddSearchProvider ("link do opensearch.xml dla ddg). I gotowe. Dostałem ten plik xml jako odniesienie, edytowałem go przy pomocy moich informacji o serwerze i działało. – suparngp

Powiązane problemy