|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
Zhazhah : 184 Новичок Откуда: Краснодар
|
Янв 06, 2012 23:58 |
|
|
Здравствуйте, в solr делаю такой запрос http://localhost:8080/solr/select/?hl.requireFieldMatch=true&q=java&defType=dismax&qf=title^0.3&hl=true
получаю результаты поиска и результаты поиска с подсветкой отдельно друг от друга.. как это исправить? ведь очень не удобно делать слияние этих результатов
| Код: |
<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">89</int>
<lst name="params">
<str name="hl.requireFieldMatch">true</str>
<str name="q">java пособие</str>
<str name="qf">title^0.3</str>
<str name="hl">true</str>
<str name="defType">dismax</str>
</lst>
</lst>
<result name="response" numFound="1" start="0">
<doc>
<str name="author">Сафонов В.О.</str>
<arr name="cat">
<int>0</int>
<int>1</int>
</arr>
<str name="description"/>
<str name="id">10942</str>
<str name="isbn">5-02-024985-8</str>
<str name="publisher"/>
<str name="title">Введение в Java-технологию: Учебное пособие</str>
</doc>
</result>
<lst name="highlighting">
<lst name="10942">
<arr name="title">
<str>
Введение в <em>Java</em>-технологию: Учебное пособие
</str>
</arr>
</lst>
</lst>
</response> |
|
|
|
|
 |
solr_expert : 16 Новичок
|
Янв 11, 2012 15:33 |
|
|
Используйте solrj api (http://wiki.apache.org/solr/Solrj):
| Код: |
Iterator<SolrDocument> iter = queryResponse.getResults().iterator();
while (iter.hasNext()) {
SolrDocument resultDoc = iter.next();
String content = (String) resultDoc.getFieldValue("content");
String id = (String) resultDoc.getFieldValue("id"); //id is the uniqueKey field
if (queryResponse.getHighlighting().get(id) != null) {
List<String> highlightSnippets = queryResponse.getHighlighting().get(id).get("content");
}
} |
|
|
|
|
 |
Zhazhah : 184 Новичок Откуда: Краснодар
|
Янв 15, 2012 11:16 |
|
|
Спасибо, начал разбираться потихоньку... в /lib своего проекта поместил
commons-codec-1.5.jar
commons-httpclient-3.1.jar
commons-io-1.4.jar
jcl-over-slf4j-1.6.1.jar
slf4j-api-1.6.1.jar
slf4j-jdk14-1.6.4.jar
apache-solr-solrj-3.5.0.jar
в папке с файлами Solr slf4j-jdk14-1.6.4.jar не нашёл, скачал slf4j и от туда его взял..
Пример кода из книги Apache Solr 3.1 Cookbook и то что solr_expert подсказал
| Код: |
public static void main(String[] args) throws MalformedURLException, SolrServerException {
CommonsHttpSolrServer server = new CommonsHttpSolrServer(
"http://localhost:8080/solr");
server.setParser(new XMLResponseParser());
SolrQuery query = new SolrQuery();
query.setQuery("description:java");
query.setStart(0);
query.setRows(15);
query.addHighlightField("description");
QueryResponse response = server.query(query);
SolrDocumentList documents = response.getResults();
Iterator<SolrDocument> itr = documents.iterator();
System.out.println("DOCUMENTS " + documents.getNumFound() + ", ");
while (itr.hasNext()) {
SolrDocument doc = itr.next();
String id = (String) doc.getFieldValue("id");
System.out.println(id + ":" + doc.getFieldValue("title"));
if (response.getHighlighting().get(id) != null) {
List<String> highlightSnippets = response.getHighlighting().get(id).get("description");
System.out.println(highlightSnippets.get(0) + "\n");
}
}
} |
|
|
|
|
 |
Zhazhah : 184 Новичок Откуда: Краснодар
|
Янв 16, 2012 19:26 |
|
|
Только не разобрался как сделать поиск по нескольким полям? например в Lucene я делал так
| Код: |
MultiFieldQueryParser qp = new MultiFieldQueryParser(Version.LUCENE_32,
new String[]{"title", "author", "publisher", "isbn"}, analyzer);
Query query = qp.parse(q); |
|
|
|
|
 |
solr_expert : 16 Новичок
|
Янв 23, 2012 19:54 |
|
|
можно так попробовать:
| Код: |
| SolrQuery query = new SolrQuery("field1:searchstring1 field2:searchstring2"); |
|
|
|
|
 |
solr_expert : 16 Новичок
|
Янв 24, 2012 12:52 |
|
|
Другой способ (более рекомендуемый для высоконагруженных приложений) -- это использовать filter queries:
| Код: |
SolrQuery solrQuery = new SolrQuery().setQuery(query)
.setRows(10)
.setFilterQueries(filterQuery);
|
filter queries хорошо кэшируются в кэше filterCache. |
|
|
|
 |
|
|
Страница 1 из 1
|
Список форумов
-> Веб-серверы и серверы приложений |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|