Я беспокоюсь о поддержке одного PHP проекта с интегрированным поиском Lucene. Проблема в том, что клиент жалуется, что в производственной среде возвращаются не все результаты поиска.
Я установил этот проект локально, и мне не удалось найти что-либо для поиска. В базе данных есть таблица, которая содержит индексированное содержимое, но когда я пытаюсь найти содержимое, которое на 100% в этой индексной таблице - я получаю 0 результатов. Я подозреваю, что эта проблема может быть связана с производственной проблемой.
В этом проекте нет документации, связанной с поиском lucene, и я не могу найти никакой информации о том, как создать или изменить файл конфигурации индекса.
В этом проекте есть только файл lucene-search.jar, никаких других java файлов.
Каталог / индекс содержит два небольших файла размером 20-30 байтов:
segments.gen
segments_1
Таблица с индексированным содержимым содержит много строк. Я переиндексировал содержимое.
Вот часть кода, которая запускает поиск:
$cmd = "java -jar lucene-search.jar -o search -l " . $lang_rec['id'] . ' -i ' . $lang_rec['iso'] . ' -q ' . escapeshellarg($q) . ' -p ' . floor($offset / $limit) . ' -s ' . $limit . ' -a';
$output = shell_exec($cmd);
Вот созданный журнал:
0 [main] INFO bi.search.lucene.Main - Started at 14.01.2020 08:31:40
3 [main] INFO bi.search.lucene.Main - Path to config file not specified, using default file
935 [main] INFO bi.search.lucene.LuceneIndex - Analyzer for language lv found
949 [main] DEBUG bi.search.lucene.LuceneIndex - Escaped search query: example
980 [main] DEBUG bi.search.lucene.LuceneIndex - Records found: 0
980 [main] DEBUG bi.search.lucene.LuceneIndex - Using highlighting pre-tag:
<span class=\"hightlight\">
980 [main] DEBUG bi.search.lucene.LuceneIndex - Using highlighting post-tag:
</span>
981 [main] DEBUG bi.search.lucene.LuceneIndex - Using highlighting fragment size: 300
983 [main] DEBUG bi.search.lucene.LuceneIndex - Search took: 48
1515 [main] DEBUG bi.search.lucene.Main - Total execution time: 1514
Вот indexing-config . xml содержание:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<tns:config xmlns:tns="http://www.bi.lv/search" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bi.lv/search schema/bi-search.xsd ">
<tns:datasource>
<tns:driverName>com.mysql.jdbc.Driver</tns:driverName>
<tns:jdbcUrl>jdbc:mysql://***.***.***.***/develop_***</tns:jdbcUrl>
<tns:username>********</tns:username>
<tns:password>********</tns:password>
</tns:datasource>
<tns:index>
<tns:folder>index/</tns:folder>
</tns:index>
<tns:content>
<tns:tables>
<tns:languagesMap>
<tns:sql>
select id, iso from site_langs
</tns:sql>
<tns:idColumnName>id</tns:idColumnName>
<tns:isoColumnName>iso</tns:isoColumnName>
</tns:languagesMap>
<tns:table>
<tns:name>search_index</tns:name>
<tns:sql><![CDATA[select * from search_index where lang_id = {LANG_ID}]]></tns:sql>
<tns:columns>
<tns:column>
<tns:name>id</tns:name>
<tns:type>RECORD_ID</tns:type>
</tns:column>
<tns:column>
<tns:name>url</tns:name>
<tns:type>URL</tns:type>
</tns:column>
<tns:column>
<tns:name>content_type</tns:name>
<tns:type>CONTENT_TABLE_NAME</tns:type>
</tns:column>
<tns:column>
<tns:name>title</tns:name>
<tns:type>TITLE</tns:type>
</tns:column>
<tns:column>
<tns:name>contents</tns:name>
<tns:type>CONTENT</tns:type>
</tns:column>
<tns:column>
<tns:name>title</tns:name>
<tns:type>CONTENT</tns:type>
</tns:column>
<tns:column>
<tns:name>orig_content_id</tns:name>
<tns:type>CONTENT_RECORD_ID</tns:type>
</tns:column>
<tns:column>
<tns:name>lang_id</tns:name>
<tns:type>LANGUAGE</tns:type>
</tns:column>
<tns:column>
<tns:name>file_local_paths</tns:name>
<tns:type>FILE_LOCAL_PATH</tns:type>
</tns:column>
<tns:column relatedToColumn="file_local_paths">
<tns:name>file_public_paths</tns:name>
<tns:type>FILE_PUBLIC_PATH</tns:type>
</tns:column>
<tns:column relatedToColumn="file_local_paths">
<tns:name>file_names</tns:name>
<tns:type>FILE_NAME</tns:type>
</tns:column>
</tns:columns>
<tns:langVariableName>{LANG_ID}</tns:langVariableName>
</tns:table>
</tns:tables>
</tns:content>
<tns:resultFormat>
<tns:highlighting enabled="true">
<tns:preTag>
<![CDATA[ <span class=\"hightlight\"> ]]>
</tns:preTag>
<tns:postTag>
<![CDATA[ </span> ]]>
</tns:postTag>
<tns:fragmentSize>300</tns:fragmentSize>
</tns:highlighting>
</tns:resultFormat>
<tns:argsEncoding>UTF8</tns:argsEncoding>
</tns:config>